[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