forked from OSchip/llvm-project
Preserve address space of forward-referenced global variables in the LL parser
Before, the parser would assert on the following code: @a2 = global i8 addrspace(1)* @a @a = addrspace(1) global i8 0 because the type of @a was "i8*" instead of "i8 addrspace(1)*" when parsing the initializer for @a2. llvm-svn: 168197
This commit is contained in:
parent
d7d8c09b93
commit
898a0a02bb
|
@ -779,7 +779,9 @@ GlobalValue *LLParser::GetGlobalVal(const std::string &Name, Type *Ty,
|
|||
FwdVal = Function::Create(FT, GlobalValue::ExternalWeakLinkage, Name, M);
|
||||
else
|
||||
FwdVal = new GlobalVariable(*M, PTy->getElementType(), false,
|
||||
GlobalValue::ExternalWeakLinkage, 0, Name);
|
||||
GlobalValue::ExternalWeakLinkage, 0, Name,
|
||||
0, GlobalVariable::NotThreadLocal,
|
||||
PTy->getAddressSpace());
|
||||
|
||||
ForwardRefVals[Name] = std::make_pair(FwdVal, Loc);
|
||||
return FwdVal;
|
||||
|
|
|
@ -0,0 +1,8 @@
|
|||
; RUN: llvm-as < %s | llvm-dis | FileCheck %s
|
||||
|
||||
; Make sure the address space of forward decls is preserved
|
||||
|
||||
; CHECK: @a2 = global i8 addrspace(1)* @a
|
||||
; CHECK: @a = addrspace(1) global i8 0
|
||||
@a2 = global i8 addrspace(1)* @a
|
||||
@a = addrspace(1) global i8 0
|
Loading…
Reference in New Issue