Message ID | 4833987.MWR9OqUvYI@polaris |
---|---|
State | New |
Headers | show |
Hi Eric, On Mon, Nov 07, 2016 at 10:44:44AM +0100, Eric Botcazou wrote: > Tested on PowerPC64/Linux, OK for the mainline? > > > * config/rs6000/rs6000.c (rs6000_emit_move): Also use a TOC reference > after forcing to constant memory when the code model is medium. Sorry I lost track of this patch again. After a lot of staring it does seem okay. Approved for trunk. Please watch out for fallout though. Thanks, Segher > --- config/rs6000/rs6000.c (revision 241856) > +++ config/rs6000/rs6000.c (working copy) > @@ -10673,10 +10673,7 @@ rs6000_emit_move (rtx dest, rtx source, > > if (TARGET_TOC > && GET_CODE (XEXP (operands[1], 0)) == SYMBOL_REF > - && constant_pool_expr_p (XEXP (operands[1], 0)) > - && ASM_OUTPUT_SPECIAL_POOL_ENTRY_P ( > - get_pool_constant (XEXP (operands[1], 0)), > - get_pool_mode (XEXP (operands[1], 0)))) > + && use_toc_relative_ref (XEXP (operands[1], 0), mode)) > { > rtx tocref = create_TOC_reference (XEXP (operands[1], 0), > operands[0]);
Index: config/rs6000/rs6000.c =================================================================== --- config/rs6000/rs6000.c (revision 241856) +++ config/rs6000/rs6000.c (working copy) @@ -10673,10 +10673,7 @@ rs6000_emit_move (rtx dest, rtx source, if (TARGET_TOC && GET_CODE (XEXP (operands[1], 0)) == SYMBOL_REF - && constant_pool_expr_p (XEXP (operands[1], 0)) - && ASM_OUTPUT_SPECIAL_POOL_ENTRY_P ( - get_pool_constant (XEXP (operands[1], 0)), - get_pool_mode (XEXP (operands[1], 0)))) + && use_toc_relative_ref (XEXP (operands[1], 0), mode)) { rtx tocref = create_TOC_reference (XEXP (operands[1], 0), operands[0]);