diff options
Diffstat (limited to 'gcc/config/i386')
-rw-r--r-- | gcc/config/i386/cygwin32.h | 2 | ||||
-rw-r--r-- | gcc/config/i386/i386.c | 195 | ||||
-rw-r--r-- | gcc/config/i386/i386.h | 68 | ||||
-rw-r--r-- | gcc/config/i386/i386.md | 92 | ||||
-rw-r--r-- | gcc/config/i386/mingw32.h | 8 | ||||
-rw-r--r-- | gcc/config/i386/osfrose.h | 8 | ||||
-rw-r--r-- | gcc/config/i386/win-nt.h | 4 |
7 files changed, 192 insertions, 185 deletions
diff --git a/gcc/config/i386/cygwin32.h b/gcc/config/i386/cygwin32.h index 0e162869603..d639847c3b3 100644 --- a/gcc/config/i386/cygwin32.h +++ b/gcc/config/i386/cygwin32.h @@ -144,7 +144,7 @@ do \ if (lookup_attribute ("stdcall", \ TYPE_ATTRIBUTES (TREE_TYPE (DECL)))) \ XEXP (DECL_RTL (DECL), 0) = \ - gen_rtx (SYMBOL_REF, Pmode, gen_stdcall_suffix (DECL)); \ + gen_rtx_SYMBOL_REF (Pmode, gen_stdcall_suffix (DECL)); \ } \ while (0) #endif diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index 6558bb9dfde..244d28a9521 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -19,9 +19,8 @@ the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "config.h" -#include <stdio.h> +#include "system.h" #include <setjmp.h> -#include <ctype.h> #include "rtl.h" #include "regs.h" #include "hard-reg-set.h" @@ -100,7 +99,7 @@ struct processor_costs pentiumpro_cost = { struct processor_costs *ix86_cost = &pentium_cost; -#define AT_BP(mode) (gen_rtx (MEM, (mode), frame_pointer_rtx)) +#define AT_BP(mode) (gen_rtx_MEM ((mode), frame_pointer_rtx)) extern FILE *asm_out_file; extern char *strcat (); @@ -761,7 +760,7 @@ function_arg (cum, mode, type, named) case HImode: case QImode: if (words <= cum->nregs) - ret = gen_rtx (REG, mode, cum->regno); + ret = gen_rtx_REG (mode, cum->regno); break; } @@ -831,11 +830,11 @@ output_op_from_reg (src, template) if (size > 2 * UNITS_PER_WORD) { - high = gen_rtx (REG, SImode, REGNO (src) + 2); + high = gen_rtx_REG (SImode, REGNO (src) + 2); output_asm_insn (AS1 (push%L0,%0), &high); } - high = gen_rtx (REG, SImode, REGNO (src) + 1); + high = gen_rtx_REG (SImode, REGNO (src) + 1); output_asm_insn (AS1 (push%L0,%0), &high); } @@ -905,7 +904,7 @@ output_to_reg (dest, dies, scratch_mem) if (size > UNITS_PER_WORD) { - dest = gen_rtx (REG, SImode, REGNO (dest) + 1); + dest = gen_rtx_REG (SImode, REGNO (dest) + 1); if (! scratch_mem) output_asm_insn (AS1 (pop%L0,%0), &dest); else @@ -917,7 +916,7 @@ output_to_reg (dest, dies, scratch_mem) if (size > 2 * UNITS_PER_WORD) { - dest = gen_rtx (REG, SImode, REGNO (dest) + 1); + dest = gen_rtx_REG (SImode, REGNO (dest) + 1); if (! scratch_mem) output_asm_insn (AS1 (pop%L0,%0), &dest); else @@ -1071,11 +1070,11 @@ output_move_double (operands) operands[0] = XEXP (XEXP (operands[0], 0), 0); asm_add (-size, operands[0]); if (GET_MODE (operands[1]) == XFmode) - operands[0] = gen_rtx (MEM, XFmode, operands[0]); + operands[0] = gen_rtx_MEM (XFmode, operands[0]); else if (GET_MODE (operands[0]) == DFmode) - operands[0] = gen_rtx (MEM, DFmode, operands[0]); + operands[0] = gen_rtx_MEM (DFmode, operands[0]); else - operands[0] = gen_rtx (MEM, DImode, operands[0]); + operands[0] = gen_rtx_MEM (DImode, operands[0]); optype0 = OFFSOP; } @@ -1085,11 +1084,11 @@ output_move_double (operands) operands[1] = XEXP (XEXP (operands[1], 0), 0); asm_add (-size, operands[1]); if (GET_MODE (operands[1]) == XFmode) - operands[1] = gen_rtx (MEM, XFmode, operands[1]); + operands[1] = gen_rtx_MEM (XFmode, operands[1]); else if (GET_MODE (operands[1]) == DFmode) - operands[1] = gen_rtx (MEM, DFmode, operands[1]); + operands[1] = gen_rtx_MEM (DFmode, operands[1]); else - operands[1] = gen_rtx (MEM, DImode, operands[1]); + operands[1] = gen_rtx_MEM (DImode, operands[1]); optype1 = OFFSOP; } @@ -1115,8 +1114,8 @@ output_move_double (operands) { if (optype0 == REGOP) { - middlehalf[0] = gen_rtx (REG, SImode, REGNO (operands[0]) + 1); - latehalf[0] = gen_rtx (REG, SImode, REGNO (operands[0]) + 2); + middlehalf[0] = gen_rtx_REG (SImode, REGNO (operands[0]) + 1); + latehalf[0] = gen_rtx_REG (SImode, REGNO (operands[0]) + 2); } else if (optype0 == OFFSOP) { @@ -1131,8 +1130,8 @@ output_move_double (operands) if (optype1 == REGOP) { - middlehalf[1] = gen_rtx (REG, SImode, REGNO (operands[1]) + 1); - latehalf[1] = gen_rtx (REG, SImode, REGNO (operands[1]) + 2); + middlehalf[1] = gen_rtx_REG (SImode, REGNO (operands[1]) + 1); + latehalf[1] = gen_rtx_REG (SImode, REGNO (operands[1]) + 2); } else if (optype1 == OFFSOP) { @@ -1167,14 +1166,14 @@ output_move_double (operands) /* Size is not 12. */ if (optype0 == REGOP) - latehalf[0] = gen_rtx (REG, SImode, REGNO (operands[0]) + 1); + latehalf[0] = gen_rtx_REG (SImode, REGNO (operands[0]) + 1); else if (optype0 == OFFSOP) latehalf[0] = adj_offsettable_operand (operands[0], 4); else latehalf[0] = operands[0]; if (optype1 == REGOP) - latehalf[1] = gen_rtx (REG, SImode, REGNO (operands[1]) + 1); + latehalf[1] = gen_rtx_REG (SImode, REGNO (operands[1]) + 1); else if (optype1 == OFFSOP) latehalf[1] = adj_offsettable_operand (operands[1], 4); else if (optype1 == CNSTOP) @@ -1212,13 +1211,13 @@ output_move_double (operands) output_asm_insn (AS2 (lea%L0,%a1,%0), xops); if (GET_MODE (operands[1]) == XFmode) { - operands[1] = gen_rtx (MEM, XFmode, latehalf[0]); + operands[1] = gen_rtx_MEM (XFmode, latehalf[0]); middlehalf[1] = adj_offsettable_operand (operands[1], size-8); latehalf[1] = adj_offsettable_operand (operands[1], size-4); } else { - operands[1] = gen_rtx (MEM, DImode, latehalf[0]); + operands[1] = gen_rtx_MEM (DImode, latehalf[0]); latehalf[1] = adj_offsettable_operand (operands[1], size-4); } } @@ -1945,17 +1944,17 @@ load_pic_register (do_rtl) LABEL_NAME (pic_label_rtx) = pic_label_name; } - xops[1] = gen_rtx (MEM, QImode, - gen_rtx (SYMBOL_REF, Pmode, - LABEL_NAME (pic_label_rtx))); - + xops[1] = gen_rtx_MEM (QImode, + gen_rtx_SYMBOL_REF (Pmode, + LABEL_NAME (pic_label_rtx))); + if (do_rtl) { emit_insn (gen_prologue_get_pc (xops[0], xops[1])); - emit_insn (gen_prologue_set_got (xops[0], - gen_rtx (SYMBOL_REF, Pmode, - "$_GLOBAL_OFFSET_TABLE_"), - xops[1])); + emit_insn (gen_prologue_set_got + (xops[0], + gen_rtx_SYMBOL_REF (Pmode, "$_GLOBAL_OFFSET_TABLE_"), + xops[1])); } else { @@ -2016,11 +2015,12 @@ ix86_prologue (do_rtl) { if (do_rtl) { - insn = emit_insn (gen_rtx (SET, VOIDmode, - gen_rtx (MEM, SImode, - gen_rtx (PRE_DEC, SImode, - stack_pointer_rtx)), - frame_pointer_rtx)); + insn = emit_insn (gen_rtx_SET + (VOIDmode, + gen_rtx_MEM (SImode, + gen_rtx_PRE_DEC (SImode, + stack_pointer_rtx)), + frame_pointer_rtx)); RTX_FRAME_RELATED_P (insn) = 1; insn = emit_move_insn (xops[1], xops[0]); @@ -2077,17 +2077,17 @@ ix86_prologue (do_rtl) } else { - xops[3] = gen_rtx (REG, SImode, 0); + xops[3] = gen_rtx_REG (SImode, 0); if (do_rtl) emit_move_insn (xops[3], xops[2]); else output_asm_insn (AS2 (mov%L0,%2,%3), xops); - xops[3] = gen_rtx (MEM, FUNCTION_MODE, - gen_rtx (SYMBOL_REF, Pmode, "_alloca")); + xops[3] = gen_rtx_MEM (FUNCTION_MODE, + gen_rtx_SYMBOL_REF (Pmode, "_alloca")); if (do_rtl) - emit_call_insn (gen_rtx (CALL, VOIDmode, xops[3], const0_rtx)); + emit_call_insn (gen_rtx_CALL (VOIDmode, xops[3], const0_rtx)); else output_asm_insn (AS1 (call,%P3), xops); } @@ -2107,14 +2107,16 @@ ix86_prologue (do_rtl) if ((regs_ever_live[regno] && ! call_used_regs[regno]) || (regno == PIC_OFFSET_TABLE_REGNUM && pic_reg_used)) { - xops[0] = gen_rtx (REG, SImode, regno); + xops[0] = gen_rtx_REG (SImode, regno); if (do_rtl) { - insn = emit_insn (gen_rtx (SET, VOIDmode, - gen_rtx (MEM, SImode, - gen_rtx (PRE_DEC, SImode, - stack_pointer_rtx)), - xops[0])); + insn + = emit_insn (gen_rtx_SET + (VOIDmode, + gen_rtx_MEM (SImode, + gen_rtx_PRE_DEC (SImode, + stack_pointer_rtx)), + xops[0])); RTX_FRAME_RELATED_P (insn) = 1; } @@ -2268,7 +2270,7 @@ ix86_epilogue (do_rtl) if ((regs_ever_live[regno] && ! call_used_regs[regno]) || (regno == PIC_OFFSET_TABLE_REGNUM && pic_reg_used)) { - xops[0] = gen_rtx (REG, SImode, regno); + xops[0] = gen_rtx_REG (SImode, regno); if (do_rtl) emit_insn (gen_pop (xops[0])); @@ -2282,7 +2284,7 @@ ix86_epilogue (do_rtl) if ((regs_ever_live[regno] && ! call_used_regs[regno]) || (regno == PIC_OFFSET_TABLE_REGNUM && pic_reg_used)) { - xops[0] = gen_rtx (REG, SImode, regno); + xops[0] = gen_rtx_REG (SImode, regno); xops[1] = adj_offsettable_operand (AT_BP (Pmode), offset); if (do_rtl) @@ -2328,8 +2330,8 @@ ix86_epilogue (do_rtl) xops[0] = GEN_INT (tsize); if (do_rtl) - emit_insn (gen_rtx (SET, VOIDmode, xops[2], - gen_rtx (PLUS, SImode, xops[2], xops[0]))); + emit_insn (gen_rtx_SET (VOIDmode, xops[2], + gen_rtx_PLUS (SImode, xops[2], xops[0]))); else output_asm_insn (AS2 (add%L2,%0,%2), xops); } @@ -2352,13 +2354,14 @@ ix86_epilogue (do_rtl) if (current_function_pops_args >= 32768) { /* ??? Which register to use here? */ - xops[0] = gen_rtx (REG, SImode, 2); + xops[0] = gen_rtx_REG (SImode, 2); if (do_rtl) { emit_insn (gen_pop (xops[0])); - emit_insn (gen_rtx (SET, VOIDmode, xops[2], - gen_rtx (PLUS, SImode, xops[1], xops[2]))); + emit_insn (gen_rtx_SET (VOIDmode, xops[2], + gen_rtx_PLUS (SImode, xops[1], + xops[2]))); emit_jump_insn (xops[0]); } else @@ -2675,10 +2678,11 @@ legitimize_pic_address (orig, reg) if ((GET_CODE (addr) == SYMBOL_REF && SYMBOL_REF_FLAG (addr)) || GET_CODE (addr) == LABEL_REF) - new = gen_rtx (PLUS, Pmode, pic_offset_table_rtx, orig); + new = gen_rtx_PLUS (Pmode, pic_offset_table_rtx, orig); else - new = gen_rtx (MEM, Pmode, - gen_rtx (PLUS, Pmode, pic_offset_table_rtx, orig)); + new = gen_rtx_MEM (Pmode, + gen_rtx_PLUS (Pmode, pic_offset_table_rtx, + orig)); emit_move_insn (reg, new); } @@ -2712,11 +2716,11 @@ legitimize_pic_address (orig, reg) if (GET_CODE (addr) == PLUS && CONSTANT_P (XEXP (addr, 1))) { - base = gen_rtx (PLUS, Pmode, base, XEXP (addr, 0)); + base = gen_rtx_PLUS (Pmode, base, XEXP (addr, 0)); addr = XEXP (addr, 1); } - return gen_rtx (PLUS, Pmode, base, addr); + return gen_rtx_PLUS (Pmode, base, addr); } return new; } @@ -2782,8 +2786,8 @@ legitimize_address (x, oldx, mode) && (log = (unsigned)exact_log2 (INTVAL (XEXP (x, 1)))) < 4) { changed = 1; - x = gen_rtx (MULT, Pmode, force_reg (Pmode, XEXP (x, 0)), - GEN_INT (1 << log)); + x = gen_rtx_MULT (Pmode, force_reg (Pmode, XEXP (x, 0)), + GEN_INT (1 << log)); } if (GET_CODE (x) == PLUS) @@ -2795,9 +2799,9 @@ legitimize_address (x, oldx, mode) && (log = (unsigned)exact_log2 (INTVAL (XEXP (XEXP (x, 0), 1)))) < 4) { changed = 1; - XEXP (x, 0) = gen_rtx (MULT, Pmode, - force_reg (Pmode, XEXP (XEXP (x, 0), 0)), - GEN_INT (1 << log)); + XEXP (x, 0) = gen_rtx_MULT (Pmode, + force_reg (Pmode, XEXP (XEXP (x, 0), 0)), + GEN_INT (1 << log)); } if (GET_CODE (XEXP (x, 1)) == ASHIFT @@ -2805,9 +2809,9 @@ legitimize_address (x, oldx, mode) && (log = (unsigned)exact_log2 (INTVAL (XEXP (XEXP (x, 1), 1)))) < 4) { changed = 1; - XEXP (x, 1) = gen_rtx (MULT, Pmode, - force_reg (Pmode, XEXP (XEXP (x, 1), 0)), - GEN_INT (1 << log)); + XEXP (x, 1) = gen_rtx_MULT (Pmode, + force_reg (Pmode, XEXP (XEXP (x, 1), 0)), + GEN_INT (1 << log)); } /* Put multiply first if it isn't already. */ @@ -2826,10 +2830,10 @@ legitimize_address (x, oldx, mode) if (GET_CODE (XEXP (x, 0)) == MULT && GET_CODE (XEXP (x, 1)) == PLUS) { changed = 1; - x = gen_rtx (PLUS, Pmode, - gen_rtx (PLUS, Pmode, XEXP (x, 0), - XEXP (XEXP (x, 1), 0)), - XEXP (XEXP (x, 1), 1)); + x = gen_rtx_PLUS (Pmode, + gen_rtx_PLUS (Pmode, XEXP (x, 0), + XEXP (XEXP (x, 1), 0)), + XEXP (XEXP (x, 1), 1)); } /* Canonicalize @@ -2858,10 +2862,10 @@ legitimize_address (x, oldx, mode) if (constant) { changed = 1; - x = gen_rtx (PLUS, Pmode, - gen_rtx (PLUS, Pmode, XEXP (XEXP (x, 0), 0), - XEXP (XEXP (XEXP (x, 0), 1), 0)), - plus_constant (other, INTVAL (constant))); + x = gen_rtx_PLUS (Pmode, + gen_rtx_PLUS (Pmode, XEXP (XEXP (x, 0), 0), + XEXP (XEXP (XEXP (x, 0), 1), 0)), + plus_constant (other, INTVAL (constant))); } } @@ -3670,8 +3674,8 @@ split_di (operands, num, lo_half, hi_half) { if (GET_CODE (operands[num]) == REG) { - lo_half[num] = gen_rtx (REG, SImode, REGNO (operands[num])); - hi_half[num] = gen_rtx (REG, SImode, REGNO (operands[num]) + 1); + lo_half[num] = gen_rtx_REG (SImode, REGNO (operands[num])); + hi_half[num] = gen_rtx_REG (SImode, REGNO (operands[num]) + 1); } else if (CONSTANT_P (operands[num])) split_double (operands[num], &lo_half[num], &hi_half[num]); @@ -4048,7 +4052,7 @@ output_fp_cc0_set (insn) rtx next; enum rtx_code code; - xops[0] = gen_rtx (REG, HImode, 0); + xops[0] = gen_rtx_REG (HImode, 0); output_asm_insn (AS1 (fnsts%W0,%0), xops); if (! TARGET_IEEE_FP) @@ -4107,7 +4111,7 @@ output_fp_cc0_set (insn) else abort (); - xops[0] = gen_rtx (REG, QImode, 0); + xops[0] = gen_rtx_REG (QImode, 0); switch (code) { @@ -4383,10 +4387,11 @@ rewrite_address (mem_rtx) { /* This part is utilized by the combiner. */ ret_rtx - = gen_rtx (PLUS, GET_MODE (mem_addr), - gen_rtx (PLUS, GET_MODE (XEXP (mem_addr, 1)), - XEXP (mem_addr, 0), XEXP (XEXP (mem_addr, 1), 0)), - XEXP (XEXP (mem_addr, 1), 1)); + = gen_rtx_PLUS (GET_MODE (mem_addr), + gen_rtx_PLUS (GET_MODE (XEXP (mem_addr, 1)), + XEXP (mem_addr, 0), + XEXP (XEXP (mem_addr, 1), 0)), + XEXP (XEXP (mem_addr, 1), 1)); if (memory_address_p (GET_MODE (mem_rtx), ret_rtx)) { @@ -4561,38 +4566,38 @@ rewrite_address (mem_rtx) { if (scale != 1) { - ret_rtx = gen_rtx (PLUS, GET_MODE (base_rtx), - gen_rtx (MULT, GET_MODE (index_rtx), - index_rtx, scale_rtx), - base_rtx); + ret_rtx = gen_rtx_PLUS (GET_MODE (base_rtx), + gen_rtx_MULT (GET_MODE (index_rtx), + index_rtx, scale_rtx), + base_rtx); if (GET_CODE (offset_rtx) != CONST_INT || INTVAL (offset_rtx) != 0) - ret_rtx = gen_rtx (PLUS, GET_MODE (ret_rtx), - ret_rtx, offset_rtx); + ret_rtx = gen_rtx_PLUS (GET_MODE (ret_rtx), + ret_rtx, offset_rtx); } else { - ret_rtx = gen_rtx (PLUS, GET_MODE (index_rtx), - index_rtx, base_rtx); + ret_rtx = gen_rtx_PLUS (GET_MODE (index_rtx), + index_rtx, base_rtx); if (GET_CODE (offset_rtx) != CONST_INT || INTVAL (offset_rtx) != 0) - ret_rtx = gen_rtx (PLUS, GET_MODE (ret_rtx), - ret_rtx, offset_rtx); + ret_rtx = gen_rtx_PLUS (GET_MODE (ret_rtx), + ret_rtx, offset_rtx); } } else { if (scale != 1) { - ret_rtx = gen_rtx (MULT, GET_MODE (index_rtx), - index_rtx, scale_rtx); + ret_rtx = gen_rtx_MULT (GET_MODE (index_rtx), + index_rtx, scale_rtx); if (GET_CODE (offset_rtx) != CONST_INT || INTVAL (offset_rtx) != 0) - ret_rtx = gen_rtx (PLUS, GET_MODE (ret_rtx), - ret_rtx, offset_rtx); + ret_rtx = gen_rtx_PLUS (GET_MODE (ret_rtx), + ret_rtx, offset_rtx); } else { diff --git a/gcc/config/i386/i386.h b/gcc/config/i386/i386.h index 77bf539ce99..77789f6d0a6 100644 --- a/gcc/config/i386/i386.h +++ b/gcc/config/i386/i386.h @@ -945,14 +945,14 @@ enum reg_class If the precise function being called is known, FUNC is its FUNCTION_DECL; otherwise, FUNC is 0. */ #define FUNCTION_VALUE(VALTYPE, FUNC) \ - gen_rtx (REG, TYPE_MODE (VALTYPE), \ - VALUE_REGNO (TYPE_MODE (VALTYPE))) + gen_rtx_REG (TYPE_MODE (VALTYPE), \ + VALUE_REGNO (TYPE_MODE (VALTYPE))) /* Define how to find the value returned by a library function assuming the value has mode MODE. */ #define LIBCALL_VALUE(MODE) \ - gen_rtx (REG, MODE, VALUE_REGNO (MODE)) + gen_rtx_REG (MODE, VALUE_REGNO (MODE)) /* Define the size of the result block used for communication between untyped_call and untyped_return. The block contains a DImode value @@ -1145,9 +1145,9 @@ do \ \ ASM_GENERATE_INTERNAL_LABEL (block_table, "LPBX", 0); \ \ - xops[1] = gen_rtx (SYMBOL_REF, VOIDmode, block_table); \ + xops[1] = gen_rtx_SYMBOL_REF (VOIDmode, block_table); \ xops[5] = stack_pointer_rtx; \ - xops[7] = gen_rtx (REG, Pmode, 0); /* eax */ \ + xops[7] = gen_rtx_REG (Pmode, 0); /* eax */ \ \ CONSTANT_POOL_ADDRESS_P (xops[1]) = TRUE; \ \ @@ -1157,7 +1157,9 @@ do \ 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[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); \ @@ -1179,9 +1181,12 @@ do \ 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[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; \ @@ -1287,13 +1292,15 @@ do \ \ ASM_GENERATE_INTERNAL_LABEL (block_table, "LPBX", 0); \ \ - xops[1] = gen_rtx (SYMBOL_REF, VOIDmode, block_table); \ + 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[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]); \ + xops[0] = gen_rtx_MEM (SImode, xops[4]); \ + xops[6] = gen_rtx_MEM (SImode, xops[5]); \ \ CONSTANT_POOL_ADDRESS_P (xops[1]) = TRUE; \ \ @@ -1301,7 +1308,7 @@ do \ output_asm_insn (AS2(mov%L0,%2,%0), xops); \ if (flag_pic) \ { \ - xops[7] = gen_rtx (REG, Pmode, 0); /* eax */ \ + xops[7] = gen_rtx_REG (Pmode, 0); /* eax */ \ 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); \ @@ -1317,16 +1324,16 @@ do \ default: \ \ ASM_GENERATE_INTERNAL_LABEL (counts, "LPBX", 2); \ - cnt_rtx = gen_rtx (SYMBOL_REF, VOIDmode, counts); \ + 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); \ + cnt_rtx = gen_rtx_PLUS (Pmode, pic_offset_table_rtx, cnt_rtx); \ \ - xops[0] = gen_rtx (MEM, SImode, cnt_rtx); \ + xops[0] = gen_rtx_MEM (SImode, cnt_rtx); \ output_asm_insn (AS1(inc%L0,%0), xops); \ \ break; \ @@ -1362,7 +1369,8 @@ do \ { \ rtx xops[1]; \ \ - xops[0] = gen_rtx (MEM, Pmode, gen_rtx (SYMBOL_REF, VOIDmode, "__bb_trace_ret")); \ + xops[0] = gen_rtx_MEM (Pmode, \ + gen_rtx_SYMBOL_REF (VOIDmode, "__bb_trace_ret")); \ \ output_asm_insn (AS1(call,%P0), xops); \ \ @@ -1470,8 +1478,8 @@ do { \ #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); \ + emit_move_insn (gen_rtx_MEM (SImode, plus_constant (TRAMP, 1)), CXT); \ + emit_move_insn (gen_rtx_MEM (SImode, plus_constant (TRAMP, 6)), FNADDR); \ } /* Definitions for register eliminations. @@ -1805,10 +1813,10 @@ while (0) in one reasonably fast instruction. */ #define MOVE_MAX 4 -/* The number of scalar move insns which should be generated instead - of a string move insn or a library call. Increasing the value - will always make code faster, but eventually incurs high cost in - increased code size. +/* If a memory-to-memory move would take MOVE_RATIO or more simple + move-instruction pairs, we will do a movstr or libcall instead. + Increasing the value will always make code faster, but eventually + incurs high cost in increased code size. If you don't define this, a reasonable default is used. @@ -2366,13 +2374,13 @@ number as al, and ax. /* Before the prologue, RA is at 0(%esp). */ #define INCOMING_RETURN_ADDR_RTX \ - gen_rtx (MEM, VOIDmode, gen_rtx (REG, VOIDmode, STACK_POINTER_REGNUM)) - + gen_rtx_MEM (VOIDmode, gen_rtx_REG (VOIDmode, STACK_POINTER_REGNUM)) + /* After the prologue, RA is at -4(AP) in the current frame. */ #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)))) + ? gen_rtx_MEM (Pmode, plus_constant (arg_pointer_rtx, -4))\ + : gen_rtx_MEM (Pmode, plus_constant (FRAME, 4))) /* PC is dbx register 8; let's use that column for RA. */ #define DWARF_FRAME_RETURN_COLUMN 8 @@ -2625,7 +2633,7 @@ extern char *qi_high_reg_name[]; #define ASM_OPERAND_LETTER '#' #define RET return "" -#define AT_SP(mode) (gen_rtx (MEM, (mode), stack_pointer_rtx)) +#define AT_SP(mode) (gen_rtx_MEM ((mode), stack_pointer_rtx)) /* Helper macros to expand a binary/unary operator if needed */ #define IX86_EXPAND_BINARY_OPERATOR(OP, MODE, OPERANDS) \ diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md index c324a8be705..0d7b603dbd1 100644 --- a/gcc/config/i386/i386.md +++ b/gcc/config/i386/i386.md @@ -1043,7 +1043,7 @@ "" "* { - operands[1] = gen_rtx (REG, HImode, REGNO (operands[1])); + operands[1] = gen_rtx_REG (HImode, REGNO (operands[1])); return AS1 (push%W0,%1); }") @@ -1220,13 +1220,14 @@ if (flag_pic) current_function_uses_pic_offset_table = 1; - insn = emit_insn (gen_rtx (SET, SFmode, operands[0], fp_const)); + insn = emit_insn (gen_rtx_SET (SFmode, operands[0], fp_const)); note = find_reg_note (insn, REG_EQUAL, NULL_RTX); if (note) XEXP (note, 0) = operands[1]; else - REG_NOTES (insn) = gen_rtx (EXPR_LIST, REG_EQUAL, operands[1], REG_NOTES (insn)); + REG_NOTES (insn) + = gen_rtx_EXPR_LIST (REG_EQUAL, operands[1], REG_NOTES (insn)); } }") @@ -1368,13 +1369,14 @@ if (flag_pic) current_function_uses_pic_offset_table = 1; - insn = emit_insn (gen_rtx (SET, DFmode, operands[0], fp_const)); + insn = emit_insn (gen_rtx_SET (DFmode, operands[0], fp_const)); note = find_reg_note (insn, REG_EQUAL, NULL_RTX); if (note) XEXP (note, 0) = operands[1]; else - REG_NOTES (insn) = gen_rtx (EXPR_LIST, REG_EQUAL, operands[1], REG_NOTES (insn)); + REG_NOTES (insn) + = gen_rtx_EXPR_LIST (REG_EQUAL, operands[1], REG_NOTES (insn)); } }") @@ -1517,13 +1519,14 @@ if (flag_pic) current_function_uses_pic_offset_table = 1; - insn = emit_insn (gen_rtx (SET, XFmode, operands[0], fp_const)); + insn = emit_insn (gen_rtx_SET (XFmode, operands[0], fp_const)); note = find_reg_note (insn, REG_EQUAL, NULL_RTX); if (note) XEXP (note, 0) = operands[1]; else - REG_NOTES (insn) = gen_rtx (EXPR_LIST, REG_EQUAL, operands[1], REG_NOTES (insn)); + REG_NOTES (insn) + = gen_rtx_EXPR_LIST (REG_EQUAL, operands[1], REG_NOTES (insn)); } }") @@ -1663,7 +1666,7 @@ if (TARGET_ZERO_EXTEND_WITH_AND) { xops[0] = operands[0]; - xops[1] = gen_rtx (CONST_INT, VOIDmode, 0xffff); + xops[1] = GEN_INT (0xffff); if (i386_aligned_p (operands[1])) output_asm_insn (AS2 (mov%L0,%k1,%k0),operands); else @@ -1687,7 +1690,7 @@ (const_int 0)) (set (strict_low_part (match_dup 2)) (match_dup 1))] - "operands[2] = gen_rtx (REG, HImode, true_regnum (operands[0]));") + "operands[2] = gen_rtx_REG (HImode, true_regnum (operands[0]));") (define_split @@ -1699,7 +1702,7 @@ (set (match_dup 0) (and:SI (match_dup 0) (const_int 65535)))] - "operands[2] = gen_rtx (REG, HImode, true_regnum (operands[0]));") + "operands[2] = gen_rtx_REG (HImode, true_regnum (operands[0]));") (define_insn "zero_extendqihi2" [(set (match_operand:HI 0 "register_operand" "=q,&q,?r") @@ -1728,7 +1731,7 @@ else { xops[0] = operands[0]; - xops[1] = gen_rtx (CONST_INT, VOIDmode, 0xff); + xops[1] = GEN_INT (0xff); output_asm_insn (AS2 (mov%B0,%1,%b0),operands); output_asm_insn (AS2 (and%L0,%1,%k0), xops); } @@ -1751,7 +1754,7 @@ (const_int 0)) (set (strict_low_part (match_dup 2)) (match_dup 1))] - "operands[2] = gen_rtx (REG, QImode, REGNO (operands[0]));") + "operands[2] = gen_rtx_REG (QImode, REGNO (operands[0]));") (define_split @@ -1764,7 +1767,7 @@ (set (match_dup 0) (and:HI (match_dup 0) (const_int 255)))] - "operands[2] = gen_rtx (REG, QImode, REGNO (operands[0]));") + "operands[2] = gen_rtx_REG (QImode, REGNO (operands[0]));") (define_split [(set (match_operand:HI 0 "register_operand" "") @@ -1780,7 +1783,7 @@ if (GET_CODE (operands[0]) != REG || GET_CODE (operands[1]) != REG || REGNO (operands[0]) == REGNO (operands[1])) FAIL; - operands[2] = gen_rtx (REG, HImode, REGNO (operands[1]));") + operands[2] = gen_rtx_REG (HImode, REGNO (operands[1]));") (define_insn "zero_extendqisi2" [(set (match_operand:SI 0 "register_operand" "=q,&q,?r") @@ -1809,7 +1812,7 @@ else { xops[0] = operands[0]; - xops[1] = gen_rtx (CONST_INT, VOIDmode, 0xff); + xops[1] = GEN_INT (0xff); output_asm_insn (AS2 (mov%B0,%1,%b0), operands); output_asm_insn (AS2 (and%L0,%1,%k0), xops); } @@ -1819,8 +1822,8 @@ if (TARGET_ZERO_EXTEND_WITH_AND && GET_CODE (operands[1]) == REG) { xops[0] = operands[0]; - xops[1] = gen_rtx (CONST_INT, VOIDmode, 0xff); - operands[1] = gen_rtx (REG, SImode, REGNO (operands[1])); + xops[1] = GEN_INT (0xff); + operands[1] = gen_rtx_REG (SImode, REGNO (operands[1])); output_asm_insn (AS2 (mov%L0,%1,%0), operands); output_asm_insn (AS2 (and%L0,%1,%k0), xops); RET; @@ -1842,7 +1845,7 @@ (const_int 0)) (set (strict_low_part (match_dup 2)) (match_dup 1))] - "operands[2] = gen_rtx (REG, QImode, REGNO (operands[0]));") + "operands[2] = gen_rtx_REG (QImode, REGNO (operands[0]));") (define_split @@ -1855,7 +1858,7 @@ (set (match_dup 0) (and:SI (match_dup 0) (const_int 255)))] - "operands[2] = gen_rtx (REG, QImode, REGNO (operands[0]));") + "operands[2] = gen_rtx_REG (QImode, REGNO (operands[0]));") (define_split [(set (match_operand:SI 0 "register_operand" "") @@ -1867,7 +1870,7 @@ (set (match_dup 0) (and:SI (match_dup 0) (const_int 255)))] - "operands[2] = gen_rtx (REG, SImode, true_regnum (operands[1]));") + "operands[2] = gen_rtx_REG (SImode, true_regnum (operands[1]));") (define_insn "zero_extendsidi2" [(set (match_operand:DI 0 "nonimmediate_operand" "=r,?r,?m") @@ -1880,7 +1883,7 @@ if (REG_P (operands[0]) && REG_P (operands[1]) && REGNO (operands[0]) == REGNO (operands[1])) { - operands[0] = gen_rtx (REG, SImode, REGNO (operands[0]) + 1); + operands[0] = gen_rtx_REG (SImode, REGNO (operands[0]) + 1); return AS2 (xor%L0,%0,%0); } @@ -1917,7 +1920,7 @@ #endif } - operands[1] = gen_rtx (REG, SImode, REGNO (operands[0]) + 1); + operands[1] = gen_rtx_REG (SImode, REGNO (operands[0]) + 1); output_asm_insn (AS2 (mov%L0,%0,%1), operands); operands[0] = GEN_INT (31); @@ -3036,7 +3039,7 @@ ; xops[0] = operands[0]; ; xops[1] = operands[1]; ; xops[2] = operands[2]; -; xops[3] = gen_rtx (MEM, SImode, stack_pointer_rtx); +; xops[3] = gen_rtx_MEM (SImode, stack_pointer_rtx); ; output_asm_insn (\"push%z1 %1\", xops); ; output_asm_insn (AS2 (add%z3,%2,%3), xops); ; RET; @@ -4451,8 +4454,8 @@ byte_xor_operation: output_asm_insn (AS2 (mov%L0,%1,%0), operands); operands[1] = operands[0]; } - operands[1] = gen_rtx (MULT, SImode, operands[1], - GEN_INT (1 << INTVAL (operands[2]))); + operands[1] = gen_rtx_MULT (SImode, operands[1], + GEN_INT (1 << INTVAL (operands[2]))); return AS2 (lea%L0,%a1,%0); } } @@ -4912,7 +4915,7 @@ byte_xor_operation: } else { - operands[0] = gen_rtx (REG, SImode, REGNO (operands[0])); + operands[0] = gen_rtx_REG (SImode, REGNO (operands[0])); if (INTVAL (operands[2])) output_asm_insn (AS2 (ror%L0,%2,%0), operands); output_asm_insn (AS3 (shrd%L0,%1,%3,%0), operands); @@ -5345,7 +5348,7 @@ byte_xor_operation: else if (cc_prev_status.flags & CC_TEST_AX) { - operands[1] = gen_rtx (REG, SImode, 0); + operands[1] = gen_rtx_REG (SImode, 0); operands[2] = GEN_INT (0x4000); output_asm_insn (AS2 (testl,%2,%1), operands); return AS1 (jne,%l0); @@ -5385,7 +5388,7 @@ byte_xor_operation: else if (cc_prev_status.flags & CC_TEST_AX) { - operands[1] = gen_rtx (REG, SImode, 0); + operands[1] = gen_rtx_REG (SImode, 0); operands[2] = GEN_INT (0x4000); output_asm_insn (AS2 (testl,%2,%1), operands); return AS1 (je,%l0); @@ -5419,7 +5422,7 @@ byte_xor_operation: if (cc_prev_status.flags & CC_TEST_AX) { - operands[1] = gen_rtx (REG, SImode, 0); + operands[1] = gen_rtx_REG (SImode, 0); operands[2] = GEN_INT (0x4100); output_asm_insn (AS2 (testl,%2,%1), operands); return AS1 (je,%l0); @@ -5471,7 +5474,7 @@ byte_xor_operation: if (cc_prev_status.flags & CC_TEST_AX) { - operands[1] = gen_rtx (REG, SImode, 0); + operands[1] = gen_rtx_REG (SImode, 0); operands[2] = GEN_INT (0x100); output_asm_insn (AS2 (testl,%2,%1), operands); return AS1 (jne,%l0); @@ -5522,7 +5525,7 @@ byte_xor_operation: return AS1 (je,%l0); if (cc_prev_status.flags & CC_TEST_AX) { - operands[1] = gen_rtx (REG, SImode, 0); + operands[1] = gen_rtx_REG (SImode, 0); operands[2] = GEN_INT (0x100); output_asm_insn (AS2 (testl,%2,%1), operands); return AS1 (je,%l0); @@ -5573,7 +5576,7 @@ byte_xor_operation: return AS1 (jb,%l0); if (cc_prev_status.flags & CC_TEST_AX) { - operands[1] = gen_rtx (REG, SImode, 0); + operands[1] = gen_rtx_REG (SImode, 0); operands[2] = GEN_INT (0x4100); output_asm_insn (AS2 (testl,%2,%1), operands); return AS1 (jne,%l0); @@ -5617,7 +5620,7 @@ byte_xor_operation: else if (cc_prev_status.flags & CC_TEST_AX) { - operands[1] = gen_rtx (REG, SImode, 0); + operands[1] = gen_rtx_REG (SImode, 0); operands[2] = GEN_INT (0x4000); output_asm_insn (AS2 (testl,%2,%1), operands); return AS1 (je,%l0); @@ -5639,7 +5642,7 @@ byte_xor_operation: else if (cc_prev_status.flags & CC_TEST_AX) { - operands[1] = gen_rtx (REG, SImode, 0); + operands[1] = gen_rtx_REG (SImode, 0); operands[2] = GEN_INT (0x4000); output_asm_insn (AS2 (testl,%2,%1), operands); return AS1 (jne,%l0); @@ -5661,7 +5664,7 @@ byte_xor_operation: return AS1 (jne,%l0); if (cc_prev_status.flags & CC_TEST_AX) { - operands[1] = gen_rtx (REG, SImode, 0); + operands[1] = gen_rtx_REG (SImode, 0); operands[2] = GEN_INT (0x4100); output_asm_insn (AS2 (testl,%2,%1), operands); return AS1 (jne,%l0); @@ -5692,7 +5695,7 @@ byte_xor_operation: return AS1 (jne,%l0); if (cc_prev_status.flags & CC_TEST_AX) { - operands[1] = gen_rtx (REG, SImode, 0); + operands[1] = gen_rtx_REG (SImode, 0); operands[2] = GEN_INT (0x100); output_asm_insn (AS2 (testl,%2,%1), operands); return AS1 (je,%l0); @@ -5724,7 +5727,7 @@ byte_xor_operation: return AS1 (jne,%l0); if (cc_prev_status.flags & CC_TEST_AX) { - operands[1] = gen_rtx (REG, SImode, 0); + operands[1] = gen_rtx_REG (SImode, 0); operands[2] = GEN_INT (0x100); output_asm_insn (AS2 (testl,%2,%1), operands); return AS1 (jne,%l0); @@ -5756,7 +5759,7 @@ byte_xor_operation: if (cc_prev_status.flags & CC_TEST_AX) { - operands[1] = gen_rtx (REG, SImode, 0); + operands[1] = gen_rtx_REG (SImode, 0); operands[2] = GEN_INT (0x4100); output_asm_insn (AS2 (testl,%2,%1), operands); return AS1 (je,%l0); @@ -6302,8 +6305,8 @@ byte_xor_operation: value. */ emit_call_insn (TARGET_80387 - ? gen_call_value (gen_rtx (REG, XCmode, FIRST_FLOAT_REG), - operands[0], const0_rtx) + ? gen_call_value (gen_rtx_REG (XCmode, FIRST_FLOAT_REG), + operands[0], const0_rtx) : gen_call (operands[0], const0_rtx)); for (i = 0; i < XVECLEN (operands[2], 0); i++) @@ -6566,7 +6569,7 @@ byte_xor_operation: operands[3] = gen_reg_rtx (SImode); operands[5] = addr0; - operands[0] = gen_rtx (MEM, BLKmode, addr0); + operands[0] = gen_rtx_MEM (BLKmode, addr0); }") ;; It might seem that operand 0 could use predicate register_operand. @@ -6632,9 +6635,8 @@ byte_xor_operation: operands[5] = addr1; operands[6] = addr2; - operands[1] = gen_rtx (MEM, BLKmode, addr1); - operands[2] = gen_rtx (MEM, BLKmode, addr2); - + operands[1] = gen_rtx_MEM (BLKmode, addr1); + operands[2] = gen_rtx_MEM (BLKmode, addr2); }") ;; memcmp recognizers. The `cmpsb' opcode does nothing if the count is @@ -6697,7 +6699,7 @@ byte_xor_operation: cc_status.flags |= CC_NOT_SIGNED; - xops[0] = gen_rtx (REG, QImode, 0); + xops[0] = gen_rtx_REG (QImode, 0); xops[1] = CONST0_RTX (QImode); output_asm_insn (\"cld\", operands); diff --git a/gcc/config/i386/mingw32.h b/gcc/config/i386/mingw32.h index 5ae1926d1cd..c15ad64553f 100644 --- a/gcc/config/i386/mingw32.h +++ b/gcc/config/i386/mingw32.h @@ -66,14 +66,6 @@ do { \ char c; \ \ putc ('\"', asm_file); \ - if (STRING[1] == ':' \ - && (STRING[2] == '/' || STRING[2] == '\\')) \ - { \ - putc ('/', asm_file); \ - putc ('/', asm_file); \ - putc (*string, asm_file); \ - string += 2; \ - } \ \ while ((c = *string++) != 0) \ { \ diff --git a/gcc/config/i386/osfrose.h b/gcc/config/i386/osfrose.h index fd4c3a8eb28..6c2dd3e85a0 100644 --- a/gcc/config/i386/osfrose.h +++ b/gcc/config/i386/osfrose.h @@ -1,6 +1,6 @@ /* Definitions of target machine for GNU compiler. Intel 386 (OSF/1 with OSF/rose) version. - Copyright (C) 1991, 1992, 1993, 1996 Free Software Foundation, Inc. + Copyright (C) 1991, 1992, 1993, 1996, 1998 Free Software Foundation, Inc. This file is part of GNU CC. @@ -221,8 +221,8 @@ do \ rtx symref; \ \ HALF_PIC_EXTERNAL ("_mcount_ptr"); \ - symref = HALF_PIC_PTR (gen_rtx (SYMBOL_REF, Pmode, \ - "_mcount_ptr")); \ + symref = HALF_PIC_PTR (gen_rtx_SYMBOL_REF (Pmode, \ + "_mcount_ptr")); \ \ fprintf (FILE, "\tmovl $%sP%d,%%edx\n", lprefix, labelno); \ fprintf (FILE, "\tmovl %s%s,%%eax\n", prefix, \ @@ -294,7 +294,7 @@ do \ rtx symdef; \ \ HALF_PIC_EXTERNAL ("mcount"); \ - symdef = HALF_PIC_PTR (gen_rtx (SYMBOL_REF, Pmode, "mcount")); \ + symdef = HALF_PIC_PTR (gen_rtx_SYMBOL_REF (Pmode, "mcount")); \ fprintf (FILE, "\tmovl $%sP%d,%%edx\n", lprefix, labelno); \ fprintf (FILE, "\tcall *%s%s\n", prefix, XSTR (symdef, 0)); \ } \ diff --git a/gcc/config/i386/win-nt.h b/gcc/config/i386/win-nt.h index 60c0bb6a1f6..d87d8e4ed4a 100644 --- a/gcc/config/i386/win-nt.h +++ b/gcc/config/i386/win-nt.h @@ -1,6 +1,6 @@ /* Operating system specific defines to be used when targeting GCC for Windows NT 3.x on an i386. - Copyright (C) 1994, 1995 Free Software Foundation, Inc. + Copyright (C) 1994, 1995, 1998 Free Software Foundation, Inc. Contributed by Douglas B. Rupp (drupp@cs.washington.edu). This file is part of GNU CC. @@ -118,7 +118,7 @@ do \ if (lookup_attribute ("stdcall", \ TYPE_ATTRIBUTES (TREE_TYPE (DECL)))) \ XEXP (DECL_RTL (DECL), 0) = \ - gen_rtx (SYMBOL_REF, Pmode, gen_stdcall_suffix (DECL)); \ + gen_rtx_SYMBOL_REF (Pmode, gen_stdcall_suffix (DECL)); \ } \ while (0) #endif |