[llvm-commits] CVS: llvm/lib/Transforms/IPO/LowerSetJmp.cpp SimplifyLibCalls.cpp

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



Changes in directory llvm/lib/Transforms/IPO:

LowerSetJmp.cpp updated: 1.27 -> 1.28
SimplifyLibCalls.cpp updated: 1.54 -> 1.55
---
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:  (+11 -9)

 LowerSetJmp.cpp      |   15 ++++++++-------
 SimplifyLibCalls.cpp |    5 +++--
 2 files changed, 11 insertions(+), 9 deletions(-)


Index: llvm/lib/Transforms/IPO/LowerSetJmp.cpp
diff -u llvm/lib/Transforms/IPO/LowerSetJmp.cpp:1.27 llvm/lib/Transforms/IPO/LowerSetJmp.cpp:1.28
--- llvm/lib/Transforms/IPO/LowerSetJmp.cpp:1.27	Wed Jun 15 17:49:30 2005
+++ llvm/lib/Transforms/IPO/LowerSetJmp.cpp	Sat Oct 22 23:37:20 2005
@@ -204,32 +204,33 @@
 
   // void __llvm_sjljeh_init_setjmpmap(void**)
   InitSJMap = M.getOrInsertFunction("__llvm_sjljeh_init_setjmpmap",
-                                    Type::VoidTy, SBPPTy, NULL);
+                                    Type::VoidTy, SBPPTy, (Type *)0);
   // void __llvm_sjljeh_destroy_setjmpmap(void**)
   DestroySJMap = M.getOrInsertFunction("__llvm_sjljeh_destroy_setjmpmap",
-                                       Type::VoidTy, SBPPTy, NULL);
+                                       Type::VoidTy, SBPPTy, (Type *)0);
 
   // void __llvm_sjljeh_add_setjmp_to_map(void**, void*, unsigned)
   AddSJToMap = M.getOrInsertFunction("__llvm_sjljeh_add_setjmp_to_map",
                                      Type::VoidTy, SBPPTy, SBPTy,
-                                     Type::UIntTy, NULL);
+                                     Type::UIntTy, (Type *)0);
 
   // void __llvm_sjljeh_throw_longjmp(int*, int)
   ThrowLongJmp = M.getOrInsertFunction("__llvm_sjljeh_throw_longjmp",
-                                       Type::VoidTy, SBPTy, Type::IntTy, NULL);
+                                       Type::VoidTy, SBPTy, Type::IntTy,
+                                       (Type *)0);
 
   // unsigned __llvm_sjljeh_try_catching_longjmp_exception(void **)
   TryCatchLJ =
     M.getOrInsertFunction("__llvm_sjljeh_try_catching_longjmp_exception",
-                          Type::UIntTy, SBPPTy, NULL);
+                          Type::UIntTy, SBPPTy, (Type *)0);
 
   // bool __llvm_sjljeh_is_longjmp_exception()
   IsLJException = M.getOrInsertFunction("__llvm_sjljeh_is_longjmp_exception",
-                                        Type::BoolTy, NULL);
+                                        Type::BoolTy, (Type *)0);
 
   // int __llvm_sjljeh_get_longjmp_value()
   GetLJValue = M.getOrInsertFunction("__llvm_sjljeh_get_longjmp_value",
-                                     Type::IntTy, NULL);
+                                     Type::IntTy, (Type *)0);
   return true;
 }
 


Index: llvm/lib/Transforms/IPO/SimplifyLibCalls.cpp
diff -u llvm/lib/Transforms/IPO/SimplifyLibCalls.cpp:1.54 llvm/lib/Transforms/IPO/SimplifyLibCalls.cpp:1.55
--- llvm/lib/Transforms/IPO/SimplifyLibCalls.cpp:1.54	Thu Sep 29 01:17:27 2005
+++ llvm/lib/Transforms/IPO/SimplifyLibCalls.cpp	Sat Oct 22 23:37:20 2005
@@ -311,7 +311,8 @@
     if (!memcpy_func) {
       const Type *SBP = PointerType::get(Type::SByteTy);
       memcpy_func = M->getOrInsertFunction("llvm.memcpy", Type::VoidTy,SBP, SBP,
-                                           Type::UIntTy, Type::UIntTy, 0);
+                                           Type::UIntTy, Type::UIntTy,
+                                           (Type *)0);
     }
     return memcpy_func;
   }
@@ -319,7 +320,7 @@
   Function* get_floorf() {
     if (!floorf_func)
       floorf_func = M->getOrInsertFunction("floorf", Type::FloatTy,
-                                           Type::FloatTy, 0);
+                                           Type::FloatTy, (Type *)0);
     return floorf_func;
   }
   






More information about the llvm-commits mailing list