summaryrefslogtreecommitdiffstats
path: root/clang/lib/Sema/SemaStmtAsm.cpp
diff options
context:
space:
mode:
authorHans Wennborg <hans@hanshq.net>2014-09-04 22:16:33 +0000
committerHans Wennborg <hans@hanshq.net>2014-09-04 22:16:33 +0000
commitd71907dd077ba3385dbb5ebad479eeb7391cef91 (patch)
tree920c3ec59c50d6d80bcab90bee8f679e5c714dbe /clang/lib/Sema/SemaStmtAsm.cpp
parent8d082d187e573988ef9e3e5ecbbe2553bdeb5a70 (diff)
downloadbcm5719-llvm-d71907dd077ba3385dbb5ebad479eeb7391cef91.tar.gz
bcm5719-llvm-d71907dd077ba3385dbb5ebad479eeb7391cef91.zip
Don't emit prologues or epilogues for naked functions (PR18791, PR20028)
For naked functions with parameters, Clang would still emit stores in the prologue that would clobber the stack, because LLVM doesn't set up a stack frame. (This shows up in -O0 compiles, because the stores are optimized away otherwise.) For example: __attribute__((naked)) int f(int x) { asm("movl $42, %eax"); asm("retl"); } Would result in: _Z1fi: movl 12(%esp), %eax movl %eax, (%esp) <--- Oops. movl $42, %eax retl Differential Revision: http://reviews.llvm.org/D5183 llvm-svn: 217198
Diffstat (limited to 'clang/lib/Sema/SemaStmtAsm.cpp')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud