Make sure that if anyone passes a name by accident for the isSigned

parameter of CreateIntCast then they get an error from the compiler
(or from the linker with a non-gcc compiler).  Another possibility
is to flip the order of the DestTy and isSigned parameters, since you
should then get a compiler warning if you try to use a char* for a
Type*.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@88913 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Duncan Sands 2009-11-16 15:28:17 +00:00
parent ddff941357
commit 4007324b58
2 changed files with 9 additions and 0 deletions

View File

@ -78,4 +78,10 @@
#define NORETURN
#endif
#ifdef __GNUC__
#define ERROR_IF_USED __attribute__((error("wrong usage")))
#else
#define ERROR_IF_USED
#endif
#endif

View File

@ -709,6 +709,9 @@ public:
return Folder.CreateIntCast(VC, DestTy, isSigned);
return Insert(CastInst::CreateIntegerCast(V, DestTy, isSigned), Name);
}
// Provided to resolve 'CreateIntCast(Ptr, Ptr, "...")', instead of converting
// the string to 'bool' for the isSigned parameter.
ERROR_IF_USED Value *CreateIntCast(Value *, const Type *, const char *);
Value *CreateFPCast(Value *V, const Type *DestTy, const Twine &Name = "") {
if (V->getType() == DestTy)
return V;