aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/CodeGen/LiveDebugVariables.cpp
diff options
context:
space:
mode:
authorBenedikt Lukas Huber <benedikt.huber@tuwien.ac.at>2025-09-17 20:03:27 +0200
committerGitHub <noreply@github.com>2025-09-17 11:03:27 -0700
commite56b479d9f096171287e23169ce23295046535c0 (patch)
treeb1bee28d633eeb15bc5f0ef94d618a43e5a27dc3 /llvm/lib/CodeGen/LiveDebugVariables.cpp
parent4e3aa76d7f5629e7577f837d0e2397cafd85e6c5 (diff)
downloadllvm-e56b479d9f096171287e23169ce23295046535c0.zip
llvm-e56b479d9f096171287e23169ce23295046535c0.tar.gz
llvm-e56b479d9f096171287e23169ce23295046535c0.tar.bz2
[Hexagon] Bugfix in VarArg lowering: Special case for musl (#157564)
While debugging #145206 I found that a possible cause for the problem is the call to printf, which is variadic. In a musl environment VarArgs are treated like *non* VarArgs. The handling of this special case was bypassed by the commit a4f85515c20566a3c059aacd1ee3554b598f33f0. The reason is that the arguement `TreatAsVarArg` is only set to `true` in an *non* musl env. `TreatAsVarArg` determines the result of `isVarArg()`. The `CCIfArgVarArg` class only checks each individual variable, but not whether `isVarArg()` is true. Without the special case, the unnamed arguments are always passed on the stack, as is standard calling convention. But with musl also unnamed arguments can be passed in registers. Possibly, this fixes #145206.
Diffstat (limited to 'llvm/lib/CodeGen/LiveDebugVariables.cpp')
0 files changed, 0 insertions, 0 deletions