summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/AArch64/AArch64FastISel.cpp
diff options
context:
space:
mode:
authorJuergen Ributzka <juergen@apple.com>2014-07-31 00:11:11 +0000
committerJuergen Ributzka <juergen@apple.com>2014-07-31 00:11:11 +0000
commit39032673da9fe6da0c532f4c220090c793acb47d (patch)
tree4a83b26b5f52eb8c89dabe6d7b75f5903419c839 /llvm/lib/Target/AArch64/AArch64FastISel.cpp
parent5faa6225ad738883f76e94feb9414c911b31a0f6 (diff)
downloadbcm5719-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.cpp4
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;
OpenPOWER on IntegriCloud