summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: af30da4)
raw | patch | inline | side by side (parent: af30da4)
author | Juergen Ributzka <juergen@apple.com> | |
Fri, 1 Aug 2014 18:04:14 +0000 (18:04 +0000) | ||
committer | Juergen Ributzka <juergen@apple.com> | |
Fri, 1 Aug 2014 18:04:14 +0000 (18:04 +0000) |
This is a followup patch for r214366, which added the same behavior to the
AArch64 and X86 FastISel code. This fix reproduces the already existing
behavior of SelectionDAG in FastISel.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@214531 91177308-0d34-0410-b5e6-96231b3b80d8
AArch64 and X86 FastISel code. This fix reproduces the already existing
behavior of SelectionDAG in FastISel.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@214531 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Target/ARM/ARMFastISel.cpp | patch | blob | history | |
test/CodeGen/ARM/fast-isel-call.ll | patch | blob | history |
index e2d90cd9306c0a5621a5c7cb26ef787f7e611fcb..3433efc0d5e1ff122f5f96822702a2dcb0abfd5f 100644 (file)
// Process the args.
for (unsigned i = 0, e = ArgLocs.size(); i != e; ++i) {
CCValAssign &VA = ArgLocs[i];
+ const Value *ArgVal = Args[VA.getValNo()];
unsigned Arg = ArgRegs[VA.getValNo()];
MVT ArgVT = ArgVTs[VA.getValNo()];
} else {
assert(VA.isMemLoc());
// Need to store on the stack.
+
+ // Don't emit stores for undef values.
+ if (isa<UndefValue>(ArgVal))
+ continue;
+
Address Addr;
Addr.BaseType = Address::RegBase;
Addr.Base.Reg = ARM::SP;
index 2d7378e47f2f41245517b62598eb25922f7c66c8..9d9e341647abf49b72f9a21ecc972662248162d3 100644 (file)
ret void
}
+declare void @bar2(i32 %a1, i32 %a2, i32 %a3, i32 %a4, i32 %a5, i32 %a6)
+
+define void @call_undef_args() {
+; ARM-LABEL: call_undef_args
+; ARM: movw r0, #1
+; ARM-NEXT: movw r1, #2
+; ARM-NEXT: movw r2, #3
+; ARM-NEXT: movw r3, #4
+; ARM-NOT: str {{r[0-9]+}}, [sp]
+; ARM: movw [[REG:l?r[0-9]*]], #6
+; ARM-NEXT: str [[REG]], [sp, #4]
+ call void @bar2(i32 1, i32 2, i32 3, i32 4, i32 undef, i32 6)
+ ret void
+}
+
declare void @print(float)