[llvm-commits] [llvm] r45997 - in /llvm/trunk: lib/Target/TargetCallingConv.td lib/Target/X86/X86CallingConv.td utils/TableGen/CallingConvEmitter.cpp
Evan Cheng
evan.cheng at apple.com
Mon Jan 14 19:34:58 PST 2008
Author: evancheng
Date: Mon Jan 14 21:34:58 2008
New Revision: 45997
URL: http://llvm.org/viewvc/llvm-project?rev=45997&view=rev
Log:
Rename CCIfStruct to CCIfByVal and CCStructAssign to CCPassByVal. Remove unused parameters of CCStructAssign and add size and alignment requirement info.
Modified:
llvm/trunk/lib/Target/TargetCallingConv.td
llvm/trunk/lib/Target/X86/X86CallingConv.td
llvm/trunk/utils/TableGen/CallingConvEmitter.cpp
Modified: llvm/trunk/lib/Target/TargetCallingConv.td
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/TargetCallingConv.td?rev=45997&r1=45996&r2=45997&view=diff
==============================================================================
--- llvm/trunk/lib/Target/TargetCallingConv.td (original)
+++ llvm/trunk/lib/Target/TargetCallingConv.td Mon Jan 14 21:34:58 2008
@@ -32,9 +32,9 @@
string Predicate = predicate;
}
-/// CCIfStruct - If the current argument is a struct, apply
+/// CCIfByVal - If the current argument has ByVal parameter attribute, apply
/// Action A.
-class CCIfStruct<CCAction A> : CCIf<"ArgFlags & ISD::ParamFlags::ByVal", A> {
+class CCIfByVal<CCAction A> : CCIf<"ArgFlags & ISD::ParamFlags::ByVal", A> {
}
/// CCIfCC - Match of the current calling convention is 'CC'.
@@ -68,11 +68,12 @@
int Align = align;
}
-/// CCStructAssign - This action always matches: it will use the C ABI and
-/// the register availability to decided whether to assign to a set of
-/// registers or to a stack slot.
-class CCStructAssign<list<Register> regList> : CCAction {
- list<Register> RegList = regList;
+/// 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.
+class CCPassByVal<int size, int align> : CCAction {
+ int Size = size;
+ int Align = align;
}
/// CCPromoteToType - If applied, this promotes the specified current value to
Modified: llvm/trunk/lib/Target/X86/X86CallingConv.td
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86CallingConv.td?rev=45997&r1=45996&r2=45997&view=diff
==============================================================================
--- llvm/trunk/lib/Target/X86/X86CallingConv.td (original)
+++ llvm/trunk/lib/Target/X86/X86CallingConv.td Mon Jan 14 21:34:58 2008
@@ -97,7 +97,7 @@
def CC_X86_64_C : CallingConv<[
// Handles byval parameters.
- CCIfStruct<CCStructAssign<[]>>,
+ CCIfByVal<CCPassByVal<8, 8>>,
// Promote i8/i16 arguments to i32.
CCIfType<[i8, i16], CCPromoteToType<i32>>,
@@ -136,7 +136,7 @@
// namely R9
def CC_X86_64_TailCall : CallingConv<[
// Handles byval parameters.
- CCIfStruct<CCStructAssign<[]>>,
+ CCIfByVal<CCPassByVal<8, 8>>,
// Promote i8/i16 arguments to i32.
CCIfType<[i8, i16], CCPromoteToType<i32>>,
@@ -177,7 +177,7 @@
/// regs.
def CC_X86_32_Common : CallingConv<[
// Handles byval parameters.
- CCIfStruct<CCStructAssign<[]>>,
+ CCIfByVal<CCPassByVal<4, 4>>,
// Integer/Float values get stored in stack slots that are 4 bytes in
// size and 4-byte aligned.
Modified: llvm/trunk/utils/TableGen/CallingConvEmitter.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/TableGen/CallingConvEmitter.cpp?rev=45997&r1=45996&r2=45997&view=diff
==============================================================================
--- llvm/trunk/utils/TableGen/CallingConvEmitter.cpp (original)
+++ llvm/trunk/utils/TableGen/CallingConvEmitter.cpp Mon Jan 14 21:34:58 2008
@@ -140,9 +140,12 @@
<< IndentStr << IndentStr << "LocInfo = CCValAssign::ZExt;\n"
<< IndentStr << "else\n"
<< IndentStr << IndentStr << "LocInfo = CCValAssign::AExt;\n";
- } else if (Action->isSubClassOf("CCStructAssign")) {
- O << IndentStr <<
- "State.HandleStruct(ValNo, ValVT, LocVT, LocInfo, ArgFlags);\n";
+ } else if (Action->isSubClassOf("CCPassByVal")) {
+ int Size = Action->getValueAsInt("Size");
+ int Align = Action->getValueAsInt("Align");
+ O << IndentStr
+ << "State.HandleByVal(ValNo, ValVT, LocVT, LocInfo, "
+ << Size << ", " << Align << ", ArgFlags);\n";
O << IndentStr << "return false;\n";
} else {
Action->dump();
More information about the llvm-commits
mailing list