From 6fd71fde8bf08fdbd7220791b0b411f1595bf810 Mon Sep 17 00:00:00 2001 From: Uros Bizjak Date: Fri, 24 Sep 2010 08:10:35 +0200 Subject: [PATCH] i386.md (ix86_code_end): Move the initialization of xops array near the consumer. * config/i386/i386.md (ix86_code_end): Move the initialization of xops array near the consumer. Use AX_REG and SP_REG instead of numerical constants. From-SVN: r164583 --- gcc/ChangeLog | 13 +++++++++---- gcc/config/i386/i386.c | 10 +++++----- gcc/config/i386/i386.md | 4 ++-- 3 files changed, 16 insertions(+), 11 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index d23732f7ea6..152c0c2629d 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,9 +1,14 @@ +2010-09-24 Uros Bizjak + + * config/i386/i386.md (ix86_code_end): Move the initialization of + xops array near the consumer. Use AX_REG and SP_REG instead of + numerical constants. + 2010-09-24 Nicola Pero - * c-typeck.c (convert_arguments): Use warning 'too many arguments - to method [methodname]' for an Objective-C method instead of the - less satisfactory 'too many arguments to function' (with no method - name). + * c-typeck.c (convert_arguments): Use warning 'too many arguments to + method [methodname]' for an Objective-C method instead of the less + satisfactory 'too many arguments to function' (with no method name). 2010-09-23 Eric Botcazou diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index b2585210ded..eb7f65f770c 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -7964,12 +7964,12 @@ ix86_code_end (void) rtx xops[2]; int regno; - for (regno = 0; regno < 8; ++regno) + for (regno = AX_REG; regno <= SP_REG; regno++) { char name[32]; tree decl; - if (! ((pic_labels_used >> regno) & 1)) + if (!(pic_labels_used & (1 << regno))) continue; get_pc_thunk_name (name, regno); @@ -8022,10 +8022,8 @@ ix86_code_end (void) /* Make sure unwind info is emitted for the thunk if needed. */ final_start_function (emit_barrier (), asm_out_file, 1); - xops[0] = gen_rtx_REG (Pmode, regno); - xops[1] = gen_rtx_MEM (Pmode, stack_pointer_rtx); /* Pad stack IP move with 4 instructions (two NOPs count - as one instruction.) */ + as one instruction). */ if (TARGET_PAD_SHORT_FUNCTION) { int i = 8; @@ -8034,6 +8032,8 @@ ix86_code_end (void) fputs ("\tnop\n", asm_out_file); } + xops[0] = gen_rtx_REG (Pmode, regno); + xops[1] = gen_rtx_MEM (Pmode, stack_pointer_rtx); output_asm_insn ("mov%z0\t{%1, %0|%0, %1}", xops); fputs ("\tret\n", asm_out_file); final_end_function (); diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md index 55086f3c12e..adf528f785d 100644 --- a/gcc/config/i386/i386.md +++ b/gcc/config/i386/i386.md @@ -11515,7 +11515,7 @@ (unspec:SI [(const_int 0)] UNSPEC_SET_GOT)) (clobber (reg:CC FLAGS_REG))] "!TARGET_64BIT" - { return output_set_got (operands[0], NULL_RTX); } + "* return output_set_got (operands[0], NULL_RTX);" [(set_attr "type" "multi") (set_attr "length" "12")]) @@ -11525,7 +11525,7 @@ UNSPEC_SET_GOT)) (clobber (reg:CC FLAGS_REG))] "!TARGET_64BIT" - { return output_set_got (operands[0], operands[1]); } + "* return output_set_got (operands[0], operands[1]);" [(set_attr "type" "multi") (set_attr "length" "12")])