[llvm-commits] [dragonegg] r88789 - /dragonegg/trunk/llvm-abi.h

Duncan Sands baldrick at free.fr
Sat Nov 14 04:42:06 PST 2009


Author: baldrick
Date: Sat Nov 14 06:42:06 2009
New Revision: 88789

URL: http://llvm.org/viewvc/llvm-project?rev=88789&view=rev
Log:
Port commit 87052 (bwilson) from llvm-gcc:
Revert 86892.

Modified:
    dragonegg/trunk/llvm-abi.h

Modified: dragonegg/trunk/llvm-abi.h
URL: http://llvm.org/viewvc/llvm-project/dragonegg/trunk/llvm-abi.h?rev=88789&r1=88788&r2=88789&view=diff

==============================================================================
--- dragonegg/trunk/llvm-abi.h (original)
+++ dragonegg/trunk/llvm-abi.h Sat Nov 14 06:42:06 2009
@@ -630,18 +630,19 @@
       Elts.push_back(ATy);
     }
 
-    // Put any left over bytes into one last register.  This target-independent
-    // code does not know the size of the argument registers, so use the
-    // smallest size that will work.
-    if (Size > 4) {
-      Elts.push_back(Type::getInt64Ty(getGlobalContext()));
-    } else if (Size > 2) {
+    if (Size >= 4) {
       Elts.push_back(Type::getInt32Ty(getGlobalContext()));
-    } else if (Size > 1) {
+      Size -= 4;
+    }
+    if (Size >= 2) {
       Elts.push_back(Type::getInt16Ty(getGlobalContext()));
-    } else {
+      Size -= 2;
+    }
+    if (Size >= 1) {
       Elts.push_back(Type::getInt8Ty(getGlobalContext()));
+      Size -= 1;
     }
+    assert(Size == 0 && "Didn't cover value?");
     const StructType *STy = StructType::get(getGlobalContext(), Elts, false);
 
     unsigned i = 0;
@@ -1076,18 +1077,19 @@
       Elts.push_back(ATy);
     }
 
-    // Put any left over bytes into one last register.  This target-independent
-    // code does not know the size of the argument registers, so use the
-    // smallest size that will work.
-    if (Size > 4) {
-      Elts.push_back(Type::getInt64Ty(getGlobalContext()));
-    } else if (Size > 2) {
+    if (Size >= 4) {
       Elts.push_back(Type::getInt32Ty(getGlobalContext()));
-    } else if (Size > 1) {
+      Size -= 4;
+    }
+    if (Size >= 2) {
       Elts.push_back(Type::getInt16Ty(getGlobalContext()));
-    } else {
+      Size -= 2;
+    }
+    if (Size >= 1) {
       Elts.push_back(Type::getInt8Ty(getGlobalContext()));
+      Size -= 1;
     }
+    assert(Size == 0 && "Didn't cover value?");
     const StructType *STy = StructType::get(getGlobalContext(), Elts, false);
 
     unsigned i = 0;





More information about the llvm-commits mailing list