From 4007324b58db24b0d358445a0a866a9047dac75e Mon Sep 17 00:00:00 2001 From: Duncan Sands Date: Mon, 16 Nov 2009 15:28:17 +0000 Subject: [PATCH] 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 --- include/llvm/Support/Compiler.h | 6 ++++++ include/llvm/Support/IRBuilder.h | 3 +++ 2 files changed, 9 insertions(+) diff --git a/include/llvm/Support/Compiler.h b/include/llvm/Support/Compiler.h index da31f986288..cce652f9261 100644 --- a/include/llvm/Support/Compiler.h +++ b/include/llvm/Support/Compiler.h @@ -78,4 +78,10 @@ #define NORETURN #endif +#ifdef __GNUC__ +#define ERROR_IF_USED __attribute__((error("wrong usage"))) +#else +#define ERROR_IF_USED +#endif + #endif diff --git a/include/llvm/Support/IRBuilder.h b/include/llvm/Support/IRBuilder.h index 05c3c569aa1..1d3c08c6375 100644 --- a/include/llvm/Support/IRBuilder.h +++ b/include/llvm/Support/IRBuilder.h @@ -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;