Message ID | 1424405747482.38519@caviumnetworks.com |
---|---|
State | New |
Headers | show |
On 20/02/15 04:14, Hurugalawadi, Naveen wrote: > Hi Marcus, > >>> The handling of SYMBOL_SMALL_TPREL is present in 4.9 and very clearly >>> has exactly the same issue. > > Please find attached the patch ported for gcc-4.9. > > Please review the patch and let us know if its okay? > Regression tested on aarch64-elf. > > Thanks, > Naveen > > > 2015-02-20 Andrew Pinski <apinski@cavium.com> > Naveen H.S <Naveen.Hurugalawadi@caviumnetworks.com> > > * config/aarch64/aarch64.c (*aarch64_load_symref_appropriately): > Check whether the destination of SYMBOL_SMALL_TPREL is Pmode. > OK. R. > > symbolref_ilp32.patch > > > Index: gcc/config/aarch64/aarch64.c > =================================================================== > --- gcc/config/aarch64/aarch64.c (revision 220806) > +++ gcc/config/aarch64/aarch64.c (working copy) > @@ -659,6 +659,10 @@ > case SYMBOL_SMALL_TPREL: > { > rtx tp = aarch64_load_tp (NULL); > + > + if (GET_MODE (dest) != Pmode) > + tp = gen_lowpart (GET_MODE (dest), tp); > + > emit_insn (gen_tlsle_small (dest, tp, imm)); > set_unique_reg_note (get_last_insn (), REG_EQUIV, imm); > return; >
Index: gcc/config/aarch64/aarch64.c =================================================================== --- gcc/config/aarch64/aarch64.c (revision 220806) +++ gcc/config/aarch64/aarch64.c (working copy) @@ -659,6 +659,10 @@ case SYMBOL_SMALL_TPREL: { rtx tp = aarch64_load_tp (NULL); + + if (GET_MODE (dest) != Pmode) + tp = gen_lowpart (GET_MODE (dest), tp); + emit_insn (gen_tlsle_small (dest, tp, imm)); set_unique_reg_note (get_last_insn (), REG_EQUIV, imm); return;