home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / adav313.zip / gnat-3_13p-os2-bin-20010916.zip / emx / gnatlib / config.h < prev    next >
C/C++ Source or Header  |  2001-08-05  |  53KB  |  2,936 lines

  1. # 1 "../config.h"
  2. # 1 "..\\auto-config.h" 1
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9.  
  10.  
  11.  
  12.  
  13.  
  14.  
  15.  
  16.  
  17.  
  18.  
  19.  
  20.  
  21. #define NEED_DECLARATION_INDEX 1
  22.  
  23.  
  24. #define NEED_DECLARATION_RINDEX 1
  25.  
  26.  
  27.  
  28.  
  29.  
  30.  
  31.  
  32.  
  33. #define STDC_HEADERS 1
  34.  
  35.  
  36.  
  37.  
  38.  
  39. #define TIME_WITH_SYS_TIME 1
  40.  
  41.  
  42. #define HAVE_BCMP 1
  43.  
  44.  
  45. #define HAVE_BCOPY 1
  46.  
  47.  
  48. #define HAVE_BZERO 1
  49.  
  50.  
  51.  
  52.  
  53.  
  54. #define HAVE_INDEX 1
  55.  
  56.  
  57. #define HAVE_KILL 1
  58.  
  59.  
  60. #define HAVE_POPEN 1
  61.  
  62.  
  63. #define HAVE_PUTENV 1
  64.  
  65.  
  66. #define HAVE_RINDEX 1
  67.  
  68.  
  69.  
  70.  
  71.  
  72. #define HAVE_STRERROR 1
  73.  
  74.  
  75. #define HAVE_SYSCONF 1
  76.  
  77.  
  78. #define HAVE_VPRINTF 1
  79.  
  80.  
  81. #define HAVE_FCNTL_H 1
  82.  
  83.  
  84. #define HAVE_LIMITS_H 1
  85.  
  86.  
  87. #define HAVE_STDDEF_H 1
  88.  
  89.  
  90. #define HAVE_STDLIB_H 1
  91.  
  92.  
  93. #define HAVE_STRING_H 1
  94.  
  95.  
  96. #define HAVE_STRINGS_H 1
  97.  
  98.  
  99. #define HAVE_SYS_FILE_H 1
  100.  
  101.  
  102. #define HAVE_SYS_PARAM_H 1
  103.  
  104.  
  105. #define HAVE_SYS_RESOURCE_H 1
  106.  
  107.  
  108. #define HAVE_SYS_TIME_H 1
  109.  
  110.  
  111. #define HAVE_SYS_TIMES_H 1
  112.  
  113.  
  114. #define HAVE_TIME_H 1
  115.  
  116.  
  117. #define HAVE_UNISTD_H 1
  118. # 1 "../config.h" 2
  119.  
  120. # 1 ".\\..\\config\\i386/xm-i386.h" 1
  121.  
  122.  
  123.  
  124.  
  125.  
  126.  
  127.  
  128.  
  129.  
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136.  
  137.  
  138.  
  139.  
  140.  
  141.  
  142.  
  143.  
  144.  
  145.  
  146. #define FALSE 0
  147. #define TRUE 1
  148.  
  149.  
  150. #define HOST_BITS_PER_CHAR 8
  151. #define HOST_BITS_PER_SHORT 16
  152. #define HOST_BITS_PER_INT 32
  153. #define HOST_BITS_PER_LONG 32
  154. #define HOST_BITS_PER_LONGLONG 64
  155.  
  156.  
  157. #define SUCCESS_EXIT_CODE 0
  158. #define FATAL_EXIT_CODE 33
  159.  
  160.  
  161.  
  162.  
  163. # 1 "..\\tm.h" 1
  164. # 1 ".\\..\\config\\i386/os2.h" 1
  165.  
  166.  
  167.  
  168. #define YES_UNDERSCORES
  169.  
  170. # 1 ".\\..\\config\\i386/gstabs.h" 1
  171. # 1 ".\\..\\config\\i386/gas.h" 1
  172.  
  173.  
  174.  
  175.  
  176.  
  177.  
  178.  
  179.  
  180.  
  181.  
  182.  
  183.  
  184.  
  185.  
  186.  
  187.  
  188.  
  189.  
  190.  
  191.  
  192.  
  193.  
  194.  
  195. # 1 ".\\..\\config\\i386/i386.h" 1
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202.  
  203.  
  204.  
  205.  
  206.  
  207.  
  208.  
  209.  
  210.  
  211.  
  212.  
  213.  
  214.  
  215.  
  216.  
  217.  
  218.  
  219.  
  220.  
  221.  
  222.  
  223.  
  224.  
  225.  
  226.  
  227.  
  228.  
  229.  
  230.  
  231.  
  232.  
  233.  
  234. #define I386 1
  235.  
  236.  
  237.  
  238.  
  239. #define HALF_PIC_P() 0
  240. #define HALF_PIC_NUMBER_PTRS 0
  241. #define HALF_PIC_NUMBER_REFS 0
  242. #define HALF_PIC_ENCODE(DECL)
  243. #define HALF_PIC_DECLARE(NAME)
  244. #define HALF_PIC_INIT()    error ("half-pic init called on systems that don't support it.")
  245. #define HALF_PIC_ADDRESS_P(X) 0
  246. #define HALF_PIC_PTR(X) X
  247. #define HALF_PIC_FINISH(STREAM)
  248.  
  249.  
  250.  
  251.  
  252. struct processor_costs {
  253.   int add;             
  254.   int lea;             
  255.   int shift_var;         
  256.   int shift_const;         
  257.   int mult_init;         
  258.   int mult_bit;             
  259.   int divide;             
  260. };
  261.  
  262. extern struct processor_costs *ix86_cost;
  263.  
  264.  
  265.  
  266. extern int target_flags;
  267.  
  268.  
  269.  
  270.  
  271.  
  272. #define TARGET_CPU_DEFAULT 0
  273.  
  274.  
  275.  
  276. #define MASK_80387        000000000001    
  277. #define MASK_NOTUSED1        000000000002    
  278. #define MASK_NOTUSED2        000000000004    
  279. #define MASK_RTD        000000000010    
  280. #define MASK_ALIGN_DOUBLE    000000000020    
  281. #define MASK_SVR3_SHLIB        000000000040    
  282. #define MASK_IEEE_FP        000000000100    
  283. #define MASK_FLOAT_RETURNS    000000000200    
  284. #define MASK_NO_FANCY_MATH_387    000000000400    
  285. #define MASK_OMIT_LEAF_FRAME_POINTER 0x00000800 
  286.                          
  287. #define MASK_DEBUG_ADDR        000001000000    
  288. #define MASK_NO_WIDE_MULTIPLY    000002000000    
  289. #define MASK_NO_MOVE        000004000000    
  290. #define MASK_NO_PSEUDO        000010000000    
  291. #define MASK_DEBUG_ARG        000020000000       
  292. #define MASK_SCHEDULE_PROLOGUE  000040000000    
  293. #define MASK_STACK_PROBE    000100000000    
  294.  
  295.  
  296. #define TARGET_80387 (target_flags & MASK_80387)
  297.  
  298.  
  299.  
  300.   
  301. #define TARGET_RTD (target_flags & MASK_RTD)
  302.  
  303.  
  304.  
  305.  
  306. #define TARGET_ALIGN_DOUBLE (target_flags & MASK_ALIGN_DOUBLE)
  307.  
  308.  
  309.  
  310. #define TARGET_SVR3_SHLIB (target_flags & MASK_SVR3_SHLIB)
  311.  
  312.  
  313.  
  314.  
  315. #define TARGET_IEEE_FP (target_flags & MASK_IEEE_FP)
  316.  
  317.  
  318.  
  319.  
  320. #define TARGET_FLOAT_RETURNS_IN_80387 (target_flags & MASK_FLOAT_RETURNS)
  321.  
  322.  
  323.  
  324. #define TARGET_NO_FANCY_MATH_387 (target_flags & MASK_NO_FANCY_MATH_387)
  325.  
  326.  
  327. #define TARGET_OMIT_LEAF_FRAME_POINTER (target_flags & MASK_OMIT_LEAF_FRAME_POINTER)
  328.  
  329.  
  330.  
  331.  
  332.  
  333. #define TARGET_NO_WIDE_MULTIPLY (target_flags & MASK_NO_WIDE_MULTIPLY)
  334. #define TARGET_WIDE_MULTIPLY (!TARGET_NO_WIDE_MULTIPLY)
  335.  
  336.  
  337. #define TARGET_SCHEDULE_PROLOGUE (target_flags & MASK_SCHEDULE_PROLOGUE)
  338.  
  339.  
  340. #define TARGET_DEBUG_ADDR (target_flags & MASK_DEBUG_ADDR)
  341.  
  342.  
  343. #define TARGET_DEBUG_ARG (target_flags & MASK_DEBUG_ARG)
  344.  
  345.  
  346. #define TARGET_MOVE    ((target_flags & MASK_NO_MOVE) == 0)    
  347. #define TARGET_PSEUDO    ((target_flags & MASK_NO_PSEUDO) == 0)    
  348.  
  349. #define TARGET_386 (ix86_cpu == PROCESSOR_I386)
  350. #define TARGET_486 (ix86_cpu == PROCESSOR_I486)
  351. #define TARGET_PENTIUM (ix86_cpu == PROCESSOR_PENTIUM)
  352. #define TARGET_PENTIUMPRO (ix86_cpu == PROCESSOR_PENTIUMPRO)
  353. #define TARGET_USE_LEAVE (ix86_cpu == PROCESSOR_I386)
  354. #define TARGET_PUSH_MEMORY (ix86_cpu == PROCESSOR_I386)
  355. #define TARGET_ZERO_EXTEND_WITH_AND (ix86_cpu != PROCESSOR_I386 && ix86_cpu != PROCESSOR_PENTIUMPRO)
  356.  
  357. #define TARGET_DOUBLE_WITH_ADD (ix86_cpu != PROCESSOR_I386)
  358. #define TARGET_USE_BIT_TEST (ix86_cpu == PROCESSOR_I386)
  359. #define TARGET_UNROLL_STRLEN (ix86_cpu != PROCESSOR_I386)
  360. #define TARGET_USE_Q_REG (ix86_cpu == PROCESSOR_PENTIUM || ix86_cpu == PROCESSOR_PENTIUMPRO)
  361.  
  362. #define TARGET_USE_ANY_REG (ix86_cpu == PROCESSOR_I486)
  363. #define TARGET_CMOVE (ix86_arch == PROCESSOR_PENTIUMPRO)
  364. #define TARGET_DEEP_BRANCH_PREDICTION (ix86_cpu == PROCESSOR_PENTIUMPRO)
  365. #define TARGET_STACK_PROBE (target_flags & MASK_STACK_PROBE)
  366.  
  367. #define TARGET_SWITCHES    { { "80387",             MASK_80387 },    { "no-80387",            -MASK_80387 },    { "hard-float",         MASK_80387 },    { "soft-float",        -MASK_80387 },    { "no-soft-float",         MASK_80387 },    { "386",             0 },    { "no-386",             0 },    { "486",             0 },    { "no-486",             0 },    { "pentium",             0 },    { "pentiumpro",         0 },    { "rtd",             MASK_RTD },    { "no-rtd",            -MASK_RTD },    { "align-double",         MASK_ALIGN_DOUBLE },    { "no-align-double",        -MASK_ALIGN_DOUBLE },    { "svr3-shlib",         MASK_SVR3_SHLIB },    { "no-svr3-shlib",        -MASK_SVR3_SHLIB },    { "ieee-fp",             MASK_IEEE_FP },    { "no-ieee-fp",        -MASK_IEEE_FP },    { "fp-ret-in-387",         MASK_FLOAT_RETURNS },    { "no-fp-ret-in-387",        -MASK_FLOAT_RETURNS },    { "no-fancy-math-387",     MASK_NO_FANCY_MATH_387 },    { "fancy-math-387",        -MASK_NO_FANCY_MATH_387 },    { "omit-leaf-frame-pointer",     MASK_OMIT_LEAF_FRAME_POINTER }, { "no-omit-leaf-frame-pointer",-MASK_OMIT_LEAF_FRAME_POINTER }, { "no-wide-multiply",         MASK_NO_WIDE_MULTIPLY },    { "wide-multiply",        -MASK_NO_WIDE_MULTIPLY },    { "schedule-prologue",     MASK_SCHEDULE_PROLOGUE },    { "no-schedule-prologue",    -MASK_SCHEDULE_PROLOGUE },    { "debug-addr",         MASK_DEBUG_ADDR },    { "no-debug-addr",        -MASK_DEBUG_ADDR },    { "move",            -MASK_NO_MOVE },    { "no-move",             MASK_NO_MOVE },    { "debug-arg",         MASK_DEBUG_ARG },    { "no-debug-arg",        -MASK_DEBUG_ARG },    { "stack-arg-probe",         MASK_STACK_PROBE },    { "no-stack-arg-probe",    -MASK_STACK_PROBE },    { "windows",            0 },    { "dll",            0 },    SUBTARGET_SWITCHES    { "", MASK_SCHEDULE_PROLOGUE | TARGET_DEFAULT}}
  368. # 214 ".\\..\\config\\i386/i386.h"
  369.  
  370.  
  371.  
  372.  
  373. enum processor_type
  374.  {PROCESSOR_I386,             
  375.   PROCESSOR_I486,             
  376.   PROCESSOR_PENTIUM,
  377.   PROCESSOR_PENTIUMPRO};
  378.  
  379. #define PROCESSOR_I386_STRING "i386"
  380. #define PROCESSOR_I486_STRING "i486"
  381. #define PROCESSOR_I586_STRING "i586"
  382. #define PROCESSOR_PENTIUM_STRING "pentium"
  383. #define PROCESSOR_I686_STRING "i686"
  384. #define PROCESSOR_PENTIUMPRO_STRING "pentiumpro"
  385.  
  386. extern enum processor_type ix86_cpu;
  387.  
  388. extern int ix86_arch;
  389.  
  390.  
  391. #define PROCESSOR_DEFAULT ((enum processor_type) TARGET_CPU_DEFAULT == PROCESSOR_I486) ? PROCESSOR_I486 : ((enum processor_type) TARGET_CPU_DEFAULT == PROCESSOR_PENTIUM) ? PROCESSOR_PENTIUM : ((enum processor_type) TARGET_CPU_DEFAULT == PROCESSOR_PENTIUMPRO) ? PROCESSOR_PENTIUMPRO : PROCESSOR_I386
  392.  
  393.  
  394.  
  395.  
  396.  
  397.  
  398.  
  399. #define PROCESSOR_DEFAULT_STRING ((enum processor_type) TARGET_CPU_DEFAULT == PROCESSOR_I486) ? PROCESSOR_I486_STRING : ((enum processor_type) TARGET_CPU_DEFAULT == PROCESSOR_PENTIUM) ? PROCESSOR_PENTIUM_STRING : ((enum processor_type) TARGET_CPU_DEFAULT == PROCESSOR_PENTIUMPRO) ? PROCESSOR_PENTIUMPRO_STRING : PROCESSOR_I386_STRING
  400.  
  401.  
  402.  
  403.  
  404.  
  405.  
  406.  
  407.  
  408.  
  409.  
  410.  
  411.  
  412.  
  413.  
  414.  
  415.  
  416.  
  417. #define TARGET_OPTIONS    { { "cpu=",        &ix86_cpu_string},    { "arch=",        &ix86_arch_string},    { "reg-alloc=",    &i386_reg_alloc_order },    { "regparm=",        &i386_regparm_string },    { "align-loops=",    &i386_align_loops_string },    { "align-jumps=",    &i386_align_jumps_string },    { "align-functions=",    &i386_align_funcs_string },    { "branch-cost=",    &i386_branch_cost_string },    SUBTARGET_OPTIONS    }
  418. # 273 ".\\..\\config\\i386/i386.h"
  419.  
  420.  
  421.  
  422.  
  423.  
  424.  
  425.  
  426.  
  427.  
  428.  
  429. #define OVERRIDE_OPTIONS override_options ()
  430.  
  431.  
  432. #define SUBTARGET_SWITCHES
  433. #define SUBTARGET_OPTIONS
  434.  
  435.  
  436. #define OPTIMIZATION_OPTIONS(LEVEL) optimization_options(LEVEL)
  437.  
  438.  
  439.  
  440.  
  441. #define CC1_CPU_SPEC "\
  442. %{!mcpu*: \
  443. %{m386:-mcpu=i386 -march=i386} \
  444. %{mno-486:-mcpu=i386 -march=i386} \
  445. %{m486:-mcpu=i486 -march=i486} \
  446. %{mno-386:-mcpu=i486 -march=i486} \
  447. %{mno-pentium:-mcpu=i486 -march=i486} \
  448. %{mpentium:-mcpu=pentium} \
  449. %{mno-pentiumpro:-mcpu=pentium} \
  450. %{mpentiumpro:-mcpu=pentiumpro}}"
  451. # 305 ".\\..\\config\\i386/i386.h"
  452.  
  453.  
  454.  
  455.  
  456.  
  457.  
  458.  
  459.  
  460.  
  461.  
  462.  
  463.  
  464.  
  465. #define CPP_CPU_DEFAULT ""
  466.  
  467.  
  468.  
  469.  
  470. #define CPP_CPU_SPEC "\
  471. -Di386 " CPP_CPU_DEFAULT " -Asystem(unix) -Acpu(i386) -Amachine(i386) \
  472. %{mcpu=i486:-Di486} %{m486:-Di486} \
  473. %{mpentium:-Dpentium -Di586} %{mcpu=pentium:-Dpentium -Di586} \
  474. %{mpentiumpro:-Dpentiumpro -Di686} %{mcpu=pentiumpro:-Dpentiumpro -Di686}"
  475.  
  476.  
  477.  
  478.  
  479.  
  480.  
  481.  
  482.  
  483.  
  484.  
  485.  
  486.  
  487.  
  488.  
  489.  
  490. #define CC1_SPEC "%(cc1_spec) "
  491.  
  492.  
  493.  
  494.  
  495.  
  496.  
  497.  
  498.  
  499.  
  500.  
  501.  
  502.  
  503.  
  504. #define SUBTARGET_EXTRA_SPECS
  505.  
  506.  
  507. #define EXTRA_SPECS    { "cpp_cpu",    CPP_CPU_SPEC },    { "cc1_cpu",  CC1_CPU_SPEC },    SUBTARGET_EXTRA_SPECS
  508.  
  509.  
  510.  
  511.  
  512.  
  513.  
  514.  
  515.  
  516. #define LONG_DOUBLE_TYPE_SIZE 96
  517.  
  518.  
  519.  
  520.  
  521.  
  522.  
  523.  
  524.  
  525.  
  526. #define BITS_BIG_ENDIAN 0
  527.  
  528.  
  529.  
  530. #define BYTES_BIG_ENDIAN 0
  531.  
  532.  
  533.  
  534.  
  535. #define WORDS_BIG_ENDIAN 0
  536.  
  537.  
  538. #define BITS_PER_UNIT 8
  539.  
  540.  
  541.  
  542.  
  543.  
  544. #define BITS_PER_WORD 32
  545.  
  546.  
  547. #define UNITS_PER_WORD 4
  548.  
  549.  
  550.  
  551. #define POINTER_SIZE 32
  552.  
  553.  
  554. #define PARM_BOUNDARY 32
  555.  
  556.  
  557. #define STACK_BOUNDARY 32
  558.  
  559.  
  560.  
  561.  
  562. #define FUNCTION_BOUNDARY (1 << (i386_align_funcs + 3))
  563.  
  564.  
  565.  
  566. #define EMPTY_FIELD_BOUNDARY 32
  567.  
  568.  
  569.  
  570.  
  571.  
  572.  
  573.  
  574.  
  575.  
  576. #define BIGGEST_ALIGNMENT (TARGET_ALIGN_DOUBLE ? 64 : 32)
  577.  
  578.  
  579. #define ALIGN_DFmode (!TARGET_386)
  580.  
  581.  
  582.  
  583. #define STRICT_ALIGNMENT 0
  584.  
  585.  
  586.  
  587.  
  588. #define PCC_BITFIELD_TYPE_MATTERS 1
  589.  
  590.  
  591. #define MAX_CODE_ALIGN    6            
  592.  
  593.  
  594. #define ASM_OUTPUT_LOOP_ALIGN(FILE) ASM_OUTPUT_ALIGN (FILE, i386_align_loops)
  595.  
  596.  
  597.  
  598.  
  599. #define ASM_OUTPUT_ALIGN_CODE(FILE) ASM_OUTPUT_ALIGN ((FILE), i386_align_jumps)
  600.  
  601.  
  602.  
  603.  
  604.  
  605.  
  606.  
  607. #define STACK_REGS
  608. #define IS_STACK_MODE(mode) (mode==DFmode || mode==SFmode || mode==XFmode)
  609.  
  610.  
  611.  
  612.  
  613.  
  614.  
  615.  
  616.  
  617.  
  618.  
  619.  
  620.  
  621.  
  622.  
  623.  
  624.  
  625.  
  626. #define FIRST_PSEUDO_REGISTER 17
  627.  
  628.  
  629.  
  630.  
  631. #define FIXED_REGISTERS {  0, 0, 0, 0, 0, 0, 0, 1, 0,  0,  0,  0,  0,  0,  0,  0,  1 }
  632.  
  633.  
  634.  
  635.  
  636.  
  637.  
  638.  
  639.  
  640.  
  641.  
  642. #define CALL_USED_REGISTERS {  1, 1, 1, 0, 0, 0, 0, 1, 1,  1,  1,  1,  1,  1,  1,  1,  1 }
  643.  
  644.  
  645.  
  646.  
  647.  
  648.  
  649.  
  650.  
  651.  
  652.  
  653.  
  654.  
  655.  
  656.  
  657.  
  658.  
  659.  
  660.  
  661.  
  662.  
  663.  
  664.  
  665. #define REG_ALLOC_ORDER {  0, 1, 2, 3, 4, 5, 6, 7, 8,  9, 10, 11, 12, 13, 14, 15, 16 }
  666.  
  667.  
  668.  
  669.  
  670.  
  671.  
  672.  
  673.  
  674.  
  675.  
  676.  
  677.  
  678.  
  679.  
  680.  
  681.  
  682. #define ORDER_REGS_FOR_LOCAL_ALLOC order_regs_for_local_alloc ()
  683.  
  684.  
  685. #define CONDITIONAL_REGISTER_USAGE    {    if (flag_pic)    {    fixed_regs[PIC_OFFSET_TABLE_REGNUM] = 1;    call_used_regs[PIC_OFFSET_TABLE_REGNUM] = 1;    }    if (! TARGET_80387 && ! TARGET_FLOAT_RETURNS_IN_80387) { int i; HARD_REG_SET x;    COPY_HARD_REG_SET (x, reg_class_contents[(int)FLOAT_REGS]); for (i = 0; i < FIRST_PSEUDO_REGISTER; i++ )    if (TEST_HARD_REG_BIT (x, i)) fixed_regs[i] = call_used_regs[i] = 1; }    }
  686. # 551 ".\\..\\config\\i386/i386.h"
  687.  
  688.  
  689.  
  690.  
  691.  
  692.  
  693.  
  694.  
  695.  
  696.  
  697.  
  698. #define HARD_REGNO_NREGS(REGNO, MODE) (FP_REGNO_P (REGNO) ? 1 : ((GET_MODE_SIZE (MODE) + UNITS_PER_WORD - 1) / UNITS_PER_WORD))
  699.  
  700.  
  701.  
  702.  
  703.  
  704.  
  705.  
  706.  
  707.  
  708.  
  709.  
  710. #define HARD_REGNO_MODE_OK(REGNO, MODE) ((REGNO) < 2 ? 1    : (REGNO) < 4 ? 1    : FP_REGNO_P (REGNO)    ? (((int) GET_MODE_CLASS (MODE) == (int) MODE_FLOAT    || (int) GET_MODE_CLASS (MODE) == (int) MODE_COMPLEX_FLOAT)    && GET_MODE_UNIT_SIZE (MODE) <= (LONG_DOUBLE_TYPE_SIZE == 96 ? 12 : 8)) : (int) (MODE) != (int) QImode ? 1    : (reload_in_progress | reload_completed) == 1)
  711. # 583 ".\\..\\config\\i386/i386.h"
  712.  
  713.  
  714.  
  715.  
  716.  
  717.  
  718. #define MODES_TIEABLE_P(MODE1, MODE2) ((MODE1) == (MODE2))
  719.  
  720.  
  721.  
  722.  
  723.  
  724.  
  725.  
  726.  
  727.  
  728. #define STACK_POINTER_REGNUM 7
  729.  
  730.  
  731. #define FRAME_POINTER_REGNUM 6
  732.  
  733.  
  734. #define FIRST_FLOAT_REG 8
  735.  
  736.  
  737. #define FIRST_STACK_REG FIRST_FLOAT_REG
  738. #define LAST_STACK_REG (FIRST_FLOAT_REG + 7)
  739.  
  740.  
  741.  
  742.  
  743.  
  744. #define FRAME_POINTER_REQUIRED (TARGET_OMIT_LEAF_FRAME_POINTER && !leaf_function_p ())     
  745.  
  746.  
  747. #define ARG_POINTER_REGNUM 16
  748.  
  749.  
  750. #define STATIC_CHAIN_REGNUM 2
  751.  
  752.  
  753.  
  754. #define PIC_OFFSET_TABLE_REGNUM 3
  755.  
  756.  
  757.  
  758.  
  759. #define STRUCT_VALUE_INCOMING 0
  760.  
  761.  
  762.  
  763. #define STRUCT_VALUE 0
  764.  
  765.  
  766.  
  767.  
  768.  
  769.  
  770.  
  771.  
  772.  
  773.  
  774.  
  775.  
  776.  
  777.  
  778.  
  779.  
  780.  
  781.  
  782. #define RETURN_IN_MEMORY(TYPE) ((TYPE_MODE (TYPE) == BLKmode) || int_size_in_bytes (TYPE) > 12)
  783.  
  784.  
  785.  
  786.  
  787.  
  788.  
  789.  
  790.  
  791.  
  792.  
  793.  
  794.  
  795.  
  796.  
  797.  
  798.  
  799.  
  800.  
  801.  
  802.  
  803.  
  804.  
  805.  
  806.  
  807.  
  808.  
  809.  
  810. enum reg_class
  811. {
  812.   NO_REGS,
  813.   AREG, DREG, CREG, BREG,
  814.   AD_REGS,             
  815.   Q_REGS,             
  816.   SIREG, DIREG,
  817.   INDEX_REGS,             
  818.   GENERAL_REGS,             
  819.   FP_TOP_REG, FP_SECOND_REG,     
  820.   FLOAT_REGS,
  821.   ALL_REGS, LIM_REG_CLASSES
  822. };
  823.  
  824. #define N_REG_CLASSES (int) LIM_REG_CLASSES
  825.  
  826. #define FLOAT_CLASS_P(CLASS) (reg_class_subset_p (CLASS, FLOAT_REGS))
  827.  
  828.  
  829.  
  830. #define REG_CLASS_NAMES {  "NO_REGS",    "AREG", "DREG", "CREG", "BREG",    "AD_REGS",    "Q_REGS",    "SIREG", "DIREG",    "INDEX_REGS",    "GENERAL_REGS",    "FP_TOP_REG", "FP_SECOND_REG",    "FLOAT_REGS",    "ALL_REGS" }
  831. # 712 ".\\..\\config\\i386/i386.h"
  832.  
  833.  
  834.  
  835.  
  836.  
  837. #define REG_CLASS_CONTENTS {      0,    0x1,    0x2,  0x4,     0x8,    0x3,    0xf,    0x10,   0x20,    0x7f,    0x100ff,    0x0100, 0x0200,    0xff00,    0x1ffff }
  838. # 728 ".\\..\\config\\i386/i386.h"
  839.  
  840.  
  841.  
  842.  
  843.  
  844.  
  845. #define REGNO_REG_CLASS(REGNO) (regclass_map[REGNO])
  846.  
  847.  
  848.  
  849.  
  850.  
  851. #define SMALL_REGISTER_CLASSES 1
  852.  
  853. #define QI_REG_P(X) (REG_P (X) && REGNO (X) < 4)
  854.  
  855. #define NON_QI_REG_P(X) (REG_P (X) && REGNO (X) >= 4 && REGNO (X) < FIRST_PSEUDO_REGISTER)
  856.  
  857.  
  858. #define FP_REG_P(X) (REG_P (X) && FP_REGNO_P (REGNO (X)))
  859. #define FP_REGNO_P(n) ((n) >= FIRST_STACK_REG && (n) <= LAST_STACK_REG)
  860.   
  861. #define STACK_REG_P(xop) (REG_P (xop) &&    REGNO (xop) >= FIRST_STACK_REG &&    REGNO (xop) <= LAST_STACK_REG)
  862.  
  863.  
  864.  
  865. #define NON_STACK_REG_P(xop) (REG_P (xop) && ! STACK_REG_P (xop))
  866.  
  867. #define STACK_TOP_P(xop) (REG_P (xop) && REGNO (xop) == FIRST_STACK_REG)
  868.  
  869.  
  870.  
  871.  
  872.  
  873.  
  874.  
  875.  
  876.  
  877.  
  878.  
  879.  
  880.  
  881. #define INDEX_REG_CLASS INDEX_REGS
  882. #define BASE_REG_CLASS GENERAL_REGS
  883.  
  884.  
  885.  
  886. #define REG_CLASS_FROM_LETTER(C)    ((C) == 'r' ? GENERAL_REGS :    (C) == 'q' ? Q_REGS :    (C) == 'f' ? (TARGET_80387 || TARGET_FLOAT_RETURNS_IN_80387    ? FLOAT_REGS    : NO_REGS) :    (C) == 't' ? (TARGET_80387 || TARGET_FLOAT_RETURNS_IN_80387    ? FP_TOP_REG    : NO_REGS) :    (C) == 'u' ? (TARGET_80387 || TARGET_FLOAT_RETURNS_IN_80387    ? FP_SECOND_REG    : NO_REGS) :    (C) == 'a' ? AREG :    (C) == 'b' ? BREG :    (C) == 'c' ? CREG :    (C) == 'd' ? DREG :    (C) == 'A' ? AD_REGS :    (C) == 'D' ? DIREG :    (C) == 'S' ? SIREG : NO_REGS)
  887. # 794 ".\\..\\config\\i386/i386.h"
  888.  
  889.  
  890.  
  891.  
  892.  
  893.  
  894.  
  895.  
  896.  
  897.  
  898.  
  899.  
  900.  
  901. #define CONST_OK_FOR_LETTER_P(VALUE, C) ((C) == 'I' ? (VALUE) >= 0 && (VALUE) <= 31 :    (C) == 'J' ? (VALUE) >= 0 && (VALUE) <= 63 :    (C) == 'K' ? (VALUE) == 0xff :    (C) == 'L' ? (VALUE) == 0xffff :    (C) == 'M' ? (VALUE) >= 0 && (VALUE) <= 3 :    (C) == 'N' ? (VALUE) >= 0 && (VALUE) <= 255 : (C) == 'O' ? (VALUE) >= 0 && (VALUE) <= 32 :    0)
  902. # 816 ".\\..\\config\\i386/i386.h"
  903.  
  904.  
  905.  
  906.  
  907.  
  908.  
  909. #define CONST_DOUBLE_OK_FOR_LETTER_P(VALUE, C) ((C) == 'G' ? standard_80387_constant_p (VALUE) : 0)
  910.  
  911.  
  912.  
  913.  
  914. #define EXTRA_CONSTRAINT(OP, C) ((C) == 'Q' ? CONSTANT_P (OP) && (! flag_pic || ! SYMBOLIC_CONST (OP)) : 0)
  915.  
  916.  
  917. #define EXTRA_CONSTRAINT_NO_S
  918.  
  919.  
  920.  
  921.  
  922.  
  923. #define LIMIT_RELOAD_CLASS(MODE, CLASS) ((MODE) == QImode && ((CLASS) == ALL_REGS || (CLASS) == GENERAL_REGS) ? Q_REGS : (CLASS))
  924.  
  925.  
  926.  
  927.  
  928.  
  929.  
  930.  
  931.  
  932.  
  933.  
  934.  
  935.  
  936.  
  937.  
  938.  
  939.  
  940. #define PREFERRED_RELOAD_CLASS(X,CLASS)    (GET_CODE (X) == CONST_DOUBLE && GET_MODE (X) != VOIDmode ? NO_REGS    : GET_MODE (X) == QImode && ! reg_class_subset_p (CLASS, Q_REGS) ? Q_REGS : ((CLASS) == ALL_REGS    && GET_MODE_CLASS (GET_MODE (X)) == MODE_FLOAT) ? GENERAL_REGS    : (CLASS))
  941.  
  942.  
  943.  
  944.  
  945.  
  946.  
  947.  
  948.  
  949.  
  950. #define SECONDARY_MEMORY_NEEDED(CLASS1,CLASS2,MODE) ((FLOAT_CLASS_P (CLASS1) && ! FLOAT_CLASS_P (CLASS2))    || (! FLOAT_CLASS_P (CLASS1) && FLOAT_CLASS_P (CLASS2)))
  951.  
  952.  
  953.  
  954.  
  955.  
  956.  
  957.  
  958. #define CLASS_MAX_NREGS(CLASS, MODE)    (FLOAT_CLASS_P (CLASS) ? 1 :    ((GET_MODE_SIZE (MODE) + UNITS_PER_WORD - 1) / UNITS_PER_WORD))
  959.  
  960.  
  961.  
  962.  
  963.  
  964.  
  965.  
  966.  
  967.  
  968.  
  969.  
  970.  
  971.  
  972.  
  973.  
  974.  
  975.  
  976.  
  977.  
  978. #define CLASS_LIKELY_SPILLED_P(CLASS)    (((CLASS) == AREG)    || ((CLASS) == DREG)    || ((CLASS) == CREG)    || ((CLASS) == BREG)    || ((CLASS) == AD_REGS)    || ((CLASS) == SIREG)    || ((CLASS) == DIREG))
  979.  
  980.  
  981.  
  982.  
  983.  
  984.  
  985.  
  986.  
  987.  
  988.  
  989.  
  990.  
  991.  
  992. #define STACK_GROWS_DOWNWARD
  993.  
  994.  
  995.  
  996.  
  997.  
  998. #define FRAME_GROWS_DOWNWARD
  999.  
  1000.  
  1001.  
  1002.  
  1003.  
  1004. #define STARTING_FRAME_OFFSET 0
  1005.  
  1006.  
  1007.  
  1008.  
  1009.  
  1010.  
  1011.  
  1012. #define PUSH_ROUNDING(BYTES) (((BYTES) + 1) & (-2))
  1013.  
  1014.  
  1015. #define FIRST_PARM_OFFSET(FNDECL) 0
  1016.  
  1017.  
  1018.  
  1019.  
  1020.  
  1021.  
  1022.  
  1023.  
  1024.  
  1025.  
  1026.  
  1027.  
  1028.  
  1029.  
  1030.  
  1031.  
  1032.  
  1033.  
  1034. #define RETURN_POPS_ARGS(FUNDECL,FUNTYPE,SIZE) (i386_return_pops_args (FUNDECL, FUNTYPE, SIZE))
  1035.  
  1036.  
  1037.  
  1038.  
  1039.  
  1040.  
  1041. #define FUNCTION_VALUE(VALTYPE, FUNC) gen_rtx (REG, TYPE_MODE (VALTYPE), VALUE_REGNO (TYPE_MODE (VALTYPE)))
  1042.  
  1043.  
  1044.  
  1045.  
  1046.  
  1047.  
  1048. #define LIBCALL_VALUE(MODE) gen_rtx (REG, MODE, VALUE_REGNO (MODE))
  1049.  
  1050.  
  1051.  
  1052.  
  1053.  
  1054.  
  1055. #define APPLY_RESULT_SIZE (8+108)
  1056.  
  1057.  
  1058. #define FUNCTION_ARG_REGNO_P(N) ((N) >= 0 && (N) < REGPARM_MAX)
  1059.  
  1060.  
  1061.  
  1062.  
  1063.  
  1064.  
  1065.  
  1066. typedef struct i386_args {
  1067.   int words;             
  1068.   int nregs;             
  1069.   int regno;             
  1070. } CUMULATIVE_ARGS;
  1071.  
  1072.  
  1073.  
  1074.  
  1075.  
  1076. #define INIT_CUMULATIVE_ARGS(CUM,FNTYPE,LIBNAME,INDIRECT)    (init_cumulative_args (&CUM, FNTYPE, LIBNAME))
  1077.  
  1078.  
  1079.  
  1080.  
  1081.  
  1082.  
  1083. #define FUNCTION_ARG_ADVANCE(CUM, MODE, TYPE, NAMED)    (function_arg_advance (&CUM, MODE, TYPE, NAMED))
  1084.  
  1085.  
  1086.  
  1087.  
  1088.  
  1089.  
  1090.  
  1091.  
  1092.  
  1093.  
  1094.  
  1095.  
  1096.  
  1097.  
  1098.  
  1099. #define FUNCTION_ARG(CUM, MODE, TYPE, NAMED) (function_arg (&CUM, MODE, TYPE, NAMED))
  1100.  
  1101.  
  1102.  
  1103.  
  1104.  
  1105.  
  1106. #define FUNCTION_ARG_PARTIAL_NREGS(CUM, MODE, TYPE, NAMED) (function_arg_partial_nregs (&CUM, MODE, TYPE, NAMED))
  1107.  
  1108.  
  1109.  
  1110.  
  1111.  
  1112.  
  1113. #undef ASM_OUTPUT_FUNCTION_PREFIX
  1114. #define ASM_OUTPUT_FUNCTION_PREFIX(FILE, FNNAME) asm_output_function_prefix (FILE, FNNAME)
  1115.  
  1116.  
  1117.  
  1118.  
  1119.  
  1120.  
  1121.  
  1122.  
  1123.  
  1124.  
  1125. #define FUNCTION_PROLOGUE(FILE, SIZE) function_prologue (FILE, SIZE)
  1126.  
  1127.  
  1128.  
  1129.  
  1130.  
  1131. #define FUNCTION_PROFILER(FILE, LABELNO) {    if (flag_pic)    {    fprintf (FILE, "\tleal %sP%d@GOTOFF(%%ebx),%%edx\n",    LPREFIX, (LABELNO));    fprintf (FILE, "\tcall *_mcount@GOT(%%ebx)\n");    }    else    {    fprintf (FILE, "\tmovl $%sP%d,%%edx\n", LPREFIX, (LABELNO));    fprintf (FILE, "\tcall _mcount\n");    }    }
  1132. # 1058 ".\\..\\config\\i386/i386.h"
  1133.  
  1134.  
  1135.  
  1136.  
  1137.  
  1138.  
  1139.  
  1140.  
  1141.  
  1142.  
  1143.  
  1144.  
  1145.  
  1146.  
  1147.  
  1148.  
  1149.  
  1150.  
  1151.  
  1152.  
  1153.  
  1154.  
  1155.  
  1156.  
  1157.  
  1158.  
  1159.  
  1160.  
  1161.  
  1162.  
  1163.  
  1164.  
  1165.  
  1166.  
  1167.  
  1168.  
  1169.  
  1170.  
  1171.  
  1172.  
  1173.  
  1174.  
  1175.  
  1176.  
  1177.  
  1178.  
  1179.  
  1180.  
  1181.  
  1182.  
  1183.  
  1184.  
  1185.  
  1186.  
  1187.  
  1188.  
  1189.  
  1190.  
  1191.  
  1192.  
  1193.  
  1194.  
  1195.  
  1196.  
  1197.  
  1198.  
  1199.  
  1200.  
  1201.  
  1202.  
  1203.  
  1204.  
  1205.  
  1206.  
  1207.  
  1208.  
  1209.  
  1210.  
  1211.  
  1212.  
  1213.  
  1214.  
  1215.  
  1216.  
  1217.  
  1218.  
  1219.  
  1220. #undef    FUNCTION_BLOCK_PROFILER
  1221. #define FUNCTION_BLOCK_PROFILER(FILE, BLOCK_OR_LABEL)    do    {    static int num_func = 0;    rtx xops[8];    char block_table[80], false_label[80];    ASM_GENERATE_INTERNAL_LABEL (block_table, "LPBX", 0);    xops[1] = gen_rtx (SYMBOL_REF, VOIDmode, block_table);    xops[5] = stack_pointer_rtx;    xops[7] = gen_rtx (REG, Pmode, 0);    CONSTANT_POOL_ADDRESS_P (xops[1]) = TRUE;    switch (profile_block_flag) {    case 2:    xops[2] = GEN_INT ((BLOCK_OR_LABEL));    xops[3] = gen_rtx (MEM, Pmode, gen_rtx (SYMBOL_REF, VOIDmode, "__bb_init_trace_func")); xops[6] = GEN_INT (8);    output_asm_insn (AS1(push%L2,%2), xops);    if (!flag_pic)    output_asm_insn (AS1(push%L1,%1), xops);    else    {    output_asm_insn (AS2 (lea%L7,%a1,%7), xops);    output_asm_insn (AS1 (push%L7,%7), xops);    }    output_asm_insn (AS1(call,%P3), xops);    output_asm_insn (AS2(add%L0,%6,%5), xops);    break;    default:    ASM_GENERATE_INTERNAL_LABEL (false_label, "LPBZ", num_func);    xops[0] = const0_rtx;    xops[2] = gen_rtx (MEM, Pmode, gen_rtx (SYMBOL_REF, VOIDmode, false_label)); xops[3] = gen_rtx (MEM, Pmode, gen_rtx (SYMBOL_REF, VOIDmode, "__bb_init_func")); xops[4] = gen_rtx (MEM, Pmode, xops[1]);    xops[6] = GEN_INT (4);    CONSTANT_POOL_ADDRESS_P (xops[2]) = TRUE;    output_asm_insn (AS2(cmp%L4,%0,%4), xops);    output_asm_insn (AS1(jne,%2), xops);    if (!flag_pic)    output_asm_insn (AS1(push%L1,%1), xops);    else    {    output_asm_insn (AS2 (lea%L7,%a1,%7), xops);    output_asm_insn (AS1 (push%L7,%7), xops);    }    output_asm_insn (AS1(call,%P3), xops);    output_asm_insn (AS2(add%L0,%6,%5), xops);    ASM_OUTPUT_INTERNAL_LABEL (FILE, "LPBZ", num_func);    num_func++;    break;    }    }    while (0)
  1222. # 1217 ".\\..\\config\\i386/i386.h"
  1223.  
  1224.  
  1225.  
  1226.  
  1227.  
  1228.  
  1229.  
  1230.  
  1231.  
  1232.  
  1233.  
  1234.  
  1235.  
  1236.  
  1237.  
  1238.  
  1239.  
  1240.  
  1241.  
  1242.  
  1243.  
  1244.  
  1245.  
  1246.  
  1247.  
  1248.  
  1249.  
  1250.  
  1251.  
  1252.  
  1253.  
  1254.  
  1255.  
  1256.  
  1257.  
  1258.  
  1259.  
  1260.  
  1261.  
  1262.  
  1263.  
  1264.  
  1265.  
  1266.  
  1267.  
  1268.  
  1269.  
  1270.  
  1271.  
  1272.  
  1273.  
  1274.  
  1275.  
  1276.  
  1277.  
  1278.  
  1279.  
  1280.  
  1281.  
  1282.  
  1283.  
  1284.  
  1285.  
  1286.  
  1287.  
  1288.  
  1289. #define BLOCK_PROFILER(FILE, BLOCKNO)    do    {    rtx xops[8], cnt_rtx;    char counts[80];    char *block_table = counts;    switch (profile_block_flag) {    case 2:    ASM_GENERATE_INTERNAL_LABEL (block_table, "LPBX", 0);    xops[1] = gen_rtx (SYMBOL_REF, VOIDmode, block_table);    xops[2] = GEN_INT ((BLOCKNO));    xops[3] = gen_rtx (MEM, Pmode, gen_rtx (SYMBOL_REF, VOIDmode, "__bb_trace_func")); xops[4] = gen_rtx (SYMBOL_REF, VOIDmode, "__bb");    xops[5] = plus_constant (xops[4], 4);    xops[0] = gen_rtx (MEM, SImode, xops[4]);    xops[6] = gen_rtx (MEM, SImode, xops[5]);    CONSTANT_POOL_ADDRESS_P (xops[1]) = TRUE;    fprintf(FILE, "\tpushf\n");    output_asm_insn (AS2(mov%L0,%2,%0), xops);    if (flag_pic)    {    xops[7] = gen_rtx (REG, Pmode, 0);    output_asm_insn (AS1(push%L7,%7), xops);    output_asm_insn (AS2(lea%L7,%a1,%7), xops);    output_asm_insn (AS2(mov%L6,%7,%6), xops);    output_asm_insn (AS1(pop%L7,%7), xops);    }    else    output_asm_insn (AS2(mov%L6,%1,%6), xops);    output_asm_insn (AS1(call,%P3), xops);    fprintf(FILE, "\tpopf\n");    break;    default:    ASM_GENERATE_INTERNAL_LABEL (counts, "LPBX", 2);    cnt_rtx = gen_rtx (SYMBOL_REF, VOIDmode, counts);    SYMBOL_REF_FLAG (cnt_rtx) = TRUE;    if (BLOCKNO)    cnt_rtx = plus_constant (cnt_rtx, (BLOCKNO)*4);    if (flag_pic)    cnt_rtx = gen_rtx (PLUS, Pmode, pic_offset_table_rtx, cnt_rtx);    xops[0] = gen_rtx (MEM, SImode, cnt_rtx);    output_asm_insn (AS1(inc%L0,%0), xops);    break;    }    }    while (0)
  1290. # 1344 ".\\..\\config\\i386/i386.h"
  1291.  
  1292.  
  1293.  
  1294.  
  1295.  
  1296.  
  1297.  
  1298.  
  1299.  
  1300.  
  1301.  
  1302.  
  1303.  
  1304.  
  1305.  
  1306.  
  1307.  
  1308.  
  1309.  
  1310.  
  1311.  
  1312.  
  1313.  
  1314. #define FUNCTION_BLOCK_PROFILER_EXIT(FILE) do    {    rtx xops[1];    xops[0] = gen_rtx (MEM, Pmode, gen_rtx (SYMBOL_REF, VOIDmode, "__bb_trace_ret")); output_asm_insn (AS1(call,%P0), xops);    }    while (0)
  1315. # 1378 ".\\..\\config\\i386/i386.h"
  1316.  
  1317.  
  1318.  
  1319.  
  1320.  
  1321.  
  1322.  
  1323.  
  1324.  
  1325.  
  1326.  
  1327.  
  1328.  
  1329.  
  1330.  
  1331.  
  1332.  
  1333.  
  1334.  
  1335.  
  1336.  
  1337.  
  1338. #define MACHINE_STATE_SAVE(ID) asm ("    pushl %eax"); asm ("    pushl %ecx"); asm ("    pushl %edx"); asm ("    pushl %esi");
  1339.  
  1340.  
  1341.  
  1342.  
  1343.  
  1344. #define MACHINE_STATE_RESTORE(ID) asm ("    popl %esi"); asm ("    popl %edx"); asm ("    popl %ecx"); asm ("    popl %eax");
  1345.  
  1346.  
  1347.  
  1348.  
  1349.  
  1350.  
  1351.  
  1352.  
  1353.  
  1354.  
  1355.  
  1356.  
  1357.  
  1358. #define EXIT_IGNORE_STACK 1
  1359.  
  1360.  
  1361.  
  1362.  
  1363.  
  1364.  
  1365.  
  1366.  
  1367.  
  1368.  
  1369.  
  1370.  
  1371.  
  1372.  
  1373.  
  1374.  
  1375. # 1446 ".\\..\\config\\i386/i386.h"
  1376.  
  1377.  
  1378. #define FUNCTION_EPILOGUE(FILE, SIZE) function_epilogue (FILE, SIZE)
  1379.  
  1380.  
  1381.  
  1382.  
  1383.  
  1384.  
  1385.  
  1386.  
  1387.  
  1388. #define TRAMPOLINE_TEMPLATE(FILE)    {    ASM_OUTPUT_CHAR (FILE, GEN_INT (0xb9));    ASM_OUTPUT_SHORT (FILE, const0_rtx);    ASM_OUTPUT_SHORT (FILE, const0_rtx);    ASM_OUTPUT_CHAR (FILE, GEN_INT (0xb8));    ASM_OUTPUT_SHORT (FILE, const0_rtx);    ASM_OUTPUT_SHORT (FILE, const0_rtx);    ASM_OUTPUT_CHAR (FILE, GEN_INT (0xff));    ASM_OUTPUT_CHAR (FILE, GEN_INT (0xe0));    }
  1389. # 1469 ".\\..\\config\\i386/i386.h"
  1390.  
  1391.  
  1392.  
  1393. #define TRAMPOLINE_SIZE 12
  1394.  
  1395.  
  1396.  
  1397.  
  1398.  
  1399. #define INITIALIZE_TRAMPOLINE(TRAMP, FNADDR, CXT)    {    emit_move_insn (gen_rtx (MEM, SImode, plus_constant (TRAMP, 1)), CXT); emit_move_insn (gen_rtx (MEM, SImode, plus_constant (TRAMP, 6)), FNADDR); }
  1400.  
  1401.  
  1402.  
  1403.  
  1404.  
  1405.  
  1406.  
  1407.  
  1408.  
  1409.  
  1410.  
  1411.  
  1412.  
  1413.  
  1414.  
  1415.  
  1416.  
  1417. #define ELIMINABLE_REGS    {{ ARG_POINTER_REGNUM, STACK_POINTER_REGNUM},    { ARG_POINTER_REGNUM, FRAME_POINTER_REGNUM}, { FRAME_POINTER_REGNUM, STACK_POINTER_REGNUM}}
  1418.  
  1419.  
  1420.  
  1421.  
  1422.  
  1423.  
  1424.  
  1425.  
  1426.  
  1427.  
  1428.  
  1429.  
  1430. #define CAN_ELIMINATE(FROM, TO)    ((FROM) == ARG_POINTER_REGNUM && (TO) == STACK_POINTER_REGNUM    ? ! frame_pointer_needed    : 1)
  1431.  
  1432.  
  1433.  
  1434.  
  1435.  
  1436.  
  1437.  
  1438. #define INITIAL_ELIMINATION_OFFSET(FROM, TO, OFFSET)    {    if ((FROM) == ARG_POINTER_REGNUM && (TO) == FRAME_POINTER_REGNUM)    (OFFSET) = 8;    else    {    int regno;    int offset = 0;    for (regno = 0; regno < FIRST_PSEUDO_REGISTER; regno++)    if ((regs_ever_live[regno] && ! call_used_regs[regno])    || ((current_function_uses_pic_offset_table    || current_function_uses_const_pool)    && flag_pic && regno == PIC_OFFSET_TABLE_REGNUM))    offset += 4;    (OFFSET) = offset + get_frame_size ();    if ((FROM) == ARG_POINTER_REGNUM && (TO) == STACK_POINTER_REGNUM)    (OFFSET) += 4;    }    }
  1439. # 1539 ".\\..\\config\\i386/i386.h"
  1440.  
  1441.  
  1442.  
  1443.  
  1444.  
  1445.  
  1446.  
  1447.  
  1448.  
  1449.  
  1450.  
  1451.  
  1452.  
  1453.  
  1454.  
  1455.  
  1456.  
  1457. #define REGNO_OK_FOR_INDEX_P(REGNO) ((REGNO) < STACK_POINTER_REGNUM || (unsigned) reg_renumber[REGNO] < STACK_POINTER_REGNUM)
  1458.  
  1459.  
  1460.  
  1461. #define REGNO_OK_FOR_BASE_P(REGNO) ((REGNO) <= STACK_POINTER_REGNUM || (REGNO) == ARG_POINTER_REGNUM || (unsigned) reg_renumber[REGNO] <= STACK_POINTER_REGNUM)
  1462.  
  1463.  
  1464.  
  1465.  
  1466. #define REGNO_OK_FOR_SIREG_P(REGNO) ((REGNO) == 4 || reg_renumber[REGNO] == 4)
  1467. #define REGNO_OK_FOR_DIREG_P(REGNO) ((REGNO) == 5 || reg_renumber[REGNO] == 5)
  1468.  
  1469.  
  1470.  
  1471.  
  1472.  
  1473.  
  1474.  
  1475.  
  1476.  
  1477.  
  1478.  
  1479.  
  1480.  
  1481.  
  1482.  
  1483.  
  1484. #define REG_OK_FOR_INDEX_NONSTRICT_P(X)    (REGNO (X) < STACK_POINTER_REGNUM    || REGNO (X) >= FIRST_PSEUDO_REGISTER)
  1485.  
  1486.  
  1487.  
  1488. #define REG_OK_FOR_BASE_NONSTRICT_P(X)    (REGNO (X) <= STACK_POINTER_REGNUM    || REGNO (X) == ARG_POINTER_REGNUM    || REGNO (X) >= FIRST_PSEUDO_REGISTER)
  1489.  
  1490.  
  1491.  
  1492.  
  1493. #define REG_OK_FOR_STRREG_NONSTRICT_P(X)    (REGNO (X) == 4 || REGNO (X) == 5 || REGNO (X) >= FIRST_PSEUDO_REGISTER)
  1494.  
  1495.  
  1496.  
  1497. #define REG_OK_FOR_INDEX_STRICT_P(X) REGNO_OK_FOR_INDEX_P (REGNO (X))
  1498. #define REG_OK_FOR_BASE_STRICT_P(X)  REGNO_OK_FOR_BASE_P (REGNO (X))
  1499. #define REG_OK_FOR_STRREG_STRICT_P(X)    (REGNO_OK_FOR_DIREG_P (REGNO (X)) || REGNO_OK_FOR_SIREG_P (REGNO (X)))
  1500.  
  1501.  
  1502.  
  1503. #define REG_OK_FOR_INDEX_P(X)  REG_OK_FOR_INDEX_NONSTRICT_P(X)
  1504. #define REG_OK_FOR_BASE_P(X)   REG_OK_FOR_BASE_NONSTRICT_P(X)
  1505. #define REG_OK_FOR_STRREG_P(X) REG_OK_FOR_STRREG_NONSTRICT_P(X)
  1506.  
  1507.  
  1508.  
  1509.  
  1510.  
  1511.  
  1512.  
  1513.  
  1514.  
  1515.  
  1516.  
  1517.  
  1518.  
  1519.  
  1520.  
  1521.  
  1522.  
  1523.  
  1524. #define MAX_REGS_PER_ADDRESS 2
  1525.  
  1526. #define CONSTANT_ADDRESS_P(X) (GET_CODE (X) == LABEL_REF || GET_CODE (X) == SYMBOL_REF    || GET_CODE (X) == CONST_INT || GET_CODE (X) == CONST    || GET_CODE (X) == HIGH)
  1527.  
  1528.  
  1529.  
  1530.  
  1531.  
  1532.  
  1533.  
  1534. #define LEGITIMATE_CONSTANT_P(X) 1
  1535.  
  1536.  
  1537.  
  1538.  
  1539.  
  1540.  
  1541.  
  1542.  
  1543.  
  1544. #define GO_IF_LEGITIMATE_ADDRESS(MODE, X, ADDR)    {    if (legitimate_address_p (MODE, X, 0))    goto ADDR;    }
  1545.  
  1546.  
  1547.  
  1548.  
  1549.  
  1550.  
  1551.  
  1552.  
  1553.  
  1554.  
  1555.  
  1556.  
  1557.  
  1558.  
  1559.  
  1560.  
  1561.  
  1562.  
  1563.  
  1564.  
  1565.  
  1566.  
  1567.  
  1568.  
  1569.  
  1570.  
  1571.  
  1572.  
  1573. #define LEGITIMIZE_ADDRESS(X, OLDX, MODE, WIN)    {    rtx orig_x = (X);    (X) = legitimize_address (X, OLDX, MODE);    if (memory_address_p (MODE, X))    goto WIN;    }
  1574.  
  1575.  
  1576.  
  1577.  
  1578.  
  1579.  
  1580.  
  1581. #define REWRITE_ADDRESS(x) rewrite_address(x)
  1582.  
  1583.  
  1584.  
  1585.  
  1586.  
  1587. #define LEGITIMATE_PIC_OPERAND_P(X) (! SYMBOLIC_CONST (X)    || (GET_CODE (X) == SYMBOL_REF && CONSTANT_POOL_ADDRESS_P (X)))
  1588.  
  1589.  
  1590.  
  1591. #define SYMBOLIC_CONST(X)    (GET_CODE (X) == SYMBOL_REF    || GET_CODE (X) == LABEL_REF    || (GET_CODE (X) == CONST && symbolic_reference_mentioned_p (X)))
  1592.  
  1593.  
  1594.  
  1595.  
  1596.  
  1597.  
  1598.  
  1599.  
  1600. #define GO_IF_MODE_DEPENDENT_ADDRESS(ADDR,LABEL)    if (GET_CODE (ADDR) == POST_INC || GET_CODE (ADDR) == POST_DEC) goto LABEL
  1601.  
  1602.  
  1603.  
  1604.  
  1605.  
  1606.  
  1607.  
  1608.  
  1609.  
  1610. #define ENCODE_SECTION_INFO(DECL) do    {    if (flag_pic)    {    rtx rtl = (TREE_CODE_CLASS (TREE_CODE (DECL)) != 'd'    ? TREE_CST_RTL (DECL) : DECL_RTL (DECL));    if (TARGET_DEBUG_ADDR    && TREE_CODE_CLASS (TREE_CODE (DECL)) == 'd')    {    fprintf (stderr, "Encode %s, public = %s\n",    IDENTIFIER_POINTER (DECL_NAME (DECL)),    TREE_PUBLIC (DECL));    }    SYMBOL_REF_FLAG (XEXP (rtl, 0))    = (TREE_CODE_CLASS (TREE_CODE (DECL)) != 'd'    || ! TREE_PUBLIC (DECL));    }    }    while (0)
  1611. # 1731 ".\\..\\config\\i386/i386.h"
  1612.  
  1613.  
  1614.  
  1615.  
  1616.  
  1617.  
  1618. #define INIT_EXPANDERS clear_386_stack_locals ()
  1619.  
  1620.  
  1621.  
  1622.  
  1623.  
  1624.  
  1625.  
  1626.  
  1627. #define FINALIZE_PIC    do    {    extern int current_function_uses_pic_offset_table;    current_function_uses_pic_offset_table |= profile_flag | profile_block_flag; }    while (0)
  1628.  
  1629.  
  1630.  
  1631.  
  1632.  
  1633.  
  1634.  
  1635.  
  1636.  
  1637.  
  1638.  
  1639.  
  1640.  
  1641. #define VALID_MACHINE_DECL_ATTRIBUTE(DECL, ATTRIBUTES, NAME, ARGS) (i386_valid_decl_attribute_p (DECL, ATTRIBUTES, NAME, ARGS))
  1642.  
  1643.  
  1644.  
  1645.  
  1646.  
  1647.  
  1648. #define VALID_MACHINE_TYPE_ATTRIBUTE(TYPE, ATTRIBUTES, NAME, ARGS) (i386_valid_type_attribute_p (TYPE, ATTRIBUTES, NAME, ARGS))
  1649.  
  1650.  
  1651.  
  1652.  
  1653.  
  1654.  
  1655.  
  1656. #define COMP_TYPE_ATTRIBUTES(TYPE1, TYPE2) (i386_comp_type_attributes (TYPE1, TYPE2))
  1657.  
  1658.  
  1659.  
  1660.  
  1661.  
  1662.  
  1663.  
  1664.  
  1665.  
  1666.  
  1667.  
  1668.  
  1669. #define REGPARM_MAX 3
  1670.  
  1671.  
  1672.  
  1673.  
  1674. #define CASE_VECTOR_MODE Pmode
  1675.  
  1676.  
  1677.  
  1678.  
  1679.  
  1680.  
  1681.  
  1682.  
  1683.  
  1684. #define IMPLICIT_FIX_EXPR FIX_ROUND_EXPR
  1685.  
  1686.  
  1687. #define EASY_DIV_EXPR TRUNC_DIV_EXPR
  1688.  
  1689.  
  1690. #define DEFAULT_SIGNED_CHAR 1
  1691.  
  1692.  
  1693.  
  1694. #define MOVE_MAX 4
  1695.  
  1696.  
  1697.  
  1698.  
  1699.  
  1700.  
  1701.  
  1702.  
  1703.  
  1704.  
  1705.  
  1706.  
  1707. #define MOVE_RATIO 5
  1708.  
  1709.  
  1710.  
  1711.  
  1712.  
  1713.  
  1714.  
  1715.  
  1716.  
  1717.  
  1718. #define TRULY_NOOP_TRUNCATION(OUTPREC, INPREC) 1
  1719.  
  1720.  
  1721.  
  1722.  
  1723. #define STORE_FLAG_VALUE 1
  1724.  
  1725.  
  1726.  
  1727.  
  1728. #define PROMOTE_PROTOTYPES
  1729.  
  1730.  
  1731.  
  1732.  
  1733. #define Pmode SImode
  1734.  
  1735.  
  1736.  
  1737.  
  1738. #define FUNCTION_MODE QImode
  1739.  
  1740.  
  1741.  
  1742.  
  1743.  
  1744.  
  1745.  
  1746.  
  1747.  
  1748.  
  1749.  
  1750.  
  1751.  
  1752.  
  1753. #define CONST_COSTS(RTX,CODE,OUTER_CODE) case CONST_INT:    case CONST:    case LABEL_REF:    case SYMBOL_REF:    return flag_pic && SYMBOLIC_CONST (RTX) ? 2 : 1;    case CONST_DOUBLE:    {    int code;    if (GET_MODE (RTX) == VOIDmode)    return 2;    code = standard_80387_constant_p (RTX);    return code == 1 ? 0 :    code == 2 ? 1 :    2;    }
  1754. # 1890 ".\\..\\config\\i386/i386.h"
  1755.  
  1756.  
  1757. #define TOPLEVEL_COSTS_N_INSNS(N) {total = COSTS_N_INSNS (N); break;}
  1758.  
  1759.  
  1760.  
  1761.  
  1762.  
  1763.  
  1764.  
  1765.  
  1766.  
  1767.  
  1768.  
  1769. #define RTX_COSTS(X,CODE,OUTER_CODE)    case ASHIFT:    if (GET_CODE (XEXP (X, 1)) == CONST_INT    && GET_MODE (XEXP (X, 0)) == SImode)    {    HOST_WIDE_INT value = INTVAL (XEXP (X, 1));    if (value == 1)    return COSTS_N_INSNS (ix86_cost->add) + rtx_cost(XEXP (X, 0), OUTER_CODE);    if (value == 2 || value == 3)    return COSTS_N_INSNS (ix86_cost->lea)    + rtx_cost(XEXP (X, 0), OUTER_CODE);    }    case ROTATE:    case ASHIFTRT:    case LSHIFTRT:    case ROTATERT:    if (GET_MODE (XEXP (X, 0)) == DImode)    {    if (GET_CODE (XEXP (X, 1)) == CONST_INT)    if (INTVAL (XEXP (X, 1)) > 32)    return COSTS_N_INSNS(ix86_cost->shift_const + 2);    else    return COSTS_N_INSNS(ix86_cost->shift_const * 2);    return ((GET_CODE (XEXP (X, 1)) == AND    ? COSTS_N_INSNS(ix86_cost->shift_var * 2)    : COSTS_N_INSNS(ix86_cost->shift_var * 6 + 2))    + rtx_cost(XEXP (X, 0), OUTER_CODE));    }    return COSTS_N_INSNS (GET_CODE (XEXP (X, 1)) == CONST_INT    ? ix86_cost->shift_const    : ix86_cost->shift_var)    + rtx_cost(XEXP (X, 0), OUTER_CODE);    case MULT:    if (GET_CODE (XEXP (X, 1)) == CONST_INT)    {    unsigned HOST_WIDE_INT value = INTVAL (XEXP (X, 1));    int nbits = 0;    if (value == 2)    return COSTS_N_INSNS (ix86_cost->add)    + rtx_cost(XEXP (X, 0), OUTER_CODE);    if (value == 4 || value == 8)    return COSTS_N_INSNS (ix86_cost->lea)    + rtx_cost(XEXP (X, 0), OUTER_CODE);    while (value != 0)    {    nbits++;    value >>= 1;    } if (nbits == 1)    return COSTS_N_INSNS (ix86_cost->shift_const)    + rtx_cost(XEXP (X, 0), OUTER_CODE);    return COSTS_N_INSNS (ix86_cost->mult_init    + nbits * ix86_cost->mult_bit)    + rtx_cost(XEXP (X, 0), OUTER_CODE);    }    else    TOPLEVEL_COSTS_N_INSNS (ix86_cost->mult_init    + 7 * ix86_cost->mult_bit);    case DIV:    case UDIV:    case MOD:    case UMOD:    TOPLEVEL_COSTS_N_INSNS (ix86_cost->divide);    case PLUS:    if (GET_CODE (XEXP (X, 0)) == REG    && GET_MODE (XEXP (X, 0)) == SImode    && GET_CODE (XEXP (X, 1)) == PLUS)    return COSTS_N_INSNS (ix86_cost->lea);    case AND:    case IOR:    case XOR:    case MINUS:    if (GET_MODE (X) == DImode)    return COSTS_N_INSNS (ix86_cost->add) * 2    + (rtx_cost (XEXP (X, 0), OUTER_CODE)    << (GET_MODE (XEXP (X, 0)) != DImode))    + (rtx_cost (XEXP (X, 1), OUTER_CODE)    << (GET_MODE (XEXP (X, 1)) != DImode));    case NEG:    case NOT:    if (GET_MODE (X) == DImode)    TOPLEVEL_COSTS_N_INSNS (ix86_cost->add * 2)    TOPLEVEL_COSTS_N_INSNS (ix86_cost->add)
  1770. # 2002 ".\\..\\config\\i386/i386.h"
  1771.  
  1772.  
  1773.  
  1774.  
  1775.  
  1776.  
  1777.  
  1778.  
  1779.  
  1780.  
  1781.  
  1782.  
  1783.  
  1784.  
  1785.  
  1786.  
  1787.  
  1788.  
  1789.  
  1790.  
  1791.  
  1792.  
  1793.  
  1794.  
  1795.  
  1796.  
  1797.  
  1798.  
  1799.  
  1800.  
  1801.  
  1802.  
  1803.  
  1804.  
  1805.  
  1806.  
  1807.  
  1808.  
  1809.  
  1810.  
  1811.  
  1812.  
  1813.  
  1814.  
  1815.  
  1816.  
  1817.  
  1818.  
  1819. #define ADDRESS_COST(RTX) ((CONSTANT_P (RTX)    || (GET_CODE (RTX) == PLUS && CONSTANT_P (XEXP (RTX, 1))    && REG_P (XEXP (RTX, 0)))) ? 0    : REG_P (RTX) ? 1    : 2)
  1820.  
  1821.  
  1822.  
  1823.  
  1824.  
  1825.  
  1826.  
  1827.  
  1828.  
  1829.  
  1830.  
  1831.  
  1832.  
  1833.  
  1834.  
  1835.  
  1836.  
  1837. #define REGISTER_MOVE_COST(CLASS1, CLASS2)    (((FLOAT_CLASS_P (CLASS1) && ! FLOAT_CLASS_P (CLASS2))    || (! FLOAT_CLASS_P (CLASS1) && FLOAT_CLASS_P (CLASS2))) ? 10    : 2)
  1838.  
  1839.  
  1840.  
  1841.  
  1842.  
  1843.  
  1844.  
  1845.  
  1846.  
  1847.  
  1848.  
  1849.  
  1850.  
  1851.  
  1852.  
  1853.  
  1854.  
  1855.  
  1856. #define BRANCH_COST i386_branch_cost
  1857.  
  1858.  
  1859.  
  1860.  
  1861.  
  1862.  
  1863.  
  1864.  
  1865.  
  1866.  
  1867.  
  1868.  
  1869.  
  1870.  
  1871.  
  1872. #define SLOW_BYTE_ACCESS 0
  1873.  
  1874.  
  1875. #define SLOW_SHORT_ACCESS 0
  1876.  
  1877.  
  1878.  
  1879.  
  1880.  
  1881.  
  1882.  
  1883.  
  1884.  
  1885.  
  1886.  
  1887.  
  1888.  
  1889.  
  1890.  
  1891.  
  1892.  
  1893.  
  1894.  
  1895.  
  1896.  
  1897.  
  1898.  
  1899.  
  1900.  
  1901.  
  1902.  
  1903.  
  1904.  
  1905.  
  1906.  
  1907.  
  1908.  
  1909.  
  1910.  
  1911.  
  1912.  
  1913.  
  1914.  
  1915.  
  1916. #define NO_FUNCTION_CSE
  1917.  
  1918.  
  1919.  
  1920.  
  1921.  
  1922. #define NO_RECURSIVE_FUNCTION_CSE
  1923.  
  1924.  
  1925.  
  1926.  
  1927.  
  1928.  
  1929.  
  1930.  
  1931. #define ADJUST_COST(insn,link,dep_insn,cost)    {    rtx next_inst;    if (GET_CODE (dep_insn) == CALL_INSN)    (cost) = 0;    else if (GET_CODE (dep_insn) == INSN    && GET_CODE (PATTERN (dep_insn)) == SET    && GET_CODE (SET_DEST (PATTERN (dep_insn))) == REG    && GET_CODE (insn) == INSN    && GET_CODE (PATTERN (insn)) == SET    && !reg_overlap_mentioned_p (SET_DEST (PATTERN (dep_insn)),    SET_SRC (PATTERN (insn))))    {    (cost) = 0;    }    else if (GET_CODE (insn) == JUMP_INSN)    {    (cost) = 0;    }    if (TARGET_PENTIUM)    {    if (cost !=0 && is_fp_insn (insn) && is_fp_insn (dep_insn)    && !is_fp_dest (dep_insn))    {    (cost) = 0;    }    if (agi_dependent (insn, dep_insn))    {    (cost) = 3;    }    else if (GET_CODE (insn) == INSN    && GET_CODE (PATTERN (insn)) == SET    && SET_DEST (PATTERN (insn)) == cc0_rtx    && (next_inst = next_nonnote_insn (insn))    && GET_CODE (next_inst) == JUMP_INSN)    { (cost) = 0;    }    }    else    if (!is_fp_dest (dep_insn))    {    if(!agi_dependent (insn, dep_insn))    (cost) = 0;    else if (TARGET_486)    (cost) = 2;    }    else    if (is_fp_store (insn) && is_fp_insn (dep_insn)    && NEXT_INSN (insn) && NEXT_INSN (NEXT_INSN (insn))    && NEXT_INSN (NEXT_INSN (NEXT_INSN (insn)))    && (GET_CODE (NEXT_INSN (insn)) == INSN)    && (GET_CODE (NEXT_INSN (NEXT_INSN (insn))) == JUMP_INSN)    && (GET_CODE (NEXT_INSN (NEXT_INSN (NEXT_INSN (insn)))) == NOTE) && (NOTE_LINE_NUMBER (NEXT_INSN (NEXT_INSN (NEXT_INSN (insn)))) == NOTE_INSN_LOOP_END))    {    (cost) = 3;    }    }
  1932. # 2226 ".\\..\\config\\i386/i386.h"
  1933.  
  1934.  
  1935. #define ADJUST_BLOCKAGE(last_insn,insn,blockage)    {    if (is_fp_store (last_insn) && is_fp_insn (insn)    && NEXT_INSN (last_insn) && NEXT_INSN (NEXT_INSN (last_insn))    && NEXT_INSN (NEXT_INSN (NEXT_INSN (last_insn)))    && (GET_CODE (NEXT_INSN (last_insn)) == INSN)    && (GET_CODE (NEXT_INSN (NEXT_INSN (last_insn))) == JUMP_INSN)    && (GET_CODE (NEXT_INSN (NEXT_INSN (NEXT_INSN (last_insn)))) == NOTE) && (NOTE_LINE_NUMBER (NEXT_INSN (NEXT_INSN (NEXT_INSN (last_insn)))) == NOTE_INSN_LOOP_END))    {    (blockage) = 3;    }    }
  1936. # 2242 ".\\..\\config\\i386/i386.h"
  1937.  
  1938.  
  1939.  
  1940.  
  1941.  
  1942.  
  1943.  
  1944. #define EXTRA_CC_MODES CCFPEQmode
  1945.  
  1946.  
  1947. #define EXTRA_CC_NAMES "CCFPEQ"
  1948.  
  1949.  
  1950.  
  1951.  
  1952.  
  1953.  
  1954.  
  1955. #define SELECT_CC_MODE(OP,X,Y) (GET_MODE_CLASS (GET_MODE (X)) == MODE_FLOAT    && ((OP) == EQ || (OP) == NE) ? CCFPEQmode : VOIDmode)
  1956.  
  1957.  
  1958.  
  1959.  
  1960.  
  1961.  
  1962.  
  1963. extern struct rtx_def *(*i386_compare_gen)(), *(*i386_compare_gen_eq)();
  1964.  
  1965.  
  1966.  
  1967.  
  1968.  
  1969.  
  1970.  
  1971.  
  1972. #define CC_TEST_AX 020000
  1973.  
  1974.  
  1975.  
  1976. #define CC_IN_80387 04000
  1977.  
  1978.  
  1979.  
  1980. #define CC_Z_IN_NOT_C 010000
  1981.  
  1982.  
  1983.  
  1984. #define CC_FCOMI 040000
  1985.  
  1986.  
  1987.  
  1988.  
  1989.  
  1990.  
  1991. #define NOTICE_UPDATE_CC(EXP, INSN) notice_update_cc((EXP))
  1992.  
  1993.  
  1994.  
  1995.  
  1996.  
  1997.  
  1998.  
  1999.  
  2000.  
  2001. #define OUTPUT_JUMP(NORMAL, FLOAT, NO_OV)    {    if (cc_prev_status.flags & CC_IN_80387)    return FLOAT;    if (cc_prev_status.flags & CC_NO_OVERFLOW)    return NO_OV;    return NORMAL;    }
  2002.  
  2003.  
  2004.  
  2005.  
  2006.  
  2007.  
  2008.  
  2009.  
  2010.  
  2011.  
  2012.  
  2013.  
  2014.  
  2015.  
  2016.  
  2017.  
  2018.  
  2019.  
  2020.  
  2021.  
  2022. #define HI_REGISTER_NAMES {"ax","dx","cx","bx","si","di","bp","sp", "st","st(1)","st(2)","st(3)","st(4)","st(5)","st(6)","st(7)","" }
  2023.  
  2024.  
  2025.  
  2026. #define REGISTER_NAMES HI_REGISTER_NAMES
  2027.  
  2028.  
  2029.  
  2030. #define ADDITIONAL_REGISTER_NAMES { "eax", 0, "edx", 1, "ecx", 2, "ebx", 3,    "esi", 4, "edi", 5, "ebp", 6, "esp", 7,    "al", 0, "dl", 1, "cl", 2, "bl", 3,    "ah", 0, "dh", 1, "ch", 2, "bh", 3 }
  2031.  
  2032.  
  2033.  
  2034.  
  2035.  
  2036.  
  2037.  
  2038.  
  2039.  
  2040.  
  2041.  
  2042.  
  2043.  
  2044.  
  2045. #define QI_REGISTER_NAMES {"al", "dl", "cl", "bl", "si", "di", "bp", "sp",}
  2046.  
  2047.  
  2048.  
  2049.  
  2050.  
  2051. #define QI_HIGH_REGISTER_NAMES {"ah", "dh", "ch", "bh", }
  2052.  
  2053.  
  2054.  
  2055.  
  2056.  
  2057. #define DBX_REGISTER_NUMBER(n) ((n) == 0 ? 0 : (n) == 1 ? 2 : (n) == 2 ? 1 : (n) == 3 ? 3 : (n) == 4 ? 6 : (n) == 5 ? 7 : (n) == 6 ? 4 : (n) == 7 ? 5 : (n) + 4)
  2058. # 2372 ".\\..\\config\\i386/i386.h"
  2059.  
  2060.  
  2061. #define INCOMING_RETURN_ADDR_RTX gen_rtx (MEM, VOIDmode, gen_rtx (REG, VOIDmode, STACK_POINTER_REGNUM))
  2062.  
  2063.  
  2064.  
  2065. #define RETURN_ADDR_RTX(COUNT, FRAME)    ((COUNT) == 0    ? gen_rtx (MEM, Pmode, gen_rtx (PLUS, Pmode, arg_pointer_rtx, GEN_INT(-4))) : gen_rtx (MEM, Pmode, gen_rtx (PLUS, Pmode, (FRAME), GEN_INT(4))))
  2066.  
  2067.  
  2068.  
  2069.  
  2070.  
  2071. #define DWARF_FRAME_RETURN_COLUMN     8
  2072.  
  2073.  
  2074. #define INCOMING_FRAME_SP_OFFSET 4
  2075.  
  2076.  
  2077.  
  2078.  
  2079. #define ASM_OUTPUT_LABEL(FILE,NAME)    (assemble_name (FILE, NAME), fputs (":\n", FILE))
  2080.  
  2081.  
  2082.  
  2083.  
  2084. #define ASM_OUTPUT_DOUBLE(FILE,VALUE)    do { long l[2];    REAL_VALUE_TO_TARGET_DOUBLE (VALUE, l);    if (sizeof (int) == sizeof (long))    fprintf (FILE, "%s 0x%x,0x%x\n", ASM_LONG, l[0], l[1]);    else    fprintf (FILE, "%s 0x%lx,0x%lx\n", ASM_LONG, l[0], l[1]);    } while (0)
  2085.  
  2086.  
  2087.  
  2088.  
  2089.  
  2090.  
  2091.  
  2092.  
  2093.  
  2094.  
  2095. #undef ASM_OUTPUT_LONG_DOUBLE
  2096. #define ASM_OUTPUT_LONG_DOUBLE(FILE,VALUE) do { long l[3];    REAL_VALUE_TO_TARGET_LONG_DOUBLE (VALUE, l);    if (sizeof (int) == sizeof (long))    fprintf (FILE, "%s 0x%x,0x%x,0x%x\n", ASM_LONG, l[0], l[1], l[2]); else    fprintf (FILE, "%s 0x%lx,0x%lx,0x%lx\n", ASM_LONG, l[0], l[1], l[2]); } while (0)
  2097.  
  2098.  
  2099.  
  2100.  
  2101.  
  2102.  
  2103.  
  2104.  
  2105.  
  2106.  
  2107. #define ASM_OUTPUT_FLOAT(FILE,VALUE)    do { long l;    REAL_VALUE_TO_TARGET_SINGLE (VALUE, l);    if (sizeof (int) == sizeof (long))    fprintf ((FILE), "%s 0x%x\n", ASM_LONG, l);    else    fprintf ((FILE), "%s 0x%lx\n", ASM_LONG, l);    } while (0)
  2108.  
  2109.  
  2110.  
  2111.  
  2112.  
  2113.  
  2114.  
  2115.  
  2116.  
  2117.  
  2118.  
  2119.  
  2120. #define ASM_FORMAT_PRIVATE_NAME(OUTPUT, NAME, LABELNO)    ( (OUTPUT) = (char *) alloca (strlen ((NAME)) + 10),    sprintf ((OUTPUT), "%s.%d", (NAME), (LABELNO)))
  2121.  
  2122.  
  2123.  
  2124.  
  2125.  
  2126.  
  2127.  
  2128. #define ASM_OUTPUT_INT(FILE,VALUE) ( fprintf (FILE, "%s ", ASM_LONG),    output_addr_const (FILE,(VALUE)),    putc('\n',FILE))
  2129.  
  2130.  
  2131.  
  2132.  
  2133.  
  2134.  
  2135.  
  2136. #define ASM_OUTPUT_SHORT(FILE,VALUE) ( fprintf (FILE, "%s ", ASM_SHORT),    output_addr_const (FILE,(VALUE)),    putc('\n',FILE))
  2137.  
  2138.  
  2139.  
  2140.  
  2141.  
  2142.  
  2143.  
  2144.  
  2145.  
  2146.  
  2147.  
  2148.  
  2149.  
  2150.  
  2151. #define ASM_OUTPUT_CHAR(FILE,VALUE) ( fprintf (FILE, "%s ", ASM_BYTE_OP),    output_addr_const (FILE, (VALUE)),    putc ('\n', FILE))
  2152.  
  2153.  
  2154.  
  2155.  
  2156.  
  2157.  
  2158. #define ASM_OUTPUT_BYTE(FILE,VALUE) fprintf ((FILE), "%s 0x%x\n", ASM_BYTE_OP, (VALUE))
  2159.  
  2160.  
  2161.  
  2162.  
  2163.  
  2164. #define ASM_OUTPUT_REG_PUSH(FILE,REGNO) fprintf (FILE, "\tpushl %%e%s\n", reg_names[REGNO])
  2165.  
  2166.  
  2167.  
  2168.  
  2169.  
  2170. #define ASM_OUTPUT_REG_POP(FILE,REGNO) fprintf (FILE, "\tpopl %%e%s\n", reg_names[REGNO])
  2171.  
  2172.  
  2173.  
  2174.  
  2175.  
  2176. #define ASM_OUTPUT_ADDR_VEC_ELT(FILE, VALUE) fprintf (FILE, "%s %s%d\n", ASM_LONG, LPREFIX, VALUE)
  2177.  
  2178.  
  2179.  
  2180.  
  2181.  
  2182.  
  2183.  
  2184. #define ASM_OUTPUT_ADDR_DIFF_ELT(FILE, VALUE, REL) fprintf (FILE, "\t.word %s%d-%s%d\n",LPREFIX, VALUE,LPREFIX, REL)
  2185.  
  2186.  
  2187.  
  2188.  
  2189.  
  2190. #define ASM_OPEN_PAREN ""
  2191. #define ASM_CLOSE_PAREN ""
  2192.  
  2193.  
  2194. #define TARGET_BELL 007
  2195. #define TARGET_BS 010
  2196. #define TARGET_TAB 011
  2197. #define TARGET_NEWLINE 012
  2198. #define TARGET_VT 013
  2199. #define TARGET_FF 014
  2200. #define TARGET_CR 015
  2201.  
  2202.  
  2203.  
  2204.  
  2205.  
  2206.  
  2207.  
  2208.  
  2209.  
  2210.  
  2211.  
  2212.  
  2213.  
  2214.  
  2215.  
  2216.  
  2217. #define PRINT_OPERAND_PUNCT_VALID_P(CODE)    ((CODE) == '*')
  2218.  
  2219.  
  2220.  
  2221.  
  2222.  
  2223.  
  2224.  
  2225.  
  2226.  
  2227. extern char *hi_reg_name[];
  2228. extern char *qi_reg_name[];
  2229. extern char *qi_high_reg_name[];
  2230.  
  2231. #define PRINT_REG(X, CODE, FILE) do { if (REGNO (X) == ARG_POINTER_REGNUM)    abort ();    fprintf (FILE, "%s", RP);    switch ((CODE == 'w' ? 2 : CODE == 'b' ? 1    : CODE == 'k' ? 4    : CODE == 'y' ? 3    : CODE == 'h' ? 0    : GET_MODE_SIZE (GET_MODE (X))))    {    case 3:    if (STACK_TOP_P (X))    {    fputs ("st(0)", FILE);    break;    }    case 4:    case 8:    case 12:    if (! FP_REG_P (X)) fputs ("e", FILE);    case 2:    fputs (hi_reg_name[REGNO (X)], FILE);    break;    case 1:    fputs (qi_reg_name[REGNO (X)], FILE);    break;    case 0:    fputs (qi_high_reg_name[REGNO (X)], FILE);    break;    }    } while (0)
  2232. # 2576 ".\\..\\config\\i386/i386.h"
  2233.  
  2234. #define PRINT_OPERAND(FILE, X, CODE) print_operand (FILE, X, CODE)
  2235.  
  2236.  
  2237. #define PRINT_OPERAND_ADDRESS(FILE, ADDR) print_operand_address (FILE, ADDR)
  2238.  
  2239.  
  2240.  
  2241.  
  2242.  
  2243.  
  2244.  
  2245. #define DEBUG_PRINT_REG(X, CODE, FILE) do { static char *hi_name[] = HI_REGISTER_NAMES;    static char *qi_name[] = QI_REGISTER_NAMES;    fprintf (FILE, "%d %s", REGNO (X), RP);    if (REGNO (X) == ARG_POINTER_REGNUM)    { fputs ("argp", FILE); break; }    if (STACK_TOP_P (X))    { fputs ("st(0)", FILE); break; }    if (FP_REG_P (X))    { fputs (hi_name[REGNO(X)], FILE); break; }    switch (GET_MODE_SIZE (GET_MODE (X)))    {    default:    fputs ("e", FILE);    case 2:    fputs (hi_name[REGNO (X)], FILE);    break;    case 1:    fputs (qi_name[REGNO (X)], FILE);    break;    }    } while (0)
  2246. # 2610 ".\\..\\config\\i386/i386.h"
  2247.  
  2248.  
  2249. #define PRINT_IMMED_PREFIX(FILE)  fputs (IP, (FILE))
  2250. #define PRINT_OFFSET_PREFIX(FILE)  fputs (IP, (FILE))
  2251.  
  2252.  
  2253.  
  2254.  
  2255.  
  2256. #define FLOAT_VALUE_TYPE float
  2257. #define INTIFY(FLOATVAL) FLOATVAL
  2258.  
  2259.  
  2260.  
  2261.  
  2262.  
  2263.  
  2264.  
  2265.  
  2266.  
  2267.  
  2268.  
  2269. #define ASM_OPERAND_LETTER '#'
  2270. #define RET return ""
  2271. #define AT_SP(mode) (gen_rtx (MEM, (mode), stack_pointer_rtx))
  2272.  
  2273.  
  2274. #define IX86_EXPAND_BINARY_OPERATOR(OP, MODE, OPERANDS)    do {    if (!ix86_expand_binary_operator (OP, MODE, OPERANDS))    FAIL;    } while (0)
  2275.  
  2276.  
  2277.  
  2278.  
  2279.  
  2280. #define IX86_EXPAND_UNARY_OPERATOR(OP, MODE, OPERANDS)    do {    if (!ix86_expand_unary_operator (OP, MODE, OPERANDS,))    FAIL;    } while (0)
  2281.  
  2282.  
  2283.  
  2284.  
  2285.  
  2286.  
  2287.  
  2288. extern void override_options ();
  2289. extern void order_regs_for_local_alloc ();
  2290. extern char *output_strlen_unroll ();
  2291. extern struct rtx_def *i386_sext16_if_const ();
  2292. extern int i386_aligned_p ();
  2293. extern int i386_cc_probably_useless_p ();
  2294. extern int i386_valid_decl_attribute_p ();
  2295. extern int i386_valid_type_attribute_p ();
  2296. extern int i386_return_pops_args ();
  2297. extern int i386_comp_type_attributes ();
  2298. extern void init_cumulative_args ();
  2299. extern void function_arg_advance ();
  2300. extern struct rtx_def *function_arg ();
  2301. extern int function_arg_partial_nregs ();
  2302. extern char *output_strlen_unroll ();
  2303. extern void output_op_from_reg ();
  2304. extern void output_to_reg ();
  2305. extern char *singlemove_string ();
  2306. extern char *output_move_double ();
  2307. extern char *output_move_memory ();
  2308. extern char *output_move_pushmem ();
  2309. extern int standard_80387_constant_p ();
  2310. extern char *output_move_const_single ();
  2311. extern int symbolic_operand ();
  2312. extern int call_insn_operand ();
  2313. extern int expander_call_insn_operand ();
  2314. extern int symbolic_reference_mentioned_p ();
  2315. extern int ix86_expand_binary_operator ();
  2316. extern int ix86_binary_operator_ok ();
  2317. extern int ix86_expand_unary_operator ();
  2318. extern int ix86_unary_operator_ok ();
  2319. extern void emit_pic_move ();
  2320. extern void function_prologue ();
  2321. extern int simple_386_epilogue ();
  2322. extern void function_epilogue ();
  2323. extern int legitimate_address_p ();
  2324. extern struct rtx_def *legitimize_pic_address ();
  2325. extern struct rtx_def *legitimize_address ();
  2326. extern void print_operand ();
  2327. extern void print_operand_address ();
  2328. extern void notice_update_cc ();
  2329. extern void split_di ();
  2330. extern int binary_387_op ();
  2331. extern int shift_op ();
  2332. extern int VOIDmode_compare_op ();
  2333. extern char *output_387_binary_op ();
  2334. extern char *output_fix_trunc ();
  2335. extern char *output_float_compare ();
  2336. extern char *output_fp_cc0_set ();
  2337. extern void save_386_machine_status ();
  2338. extern void restore_386_machine_status ();
  2339. extern void clear_386_stack_locals ();
  2340. extern struct rtx_def *assign_386_stack_local ();
  2341. extern int is_mul ();
  2342. extern int is_div ();
  2343. extern int last_to_set_cc ();
  2344. extern int doesnt_set_condition_code ();
  2345. extern int sets_condition_code ();
  2346. extern int str_immediate_operand ();
  2347. extern int is_fp_insn ();
  2348. extern int is_fp_dest ();
  2349. extern int is_fp_store ();
  2350. extern int agi_dependent ();
  2351. extern int reg_mentioned_in_mem ();
  2352.  
  2353.  
  2354.  
  2355.  
  2356.  
  2357.  
  2358.  
  2359. extern char *ix86_cpu_string;             
  2360. extern char *ix86_arch_string;             
  2361. extern char *i386_reg_alloc_order;         
  2362. extern char *i386_regparm_string;         
  2363. extern char *i386_align_loops_string;         
  2364. extern char *i386_align_jumps_string;         
  2365. extern char *i386_align_funcs_string;         
  2366. extern char *i386_branch_cost_string;         
  2367. extern int i386_regparm;             
  2368. extern int i386_align_loops;             
  2369. extern int i386_align_jumps;             
  2370. extern int i386_align_funcs;             
  2371. extern int i386_branch_cost;             
  2372. extern char *hi_reg_name[];             
  2373. extern char *qi_reg_name[];             
  2374. extern char *qi_high_reg_name[];         
  2375. extern enum reg_class regclass_map[];         
  2376. extern struct rtx_def *i386_compare_op0;     
  2377. extern struct rtx_def *i386_compare_op1;     
  2378.  
  2379.  
  2380. extern int optimize;                 
  2381. extern int obey_regdecls;             
  2382.  
  2383.  
  2384. extern struct rtx_def *force_operand ();
  2385.  
  2386.  
  2387.  
  2388.  
  2389.  
  2390.  
  2391.  
  2392. # 24 ".\\..\\config\\i386/gas.h" 2
  2393.  
  2394.  
  2395.  
  2396.  
  2397.  
  2398.  
  2399.  
  2400.  
  2401.  
  2402.  
  2403.  
  2404.  
  2405.  
  2406.  
  2407.  
  2408.  
  2409.  
  2410.  
  2411.  
  2412.  
  2413.  
  2414.  
  2415.  
  2416. # 1 ".\\..\\config\\i386/bsd.h" 1
  2417.  
  2418.  
  2419.  
  2420.  
  2421.  
  2422.  
  2423.  
  2424.  
  2425.  
  2426.  
  2427.  
  2428.  
  2429.  
  2430.  
  2431.  
  2432.  
  2433.  
  2434.  
  2435.  
  2436.  
  2437.  
  2438.  
  2439.  
  2440. # 1 ".\\..\\config\\i386/unix.h" 1
  2441.  
  2442.  
  2443.  
  2444.  
  2445.  
  2446.  
  2447.  
  2448.  
  2449.  
  2450.  
  2451.  
  2452.  
  2453.  
  2454.  
  2455.  
  2456.  
  2457.  
  2458.  
  2459.  
  2460.  
  2461.  
  2462.  
  2463.  
  2464.  
  2465.  
  2466.  
  2467.  
  2468.  
  2469.  
  2470.  
  2471.  
  2472.  
  2473. #define AS2(a,b,c) #a " " #b "," #c
  2474. #define AS2C(b,c) " " #b "," #c
  2475. #define AS3(a,b,c,d) #a " " #b "," #c "," #d
  2476. #define AS1(a,b) #a " " #b
  2477.  
  2478.  
  2479.  
  2480.  
  2481.  
  2482.  
  2483.  
  2484.  
  2485.  
  2486.  
  2487.  
  2488. #define SHIFT_DOUBLE_OMITS_COUNT 1
  2489. #define AS3_SHIFT_DOUBLE(a,b,c,d) (SHIFT_DOUBLE_OMITS_COUNT ? AS2 (a,c,d) : AS3 (a,b,c,d))
  2490.  
  2491.  
  2492.  
  2493.  
  2494.  
  2495.  
  2496. #define PUT_OP_SIZE(CODE,CH,FILE) putc (CH,(FILE))
  2497.  
  2498.  
  2499. #define L_SIZE "l"
  2500.  
  2501.  
  2502. #define RP "%"
  2503.  
  2504.  
  2505. #define IP "$"
  2506.  
  2507.  
  2508. #define USE_STAR 1
  2509.  
  2510.  
  2511. #define PRINT_PTR(X, FILE)
  2512.  
  2513.  
  2514. #define ADDR_BEG(FILE) putc('(', (FILE))
  2515. #define ADDR_END(FILE) putc(')', (FILE))
  2516.  
  2517.  
  2518. #define PRINT_IREG(FILE,IREG) do    { fputs (",", (FILE)); PRINT_REG ((IREG), 0, (FILE)); }    while (0)
  2519.  
  2520.  
  2521.  
  2522.   
  2523.  
  2524. #define PRINT_SCALE(FILE,SCALE) if ((SCALE) != 1) fprintf ((FILE), ",%d", (SCALE))
  2525.  
  2526.  
  2527.  
  2528.  
  2529.  
  2530.  
  2531. #define PRINT_B_I_S(BREG,IREG,SCALE,FILE) { ADDR_BEG (FILE); if (BREG) PRINT_REG ((BREG), 0, (FILE));    if ((IREG) != 0)    { PRINT_IREG ((FILE), (IREG));    PRINT_SCALE ((FILE), (SCALE)); }    ADDR_END (FILE); }
  2532.  
  2533.  
  2534.  
  2535.  
  2536.  
  2537.  
  2538.  
  2539.  
  2540.  
  2541.  
  2542.  
  2543. #define ASM_COMMENT_START "/"
  2544.  
  2545.  
  2546.  
  2547.  
  2548. #define ASM_APP_ON "/APP\n"
  2549.  
  2550.  
  2551.  
  2552.  
  2553. #define ASM_APP_OFF "/NO_APP\n"
  2554.  
  2555.  
  2556.  
  2557. #define TEXT_SECTION_ASM_OP ".text"
  2558.  
  2559.  
  2560.  
  2561. #define DATA_SECTION_ASM_OP ".data"
  2562.  
  2563.  
  2564.  
  2565. #define BSS_SECTION_ASM_OP ".bss"
  2566.  
  2567.  
  2568.  
  2569.  
  2570. #define ASM_GLOBALIZE_LABEL(FILE,NAME)    (fputs (".globl ", FILE), assemble_name (FILE, NAME), fputs ("\n", FILE))
  2571.  
  2572.  
  2573.  
  2574.  
  2575.  
  2576.  
  2577. #define TARGET_DEFAULT 0301
  2578.  
  2579.  
  2580.  
  2581. #define VALUE_REGNO(MODE) (GET_MODE_CLASS (MODE) == MODE_FLOAT    && TARGET_FLOAT_RETURNS_IN_80387 ? FIRST_FLOAT_REG : 0)
  2582.  
  2583.  
  2584.  
  2585.  
  2586.  
  2587. #define FUNCTION_VALUE_REGNO_P(N) ((N) == 0 || ((N)== FIRST_FLOAT_REG && TARGET_FLOAT_RETURNS_IN_80387))
  2588.  
  2589.  
  2590.  
  2591.  
  2592. #define ASM_OUTPUT_MI_THUNK(FILE, THUNK_FNDECL, DELTA, FUNCTION)    do {    tree parm;    if (i386_regparm > 0)    parm = TYPE_ARG_TYPES (TREE_TYPE (function));    else    parm = NULL_TREE;    for (; parm; parm = TREE_CHAIN (parm))    if (TREE_VALUE (parm) == void_type_node)    break;    fprintf (FILE, "\taddl $%d,%s\n", DELTA,    parm ? "%eax"    : aggregate_value_p (TREE_TYPE (TREE_TYPE (FUNCTION))) ? "8(%esp)" : "4(%esp)");    if (flag_pic)    {    rtx xops[2];    xops[0] = pic_offset_table_rtx;    xops[1] = (rtx) gen_label_rtx ();    if (i386_regparm > 2)    abort ();    output_asm_insn ("push%L0 %0", xops);    output_asm_insn (AS1 (call,%P1), xops);    ASM_OUTPUT_INTERNAL_LABEL (FILE, "L", CODE_LABEL_NUMBER (xops[1])); output_asm_insn (AS1 (pop%L0,%0), xops);    output_asm_insn ("addl $_GLOBAL_OFFSET_TABLE_+[.-%P1],%0", xops);    fprintf (FILE, "\tmovl ");    assemble_name    (FILE, IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (FUNCTION)));    fprintf (FILE, "@GOT(%%ebx),%%ecx\n\tpopl %%ebx\n\tjmp *%%ecx\n"); }    else    {    fprintf (FILE, "\tjmp ");    assemble_name    (FILE, IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (FUNCTION)));    fprintf (FILE, "\n");    }    } while (0)
  2593. # 194 ".\\..\\config\\i386/unix.h"
  2594. # 24 ".\\..\\config\\i386/bsd.h" 2
  2595.  
  2596.  
  2597.  
  2598.  
  2599. #define TARGET_VERSION fprintf (stderr, " (80386, BSD syntax)");
  2600.  
  2601.  
  2602.  
  2603.  
  2604.  
  2605.  
  2606.  
  2607.  
  2608.  
  2609. #define LPREFIX "L"
  2610.  
  2611.  
  2612.  
  2613.  
  2614. #define ASM_BYTE_OP "\t.byte"
  2615. #define ASM_SHORT "\t.word"
  2616. #define ASM_LONG "\t.long"
  2617. #define ASM_DOUBLE "\t.double"
  2618.  
  2619.  
  2620.  
  2621.  
  2622. #define ASM_FILE_START(FILE) do {    fprintf (FILE, "\t.file\t");    output_quoted_string (FILE, dump_base_name);    fprintf (FILE, "\n");    } while (0)
  2623.  
  2624.  
  2625.  
  2626.  
  2627.  
  2628.  
  2629.  
  2630.  
  2631.  
  2632.  
  2633.  
  2634.  
  2635.  
  2636.  
  2637. #define ASM_OUTPUT_SKIP(FILE,SIZE) fprintf (FILE, "\t.space %u\n", (SIZE))
  2638.  
  2639.  
  2640.  
  2641.  
  2642.  
  2643.  
  2644.  
  2645. #define ASM_OUTPUT_COMMON(FILE, NAME, SIZE, ROUNDED) ( fputs (".comm ", (FILE)),    assemble_name ((FILE), (NAME)),    fprintf ((FILE), ",%u\n", (ROUNDED)))
  2646.  
  2647.  
  2648.  
  2649.  
  2650.  
  2651.  
  2652.  
  2653. #define ASM_OUTPUT_LOCAL(FILE, NAME, SIZE, ROUNDED) ( fputs (".lcomm ", (FILE)),    assemble_name ((FILE), (NAME)),    fprintf ((FILE), ",%u\n", (ROUNDED)))
  2654.  
  2655.  
  2656.  
  2657.  
  2658.  
  2659.  
  2660.  
  2661.  
  2662. #define ASM_OUTPUT_ALIGN(FILE,LOG)    if ((LOG)!=0) fprintf ((FILE), "\t.align %d\n", (LOG))
  2663.  
  2664.  
  2665.  
  2666.  
  2667.  
  2668.  
  2669.  
  2670.  
  2671.  
  2672.  
  2673.  
  2674. #define ASM_GENERATE_INTERNAL_LABEL(BUF,PREFIX,NUMBER)    sprintf ((BUF), "*%s%d", (PREFIX), (NUMBER))
  2675.  
  2676.  
  2677.  
  2678.  
  2679.  
  2680.  
  2681.  
  2682.  
  2683.  
  2684.  
  2685. #define ASM_OUTPUT_INTERNAL_LABEL(FILE,PREFIX,NUM)    fprintf (FILE, "%s%d:\n", PREFIX, NUM)
  2686.  
  2687.  
  2688.  
  2689.  
  2690.  
  2691.  
  2692.  
  2693.  
  2694. #define USER_LABEL_PREFIX "_"
  2695.  
  2696.  
  2697.  
  2698. #define DBX_NO_XREFS 1
  2699.  
  2700.  
  2701. #define DBX_CONTIN_LENGTH 0
  2702. # 47 ".\\..\\config\\i386/gas.h" 2
  2703.  
  2704.  
  2705.  
  2706. #undef DBX_NO_XREFS
  2707. #undef DBX_CONTIN_LENGTH
  2708.  
  2709.  
  2710.  
  2711. #define SDB_DEBUGGING_INFO
  2712.  
  2713.  
  2714.  
  2715. #define CPP_PREDEFINES "-Dunix"
  2716. #define CPP_SPEC "%(cpp_cpu) %[cpp_cpu] %{posix:-D_POSIX_SOURCE}"
  2717.  
  2718.  
  2719.  
  2720. #define SCCS_DIRECTIVE
  2721.  
  2722.  
  2723.  
  2724. #define ASM_OUTPUT_IDENT(FILE, NAME) fprintf (FILE, "\t.ident \"%s\"\n", NAME);
  2725.  
  2726.  
  2727.  
  2728. #define TARGET_MEM_FUNCTIONS
  2729.  
  2730.  
  2731.  
  2732.  
  2733.  
  2734.  
  2735.  
  2736.  
  2737.  
  2738.  
  2739.  
  2740.  
  2741.  
  2742.  
  2743.  
  2744.  
  2745.  
  2746.  
  2747.  
  2748. #undef ASM_OUTPUT_ALIGN_CODE
  2749. #define ASM_OUTPUT_ALIGN_CODE(FILE) fprintf ((FILE), "\t.align %d,0x90\n", i386_align_jumps)
  2750.  
  2751.  
  2752.  
  2753.  
  2754. #undef ASM_OUTPUT_LOOP_ALIGN
  2755. #define ASM_OUTPUT_LOOP_ALIGN(FILE) fprintf ((FILE), "\t.align %d,0x90\n", i386_align_loops)
  2756.  
  2757.  
  2758.  
  2759.  
  2760.  
  2761.  
  2762.  
  2763.  
  2764.  
  2765.  
  2766.  
  2767. #define ASM_OUTPUT_OPCODE(STREAM, PTR)    {    if ((PTR)[0] == 'r'    && (PTR)[1] == 'e'    && (PTR)[2] == 'p')    {    if ((PTR)[3] == 'z')    {    fprintf (STREAM, "repe");    (PTR) += 4;    }    else if ((PTR)[3] == 'n' && (PTR)[4] == 'z')    {    fprintf (STREAM, "repne");    (PTR) += 5;    }    }    }
  2768. # 129 ".\\..\\config\\i386/gas.h"
  2769.  
  2770.  
  2771.  
  2772.  
  2773.  
  2774.  
  2775.  
  2776. #undef SHIFT_DOUBLE_OMITS_COUNT
  2777. #define SHIFT_DOUBLE_OMITS_COUNT 0
  2778.  
  2779.  
  2780. #define GAS_MNEMONICS 1
  2781.  
  2782. # 162 ".\\..\\config\\i386/gas.h"
  2783.  
  2784. # 1 ".\\..\\config\\i386/gstabs.h" 2
  2785.  
  2786.  
  2787.  
  2788.  
  2789. #undef SDB_DEBUGGING_INFO
  2790.  
  2791.  
  2792.  
  2793. #define DBX_DEBUGGING_INFO
  2794. # 6 ".\\..\\config\\i386/os2.h" 2
  2795.  
  2796.  
  2797.  
  2798. #define NO_IMPLICIT_EXTERN_C
  2799.  
  2800.  
  2801. #define HANDLE_SYSV_PRAGMA
  2802.  
  2803.  
  2804. #define WCHAR_TYPE              "short unsigned int"
  2805. #define WCHAR_TYPE_SIZE         16
  2806.  
  2807.  
  2808. #undef PCC_BITFIELD_TYPE_MATTERS
  2809. #define PCC_BITFIELD_TYPE_MATTERS 0
  2810.  
  2811.  
  2812. #define DEFAULT_PCC_STRUCT_RETURN 0
  2813.  
  2814.  
  2815.  
  2816.  
  2817.  
  2818.  
  2819. #define DBX_CONTIN_LENGTH 0
  2820.  
  2821.  
  2822. #define WORD_SWITCH_TAKES_ARG(STR) (DEFAULT_WORD_SWITCH_TAKES_ARG (STR) || !strcmp (STR, "Zstack"))
  2823.  
  2824.  
  2825.  
  2826. #undef CPP_PREDEFINES
  2827. #define CPP_PREDEFINES "-D__32BIT__ -D__EMX__ -Di386\
  2828.   -Asystem(unix) -Asystem(emx) -Acpu(i386) -Amachine(i386)"
  2829.  
  2830.  
  2831.  
  2832.  
  2833. #undef CPP_SPEC
  2834. #define CPP_SPEC "%{posix:-D_POSIX_SOURCE} %{Zmt:-D__MT__} \
  2835. %{Zomf} %{ZC++-comments} %{Zc++-comments} %{pg:-D__GPROF__} \
  2836. %{mepilogue:-D__EPILOGUE__}"
  2837.  
  2838.  
  2839.  
  2840.  
  2841. #define ASM_SPEC "%{Zomf} %{s:-Zstrip}"
  2842.  
  2843. #define LINK_SPEC "%{Zexe} %{Zstack*} %{Zmap*} %{Zomf:%{Zdll}}" "%{!o*:-o %b.%{Zdll:dll}%{!Zdll:exe}} " "%{static:%{Zcrtdll=*:%e-static and -Zcrtdll are incompatible}}" "%{Zdll:%{Zexe:%e-Zdll and -Zexe are incompatible}}" "%{Zso:%{!Zsys:%e-Zso requires -Zsys}}" "%{Zso:%{!Zdll:%e-Zso requires -Zdll}}" "%{Zno-rte:%{!Zdll:%e-Zno-rte requires -Zdll}}" "%{Zno-rte:%{!Zomf:%e-Zno-rte requires -Zomf}}" "%{Zno-rte:%{Zsys:%e-Zno-rte and -Zsys are incompatible}}" "%{Zno-rte:%{Zso:%e-Zno-rte and -Zso are incompatible}}" "%{Zno-rte:%{Zcrtdll=*:%e-Zcrtdll and -Zno-rte are incompatible}}" "%{Zno-rte:%{Zmt:%e-Zmt and -Zno-rte are incompatible}}" "%{Zsys:%{Zcrtdll=*:%e-Zcrtdll and -Zsys are incompatible}}" "%{Zsys:%{!Zomf:%e-Zsys requires -Zomf}}" "%{Zsys:%{Zbsd-signals:%e-Zbsd-signals and -Zsys are incompatible}}" "%{Zsys:%{Zsysv-signals:%e-Zsysv-signals and -Zsys are incompatible}}" "%{Zbsd-signals:%{Zsysv-signals:%e-Zbsd-signals and -Zsysv-signals are incompatible}}" "%{Zsmall-conv:%{Zcrtdll=*:%e-Zsmall-conv and -Zcrtdll are incompatible}}"
  2844. # 70 ".\\..\\config\\i386/os2.h"
  2845.  
  2846. #define LIBGCC_SPEC "-lgcc%{pg:_p}"
  2847.  
  2848. #define LIB_SPEC "%{g*:-lg} " "%{p:-lc_p}%{pg:-lc_p} -lc " "%{Zdll:%{Zso:-lc_dllso}%{Zno-rte:-lc_dllnrt}" "%{!Zso:%{!Zno-rte:-lc_dllrt}}}" "%{!Zdll:-lc_app%{pg:_p}} %{p:-lc_p}%{pg:-lc_p} -lc"
  2849.  
  2850.  
  2851.  
  2852.  
  2853.  
  2854.  
  2855. #define STARTFILE_SPEC "%{Zdll:dll0%O%s}" "%{!Zdll:%{pg:gcrt0%O%s}" "%{!pg:%{pn:gcrt0%O%s}%{!pn:%{p:mcrt0%O%s}%{!p:crt0%O%s}}}" " %{Zsysv-signals:sigsysv%O%s} %{Zbsd-signals:sigbsd%O%s}" " %{Zbin-files:binmode%O%s}%{Zsmall-conv:smallcnv%O%s}}"
  2856.  
  2857.  
  2858.  
  2859.  
  2860.  
  2861.  
  2862. #define MASK_EPILOGUE        010000000000    
  2863.  
  2864. #undef SUBTARGET_SWITCHES
  2865. #define SUBTARGET_SWITCHES { "epilogue", MASK_EPILOGUE},    { "no-epilogue", -MASK_EPILOGUE},
  2866.  
  2867.  
  2868.  
  2869.  
  2870. #define TARGET_EPILOGUE (target_flags & MASK_EPILOGUE)
  2871.  
  2872.  
  2873.  
  2874.  
  2875. #undef FUNCTION_PROFILER
  2876. #define FUNCTION_PROFILER(FILE, LABELNO) {    fprintf (FILE, "\tcall __mcount\n");    }
  2877.  
  2878.  
  2879.  
  2880.  
  2881.  
  2882.  
  2883. #undef VALID_MACHINE_TYPE_ATTRIBUTE
  2884. #define VALID_MACHINE_TYPE_ATTRIBUTE(TYPE, ATTRIBUTES, NAME, ARGS) (os2_valid_type_attribute_p (TYPE, ATTRIBUTES, NAME, ARGS))
  2885.  
  2886.  
  2887. #undef RETURN_POPS_ARGS
  2888. #define RETURN_POPS_ARGS(FUNDECL,FUNTYPE,SIZE) (os2_return_pops_args (FUNDECL, FUNTYPE, SIZE))
  2889.  
  2890.  
  2891. # 1 "..\\tm.h" 2
  2892.  
  2893. # 43 ".\\..\\config\\i386/xm-i386.h" 2
  2894.  
  2895. # 2 "../config.h" 2
  2896.  
  2897. # 1 ".\\..\\config\\i386/xm-os2.h" 1
  2898.  
  2899.  
  2900.  
  2901. #define OS2            1
  2902.  
  2903. #define EMX                     1
  2904. #define USG                     1
  2905.  
  2906. #define HAVE_KILL               1
  2907. #define HAVE_PUTENV             1
  2908. #define HAVE_STRERROR           1
  2909. #define HAVE_VPRINTF            1
  2910. #define HAVE_STDLIB_H           1
  2911. #define HAVE_SYS_FILE_H         1
  2912. #define HAVE_SYS_PARAM_H        1
  2913. #define HAVE_SYS_TIMES_H        1
  2914.  
  2915. #define NEED_DECLARATION_INDEX  1
  2916. #define NEED_DECLARATION_RINDEX 1
  2917.  
  2918.  
  2919.  
  2920. #define PATH_SEPARATOR             ';'
  2921.  
  2922.  
  2923. #define DIR_SEPARATOR              '\\'
  2924.  
  2925.  
  2926.  
  2927. #define EXECUTABLE_SUFFIX          ".exe"
  2928.  
  2929.  
  2930.  
  2931. #define MKTEMP_EACH_FILE
  2932.  
  2933. #define strcasecmp stricmp
  2934. # 3 "../config.h" 2
  2935.  
  2936.