summaryrefslogtreecommitdiffstats
path: root/llvm/unittests/IR
diff options
context:
space:
mode:
authorRafael Espindola <rafael.espindola@gmail.com>2015-02-23 21:51:06 +0000
committerRafael Espindola <rafael.espindola@gmail.com>2015-02-23 21:51:06 +0000
commit993502eafd8f108d266c21726b2f628fe50628e6 (patch)
tree005c8d923af2a423451eb2e70b92efcbb369271d /llvm/unittests/IR
parent006c490ba8e26c3f34ea8efc34ad0e983d5e3107 (diff)
downloadbcm5719-llvm-993502eafd8f108d266c21726b2f628fe50628e6.tar.gz
bcm5719-llvm-993502eafd8f108d266c21726b2f628fe50628e6.zip
Fix invalid cast.
Fixes PR22525. Patch by Ben Longbons with testcase by me. llvm-svn: 230271
Diffstat (limited to 'llvm/unittests/IR')
-rw-r--r--llvm/unittests/IR/ConstantsTest.cpp16
1 files changed, 16 insertions, 0 deletions
diff --git a/llvm/unittests/IR/ConstantsTest.cpp b/llvm/unittests/IR/ConstantsTest.cpp
index 5414b25ca3a..5d271e220ef 100644
--- a/llvm/unittests/IR/ConstantsTest.cpp
+++ b/llvm/unittests/IR/ConstantsTest.cpp
@@ -7,12 +7,14 @@
//
//===----------------------------------------------------------------------===//
+#include "llvm/AsmParser/Parser.h"
#include "llvm/IR/Constants.h"
#include "llvm/IR/DerivedTypes.h"
#include "llvm/IR/InstrTypes.h"
#include "llvm/IR/Instruction.h"
#include "llvm/IR/LLVMContext.h"
#include "llvm/IR/Module.h"
+#include "llvm/Support/SourceMgr.h"
#include "gtest/gtest.h"
namespace llvm {
@@ -347,5 +349,19 @@ TEST(ConstantsTest, GEPReplaceWithConstant) {
ASSERT_EQ(GEP->getOperand(0), Alias);
}
+TEST(ConstantsTest, AliasCAPI) {
+ LLVMContext Context;
+ SMDiagnostic Error;
+ std::unique_ptr<Module> M =
+ parseAssemblyString("@g = global i32 42", Error, Context);
+ GlobalVariable *G = M->getGlobalVariable("g");
+ Type *I16Ty = Type::getInt16Ty(Context);
+ Type *I16PTy = PointerType::get(I16Ty, 0);
+ Constant *Aliasee = ConstantExpr::getBitCast(G, I16PTy);
+ LLVMValueRef AliasRef =
+ LLVMAddAlias(wrap(M.get()), wrap(I16PTy), wrap(Aliasee), "a");
+ ASSERT_EQ(unwrap<GlobalAlias>(AliasRef)->getAliasee(), Aliasee);
+}
+
} // end anonymous namespace
} // end namespace llvm
OpenPOWER on IntegriCloud