[llvm-commits] CVS: llvm/include/llvm/Module.h

Jeff Cohen jeffc at jolt-lang.org
Sat Oct 22 21:37:40 PDT 2005



Changes in directory llvm/include/llvm:

Module.h updated: 1.62 -> 1.63
---
Log message:

When a function takes a variable number of pointer arguments, with a zero
pointer marking the end of the list, the zero *must* be cast to the pointer
type.  An un-cast zero is a 32-bit int, and at least on x86_64, gcc will
not extend the zero to 64 bits, thus allowing the upper 32 bits to be
random junk.

The new END_WITH_NULL macro may be used to annotate a such a function
so that GCC (version 4 or newer) will detect the use of un-casted zero
at compile time.


---
Diffs of the changes:  (+3 -1)

 Module.h |    4 +++-
 1 files changed, 3 insertions(+), 1 deletion(-)


Index: llvm/include/llvm/Module.h
diff -u llvm/include/llvm/Module.h:1.62 llvm/include/llvm/Module.h:1.63
--- llvm/include/llvm/Module.h:1.62	Sun May 15 20:49:23 2005
+++ llvm/include/llvm/Module.h	Sat Oct 22 23:37:19 2005
@@ -22,6 +22,7 @@
 #include "llvm/Function.h"
 #include "llvm/GlobalVariable.h"
 #include "llvm/ADT/SetVector.h"
+#include "llvm/Support/DataTypes.h"
 
 namespace llvm {
 
@@ -111,7 +112,8 @@
   /// table.  If it does not exist, add a prototype for the function and return
   /// it.  This version of the method takes a null terminated list of function
   /// arguments, which makes it easier for clients to use.
-  Function *getOrInsertFunction(const std::string &Name, const Type *RetTy,...);
+  Function *getOrInsertFunction(const std::string &Name, const Type *RetTy,...)
+    END_WITH_NULL;
 
   /// getFunction - Look up the specified function in the module symbol table.
   /// If it does not exist, return null.






More information about the llvm-commits mailing list