summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/X86
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/X86
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/X86')
-rw-r--r--llvm/lib/Target/X86/X86FastISel.cpp5
1 files changed, 5 insertions, 0 deletions
diff --git a/llvm/lib/Target/X86/X86FastISel.cpp b/llvm/lib/Target/X86/X86FastISel.cpp
index 52e65670a50..0938eda9dad 100644
--- a/llvm/lib/Target/X86/X86FastISel.cpp
+++ b/llvm/lib/Target/X86/X86FastISel.cpp
@@ -2831,6 +2831,11 @@ bool X86FastISel::FastLowerCall(CallLoweringInfo &CLI) {
OutRegs.push_back(VA.getLocReg());
} else {
assert(VA.isMemLoc());
+
+ // Don't emit stores for undef values.
+ if (isa<UndefValue>(ArgVal))
+ continue;
+
unsigned LocMemOffset = VA.getLocMemOffset();
X86AddressMode AM;
AM.Base.Reg = RegInfo->getStackRegister();
OpenPOWER on IntegriCloud