[X86ISelLowering] Fix TLSADDR lowering when shrink-wrapping is enabled.
authorDavide Italiano <davide@freebsd.org>
Sat, 20 Feb 2016 00:44:47 +0000 (00:44 +0000)
committerDavide Italiano <davide@freebsd.org>
Sat, 20 Feb 2016 00:44:47 +0000 (00:44 +0000)
commit228978c0dcfc9a9793f3dc8a69f42471192223bc
treeff9cf76b1ca94e1ca16afe253f3a07862d75018f
parent467b5b9024ec1e9348ad24ea736eb9a94c653bb0
[X86ISelLowering] Fix TLSADDR lowering when shrink-wrapping is enabled.

TLSADDR nodes are lowered into actuall calls inside MC. In order to prevent
shrink-wrapping from pushing prologue/epilogue past them (which result
in TLS variables being accessed before the stack frame is set up), we
put markers, so that the stack gets adjusted properly.
Thanks to Quentin Colombet for guidance/help on how to fix this problem!

llvm-svn: 261387
llvm/lib/Target/X86/X86ISelLowering.cpp
llvm/lib/Target/X86/X86ISelLowering.h
llvm/lib/Target/X86/X86InstrCompiler.td
llvm/test/CodeGen/X86/tls-shrink-wrapping.ll [new file with mode: 0644]