Add ABIArgInfo::Direct kind, which passes arguments using whatever the
native IRgen type is. This is like Default, but without any extra
semantics (like automatic tweaking of structures or void).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63615 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/CodeGen/ABIInfo.h b/lib/CodeGen/ABIInfo.h
index e0917f7..d343ffd 100644
--- a/lib/CodeGen/ABIInfo.h
+++ b/lib/CodeGen/ABIInfo.h
@@ -27,6 +27,10 @@
   public:
     enum Kind {
       Default,
+      
+      Direct,    /// Pass the argument directly using the normal
+                 /// converted LLVM type.
+
       StructRet, /// Only valid for return values. The return value
                  /// should be passed through a pointer to a caller
                  /// allocated location passed as an implicit first
@@ -68,6 +72,9 @@
     static ABIArgInfo getDefault() { 
       return ABIArgInfo(Default); 
     }
+    static ABIArgInfo getDirect() { 
+      return ABIArgInfo(Direct); 
+    }
     static ABIArgInfo getStructRet() { 
       return ABIArgInfo(StructRet); 
     }
@@ -86,6 +93,7 @@
   
     Kind getKind() const { return TheKind; }
     bool isDefault() const { return TheKind == Default; }
+    bool isDirect() const { return TheKind == Direct; }
     bool isStructRet() const { return TheKind == StructRet; }
     bool isIgnore() const { return TheKind == Ignore; }
     bool isCoerce() const { return TheKind == Coerce; }