diff options
author | Juergen Ributzka <juergen@apple.com> | 2014-07-31 00:11:11 +0000 |
---|---|---|
committer | Juergen Ributzka <juergen@apple.com> | 2014-07-31 00:11:11 +0000 |
commit | 39032673da9fe6da0c532f4c220090c793acb47d (patch) | |
tree | 4a83b26b5f52eb8c89dabe6d7b75f5903419c839 /llvm/lib/Target/AArch64/AArch64FastISel.cpp | |
parent | 5faa6225ad738883f76e94feb9414c911b31a0f6 (diff) | |
download | bcm5719-llvm-39032673da9fe6da0c532f4c220090c793acb47d.tar.gz bcm5719-llvm-39032673da9fe6da0c532f4c220090c793acb47d.zip |
[FastISel][AArch64 and X86] Don't emit stores for UNDEF arguments during function call lowering.
UNDEF arguments are not ment to be touched - especially for the webkit_js
calling convention. This fix reproduces the already existing behavior of
SelectionDAG in FastISel.
llvm-svn: 214366
Diffstat (limited to 'llvm/lib/Target/AArch64/AArch64FastISel.cpp')
-rw-r--r-- | llvm/lib/Target/AArch64/AArch64FastISel.cpp | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/llvm/lib/Target/AArch64/AArch64FastISel.cpp b/llvm/lib/Target/AArch64/AArch64FastISel.cpp index 371accb5829..d80f34ca2d3 100644 --- a/llvm/lib/Target/AArch64/AArch64FastISel.cpp +++ b/llvm/lib/Target/AArch64/AArch64FastISel.cpp @@ -1280,6 +1280,10 @@ bool AArch64FastISel::ProcessCallArgs(CallLoweringInfo &CLI, } else { assert(VA.isMemLoc() && "Assuming store on stack."); + // Don't emit stores for undef values. + if (isa<UndefValue>(ArgVal)) + continue; + // Need to store on the stack. unsigned ArgSize = (ArgVT.getSizeInBits() + 7) / 8; |