[PATCH] D22870: [AArch64] Return the correct size for TLSDESC_CALLSEQ

Diana Picus via llvm-commits llvm-commits at lists.llvm.org
Wed Jul 27 08:40:08 PDT 2016


rovka created this revision.
rovka added reviewers: t.p.northover, dexonsmith, kristof.beyls.
rovka added subscribers: llvm-commits, rengolin, emaste.
Herald added a subscriber: aemerson.

The branch relaxation pass is computing the wrong offsets because it assumes
TLSDESC_CALLSEQ eats up 4 bytes, when in fact it is lowered to an instruction
sequence taking up 16 bytes. This can become a problem in huge files with lots
of TLS accesses, as it may slowly move branch targets out of the range computed
by the branch relaxation pass.

Fixes PR24234.

https://reviews.llvm.org/D22870

Files:
  lib/Target/AArch64/AArch64.h
  lib/Target/AArch64/AArch64BranchRelaxation.cpp
  lib/Target/AArch64/AArch64InstrInfo.cpp
  lib/Target/AArch64/AArch64TargetMachine.cpp
  test/CodeGen/MIR/AArch64/inst-size-tlsdesc-callseq.mir

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D22870.65749.patch
Type: text/x-patch
Size: 5106 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20160727/9d28f351/attachment.bin>


More information about the llvm-commits mailing list