OSDN Git Service

* config/rs6000/rs6000.c (rs6000_emit_prologue): Use gen_int_mode
authoramodra <amodra@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 7 Oct 2010 12:47:52 +0000 (12:47 +0000)
committeramodra <amodra@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 7 Oct 2010 12:47:52 +0000 (12:47 +0000)
rather than sign extension by hand.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@165101 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/config/rs6000/rs6000.c

index 0652cf0..e18f700 100644 (file)
@@ -1,3 +1,8 @@
+2010-10-07  Alan Modra  <amodra@gmail.com>
+
+       * config/rs6000/rs6000.c (rs6000_emit_prologue): Use gen_int_mode
+       rather than sign extension by hand.
+
 2010-10-07  Jan Hubicka  <jh@suse.cz>
 
        PR middle-end/45926
        * doc/tm.texi.in (CLASS_LIKELY_SPILLED_P): Remove documentation.
        * doc/tm.texi.in: Regenerate.
        * system.h (CLASS_LIKELY_SPILLED_P): Poison.
-       * targhooks.c (default_class_likely_spilled_p): Don't use the 
+       * targhooks.c (default_class_likely_spilled_p): Don't use the
        CLASS_LIKELY_SPILLED_P macro.
 
-       * config\arm\arm.md: Update comment.
+       * config/arm/arm.md: Update comment.
 
 2010-10-06  Jan Hubicka  <jh@suse.cz>
 
-       * ipa.c (cgraph_remove_unreachable_nodes): External references can always
-       be removed.
-       (cgraph_externally_visible_p): We can not bring local comdats that are known
-       to linker; fix handling of internal visibility.
+       * ipa.c (cgraph_remove_unreachable_nodes): External references can
+       always be removed.
+       (cgraph_externally_visible_p): We can not bring local comdats that
+       are known to linker; fix handling of internal visibility.
        (function_and_variable_visibility): Likewise.
 
 2010-10-06  Eric Botcazou  <ebotcazou@adacore.com>
@@ -65,7 +70,7 @@
 
 2010-10-06  Nicola Pero  <nicola.pero@meta-innovation.com>
 
-       Implemented fast enumeration for Objective-C.   
+       Implemented fast enumeration for Objective-C.
        * c-parser.c (objc_could_be_foreach_context): New.
        (c_lex_one_token): Recognize RID_IN keyword in a potential
        Objective-C foreach context.
@@ -87,7 +92,7 @@
        perform checks on the loop declarations.
        * c-tree.h (check_for_loop_decls): Updated declaration.
        * doc/objc.texi: Document fast enumeration.
-       
+
 2010-10-06  Nick Clifton  <nickc@redhat.com>
 
        * config/mn10300/mn10300.h (FIRST_PSEUDO_REGISTER): Increment by
 2010-10-04  Andi Kleen <ak@linux.intel.com>
 
        * Makefile.in (xgcc, cpp, cc1, collect2, lto-wrapper, gcov,
-        gcov-dump, cc1-dummy, genprog, build/gcov-iov):
-        Add + to build rule.
+       gcov-dump, cc1-dummy, genprog, build/gcov-iov): Add + to build rule.
 
 2010-10-04  Matthias Klose  <doko@ubuntu.com>
 
        * extend.texi (interrupt_handler): Add MicroBlaze to list.
        (save_volatiles): Describe option for MicroBlaze.
        * invoke.texi: Add MicroBlaze Options.
-       * contrib.texi: Add acknowledgment. 
+       * contrib.texi: Add acknowledgment.
        * md.texi: Add MicroBlaze d and z constraints.
        * install.texi: Add microblaze-*-elf.
        * configure.ac: Add microblaze-*-* to target list.
        and RID_AT_PUBLIC instead of RID_PUBLIC.
        (c_parser_statement_after_labels): Use RID_AT_TRY instead of
        RID_TRY and RID_AT_CATCH instead of RID_CATCH.
-       
+
 2010-09-30  Tom G. Christensen <tgc@jupiterrise.com>
 
        * doc/install.texi (Binaries): Update link to HP-UX porting centre.
 
        Merge from 'apple/trunk' branch on FSF servers.
        * c-parser.c: Applied change originally in c-parse.in.
-       
+
        2005-10-04  Fariborz Jahanian <fjahanian@apple.com>
 
        Radar 4281748
 
 2010-07-22  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
 
-       PR target/43698
+       PR target/43698
        * config/arm/arm.md: Split arm_rev into *arm_rev and *thumb1_rev.
        Set *arm_rev to be predicable.
 
 
        * ipa-split.c (split_function): For aggregate values, set the return
        slot optimization bit.  When passing DECL_BY_REFERENCE, produce
-       *<retval> = fncall.part ().
+       *<retval> = fncall.part ().
        (execute_split_functions): Do not care about DECL_BY_REFERENCE.
 
 2010-07-02  Sandra Loosemore  <sandra@codesourcery.com>
index adc1d13..509000b 100644 (file)
@@ -20214,7 +20214,7 @@ rs6000_emit_prologue (void)
   /* In AIX ABI we need to make sure r2 is really saved.  */
   if (TARGET_AIX && crtl->calls_eh_return)
     {
-      rtx tmp_reg, tmp_reg_si, compare_result, toc_save_done, jump;
+      rtx tmp_reg, tmp_reg_si, hi, lo, compare_result, toc_save_done, jump;
       long toc_restore_insn;
 
       gcc_assert (frame_reg_rtx == frame_ptr_rtx
@@ -20232,15 +20232,13 @@ rs6000_emit_prologue (void)
         toc adjusting stub.  */
       emit_move_insn (tmp_reg_si, gen_rtx_MEM (SImode, tmp_reg));
       toc_restore_insn = TARGET_32BIT ? 0x80410014 : 0xE8410028;
-      toc_restore_insn = (toc_restore_insn ^ 0x80000000) - 0x80000000;
-      emit_insn (gen_xorsi3 (tmp_reg_si, tmp_reg_si,
-                            GEN_INT (toc_restore_insn & ~0xffff)));
+      hi = gen_int_mode (toc_restore_insn & ~0xffff, SImode);
+      emit_insn (gen_xorsi3 (tmp_reg_si, tmp_reg_si, hi));
       compare_result = gen_rtx_REG (CCUNSmode, CR0_REGNO);
       validate_condition_mode (EQ, CCUNSmode);
+      lo = gen_int_mode (toc_restore_insn & 0xffff, SImode);
       emit_insn (gen_rtx_SET (VOIDmode, compare_result,
-                             gen_rtx_COMPARE (CCUNSmode, tmp_reg_si,
-                                              GEN_INT (toc_restore_insn
-                                                       & 0xffff))));
+                             gen_rtx_COMPARE (CCUNSmode, tmp_reg_si, lo)));
       toc_save_done = gen_label_rtx ();
       jump = gen_rtx_IF_THEN_ELSE (VOIDmode,
                                   gen_rtx_EQ (VOIDmode, compare_result,