This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

RE: [RFC: Patch, PR 60158] gcc/varasm.c : Pass actual alignment value to output_constant_pool_2


> -----Original Message-----
> From: Jeff Law [mailto:law@redhat.com]
> Sent: Friday, May 15, 2015 10:30 AM
> > Just to summarize: By default in GCC v4.7.x, all the constants are put
> > into '.rodata.str1.4' section. In GCC v4.8.x from r192719 onwards, one
> > of the move instruction of the string constant ".LC0" is getting
> > spilled. The reload pass, for any constants that aren't allowed and
> > can't be reloaded in to registers tries to change them into memory
> > references. Then while emitting that string constant to asm code
> > (A:varasm.c: output_constant_pool_1), it explicitly passes the
> > alignment as 1 which prevents the generation of fix-up table entries
> > in  'B: rs6000.c:rs6000_assemble_integer' because the data is
> > considered unaligned now.
> >
> > The bug seems to have gone latent with an unrelated trunk commit
> > r204695 [* tree-ssa-loop-ivopts.c (force_expr_to_var_cost): Refactor
> > the code. Handle type conversion.]. This commit chooses different
> > spill candidates hence all the string constants are being put in to
> > '.rodata.str1.4Âsection.
> >
> > The check I had in the test case is that if there is a
> > '.data.rel.ro.local', then there should be '.fixup' section generated.
> >
> > Please let me know if you need any other details.
> Thanks.  Even though I wasn't able to trigger the bug with the testcase from
> 65018, I went ahead and committed this patch to the trunk.  It can't hurt and
> it's the right thing to do.
> 
> Thanks for your patience,
> 

Jeff, Thanks for checking-in the changes.
Can we apply the patch to GCC v4.8 and GCC v4.9 branch as well?

As mentioned earlier, the issue is still reproducible in GCC v4.8 branch [r223205] but not in GCC v4.9 branch.

Regards,
Rohit

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]