diff --git a/lib/CodeGen/TargetLoweringObjectFileImpl.cpp b/lib/CodeGen/TargetLoweringObjectFileImpl.cpp index 4c8f75b237a..23cb1c1d305 100644 --- a/lib/CodeGen/TargetLoweringObjectFileImpl.cpp +++ b/lib/CodeGen/TargetLoweringObjectFileImpl.cpp @@ -524,8 +524,8 @@ static const MCSymbolELF *getAssociatedSymbol(const GlobalObject *GO, if (!VM) report_fatal_error("MD_associated operand is not ValueAsMetadata"); - GlobalObject *OtherGO = dyn_cast(VM->getValue()); - return OtherGO ? dyn_cast(TM.getSymbol(OtherGO)) : nullptr; + auto *OtherGV = dyn_cast(VM->getValue()); + return OtherGV ? dyn_cast(TM.getSymbol(OtherGV)) : nullptr; } static unsigned getEntrySizeForKind(SectionKind Kind) { diff --git a/test/CodeGen/X86/elf-associated.ll b/test/CodeGen/X86/elf-associated.ll index 7d58c343702..e0e9e005828 100644 --- a/test/CodeGen/X86/elf-associated.ll +++ b/test/CodeGen/X86/elf-associated.ll @@ -33,7 +33,7 @@ ; CHECK-DAG: .section bbb,"awo",@progbits,h,unique,2 ; CHECK-DAG: .section .data.k,"awo",@progbits,h -; Non-GlobalObject metadata. +; Non-GlobalValue metadata. @l = global i32 1, section "ccc", !associated !5 !5 = !{i32* null} ; CHECK-DAG: .section ccc,"aw",@progbits @@ -42,3 +42,9 @@ @m = global i32 1, section "ddd", !associated !6 !6 = distinct !{null} ; CHECK-DAG: .section ddd,"aw",@progbits + +; Aliases are OK. +@n = alias i32, i32* inttoptr (i64 add (i64 ptrtoint (i32* @a to i64), i64 1297036692682702848) to i32*) +@o = global i32 1, section "eee", !associated !7 +!7 = !{i32* @n} +; CHECK-DAG: .section eee,"awo",@progbits,n,unique,3