summaryrefslogtreecommitdiffstats
path: root/clang/lib/Sema/SemaCXXCast.cpp
diff options
context:
space:
mode:
authorEvan Cheng <evan.cheng@apple.com>2010-03-25 00:10:31 +0000
committerEvan Cheng <evan.cheng@apple.com>2010-03-25 00:10:31 +0000
commitb07a29ecd4ca4f96b7f7f9731a761c58b7b1a9eb (patch)
tree88bc7b6baf8bd998e6acab825f5dd8dca4561ae2 /clang/lib/Sema/SemaCXXCast.cpp
parent2a020358dcc2e9b50dba411686e3a58a2766ad72 (diff)
downloadbcm5719-llvm-b07a29ecd4ca4f96b7f7f9731a761c58b7b1a9eb.tar.gz
bcm5719-llvm-b07a29ecd4ca4f96b7f7f9731a761c58b7b1a9eb.zip
Disable folding loads into tail call in 32-bit PIC mode. It can introduce illegal code like this:
addl $12, %esp popl %esi popl %edi popl %ebx popl %ebp jmpl *__Block_deallocator-L1$pb(%esi) # TAILCALL The problem is the global base register is assigned GR32 register class. TCRETURNmi needs the registers making up the address mode to have the GR32_TC register class. The *proper* fix is for X86DAGToDAGISel::getGlobalBaseReg() to return a copy from the global base register of the machine function rather than returning the register itself. But that has the potential of causing it to be coalesced to a more restrictive register class: GR32_TC. It can introduce additional copies and spills. For something as important the PIC base, it's not worth it especially since this is not an issue on 64-bit. llvm-svn: 99455
Diffstat (limited to 'clang/lib/Sema/SemaCXXCast.cpp')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud