------- Comment #12 from janis at gcc dot gnu dot org 2009-03-19 17:00 ------- I tested this patch, which I assume is what was described in comment #11:
Index: gcc/config/rs6000/rs6000.c =================================================================== --- gcc/config/rs6000/rs6000.c (revision 144923) +++ gcc/config/rs6000/rs6000.c (working copy) @@ -5206,15 +5206,6 @@ rs6000_emit_move (rtx dest, rtx source, && ! legitimate_constant_pool_address_p (operands[1]) && ! toc_relative_expr_p (operands[1])) { - /* Emit a USE operation so that the constant isn't deleted if - expensive optimizations are turned on because nobody - references it. This should only be done for operands that - contain SYMBOL_REFs with CONSTANT_POOL_ADDRESS_P set. - This should not be done for operands that contain LABEL_REFs. - For now, we just handle the obvious case. */ - if (GET_CODE (operands[1]) != LABEL_REF) - emit_use (operands[1]); - #if TARGET_MACHO /* Darwin uses a special PIC legitimizer. */ if (DEFAULT_ABI == ABI_DARWIN && MACHOPIC_INDIRECT) I bootstrapped all languages except Ada on powerpc64-unknown-linux-gnu and ran the testsuite with -m32/-m64, and the only change was that test va-arg-trap-1 now passes. -- janis at gcc dot gnu dot org changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |dje at gcc dot gnu dot org, | |janis at gcc dot gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39254