summaryrefslogtreecommitdiff
path: root/include/llvm/Target/TargetCallingConv.td
diff options
context:
space:
mode:
authorRafael Espindola <rafael.espindola@gmail.com>2010-08-06 15:35:32 +0000
committerRafael Espindola <rafael.espindola@gmail.com>2010-08-06 15:35:32 +0000
commit55e958746901ef8c04f370e746a7538137d0bcf8 (patch)
tree2d23220ec2267d39dbb9cdd9e23cb630ee35980c /include/llvm/Target/TargetCallingConv.td
parente52e9d60456073dddd691ae94c09b790f4bc26d5 (diff)
downloadllvm-55e958746901ef8c04f370e746a7538137d0bcf8.tar.gz
llvm-55e958746901ef8c04f370e746a7538137d0bcf8.tar.bz2
llvm-55e958746901ef8c04f370e746a7538137d0bcf8.tar.xz
Fix eabi calling convention when a 64 bit value shadows r3.
Without this what was happening was: * R3 is not marked as "used" * ARM backend thinks it has to save it to the stack because of vaarg * Offset computation correctly ignores it * Offsets are wrong git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110446 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/llvm/Target/TargetCallingConv.td')
-rw-r--r--include/llvm/Target/TargetCallingConv.td7
1 files changed, 7 insertions, 0 deletions
diff --git a/include/llvm/Target/TargetCallingConv.td b/include/llvm/Target/TargetCallingConv.td
index ceaeb0b503..35b648216a 100644
--- a/include/llvm/Target/TargetCallingConv.td
+++ b/include/llvm/Target/TargetCallingConv.td
@@ -89,6 +89,13 @@ class CCAssignToStack<int size, int align> : CCAction {
int Align = align;
}
+/// CCAssignToStackWithShadow - Same as CCAssignToStack, but with a register
+/// to be shadowed.
+class CCAssignToStackWithShadow<int size, int align, Register reg> :
+ CCAssignToStack<size, align> {
+ Register ShadowReg = reg;
+}
+
/// CCPassByVal - This action always matches: it assigns the value to a stack
/// slot to implement ByVal aggregate parameter passing. Size and alignment
/// specify the minimum size and alignment for the stack slot.