[llvm-commits] CVS: llvm/lib/ExecutionEngine/ExecutionEngine.cpp

Chris Lattner lattner at cs.uiuc.edu
Sun Aug 15 18:05:48 PDT 2004



Changes in directory llvm/lib/ExecutionEngine:

ExecutionEngine.cpp updated: 1.57 -> 1.58
---
Log message:

Don't pass too many arguments into runFunction


---
Diffs of the changes:  (+15 -8)

Index: llvm/lib/ExecutionEngine/ExecutionEngine.cpp
diff -u llvm/lib/ExecutionEngine/ExecutionEngine.cpp:1.57 llvm/lib/ExecutionEngine/ExecutionEngine.cpp:1.58
--- llvm/lib/ExecutionEngine/ExecutionEngine.cpp:1.57	Wed Aug  4 03:40:55 2004
+++ llvm/lib/ExecutionEngine/ExecutionEngine.cpp	Sun Aug 15 20:05:35 2004
@@ -102,14 +102,21 @@
   std::vector<GenericValue> GVArgs;
   GenericValue GVArgc;
   GVArgc.IntVal = argv.size();
-  GVArgs.push_back(GVArgc); // Arg #0 = argc.
-  GVArgs.push_back(PTOGV(CreateArgv(this, argv))); // Arg #1 = argv.
-  assert(((char **)GVTOP(GVArgs[1]))[0] && "argv[0] was null after CreateArgv");
-
-  std::vector<std::string> EnvVars;
-  for (unsigned i = 0; envp[i]; ++i)
-    EnvVars.push_back(envp[i]);
-  GVArgs.push_back(PTOGV(CreateArgv(this, EnvVars))); // Arg #2 = envp.
+  unsigned NumArgs = Fn->getFunctionType()->getNumParams();
+  if (NumArgs) {
+    GVArgs.push_back(GVArgc); // Arg #0 = argc.
+    if (NumArgs > 1) {
+      GVArgs.push_back(PTOGV(CreateArgv(this, argv))); // Arg #1 = argv.
+      assert(((char **)GVTOP(GVArgs[1]))[0] &&
+             "argv[0] was null after CreateArgv");
+      if (NumArgs > 2) {
+        std::vector<std::string> EnvVars;
+        for (unsigned i = 0; envp[i]; ++i)
+          EnvVars.push_back(envp[i]);
+        GVArgs.push_back(PTOGV(CreateArgv(this, EnvVars))); // Arg #2 = envp.
+      }
+    }
+  }
   return runFunction(Fn, GVArgs).IntVal;
 }
 






More information about the llvm-commits mailing list