aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/Frontend/CompilerInvocation.cpp
diff options
context:
space:
mode:
authorFangrui Song <i@maskray.me>2025-01-06 08:59:42 -0800
committerGitHub <noreply@github.com>2025-01-06 08:59:42 -0800
commit5e0be962feb37b224590e91879f9ac4a1fcacb85 (patch)
tree532dfaa77f4186f21c1bea7920015f12a6e4ea24 /clang/lib/Frontend/CompilerInvocation.cpp
parentd00f65c6acd9f0e1ddae83391f55eb9d232d2f9e (diff)
downloadllvm-5e0be962feb37b224590e91879f9ac4a1fcacb85.zip
llvm-5e0be962feb37b224590e91879f9ac4a1fcacb85.tar.gz
llvm-5e0be962feb37b224590e91879f9ac4a1fcacb85.tar.bz2
[PowerPC] Support PIC Secure PLT for CALL_RM
https://reviews.llvm.org/D111433 introduced PPCISD::CALL_RM for -frounding-math. -msecure-plt -frounding-math {-fpic,-fPIC} codegen for PPC32 became incorrect when a function contains function calls but no global variable references (GlobalBaseReg). As reported by @q66 , musl/src/dirent/closedir.c implements such a function, which is miscompiled. PPCISD::CALL has custom logic to set up the base register (https://reviews.llvm.org/D42112). Add an extra case for CALL_RM. While here, improve the test to * actually test `case PPCISD::CALL`: we need a non-leaf function that doesn't access global variables (global variables lead to GlobalBaseReg, which call `getGlobalBaseReg()` as well). * test `ExternalSymbolSDNode` with a memset. Supersedes: #72758 Pull Request: https://github.com/llvm/llvm-project/pull/121281
Diffstat (limited to 'clang/lib/Frontend/CompilerInvocation.cpp')
0 files changed, 0 insertions, 0 deletions