aboutsummaryrefslogtreecommitdiffstats
path: root/include/llvm
diff options
context:
space:
mode:
authorDuncan Sands <baldrick@free.fr>2009-11-16 15:28:17 +0000
committerDuncan Sands <baldrick@free.fr>2009-11-16 15:28:17 +0000
commit4007324b58db24b0d358445a0a866a9047dac75e (patch)
treebaa2b16b6e23fa790758b3b2141371cfa70316a8 /include/llvm
parentddff941357bd836243ed7004ab88db09490176d8 (diff)
downloadexternal_llvm-4007324b58db24b0d358445a0a866a9047dac75e.zip
external_llvm-4007324b58db24b0d358445a0a866a9047dac75e.tar.gz
external_llvm-4007324b58db24b0d358445a0a866a9047dac75e.tar.bz2
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
Diffstat (limited to 'include/llvm')
-rw-r--r--include/llvm/Support/Compiler.h6
-rw-r--r--include/llvm/Support/IRBuilder.h3
2 files changed, 9 insertions, 0 deletions
diff --git a/include/llvm/Support/Compiler.h b/include/llvm/Support/Compiler.h
index da31f98..cce652f 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 05c3c56..1d3c08c 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;