diff options
| author | Rafael Espindola <rafael.espindola@gmail.com> | 2015-02-23 21:51:06 +0000 |
|---|---|---|
| committer | Rafael Espindola <rafael.espindola@gmail.com> | 2015-02-23 21:51:06 +0000 |
| commit | 993502eafd8f108d266c21726b2f628fe50628e6 (patch) | |
| tree | 005c8d923af2a423451eb2e70b92efcbb369271d /llvm/unittests/IR | |
| parent | 006c490ba8e26c3f34ea8efc34ad0e983d5e3107 (diff) | |
| download | bcm5719-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.cpp | 16 |
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 |

