Skip to content

Commit f31bc66

Browse files
authored
[IR] Handle addrspacecast in findBaseObject() (#162076)
Make findBaseObject() look through addrspacecast, so that getAliaseeObject() works with an aliasee that uses and addrspacecast. This fixes a crash during module summary index emission. Fixes #161646.
1 parent c6a4e84 commit f31bc66

File tree

2 files changed

+8
-0
lines changed

2 files changed

+8
-0
lines changed

llvm/lib/IR/Globals.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -419,6 +419,7 @@ findBaseObject(const Constant *C, DenseSet<const GlobalAlias *> &Aliases,
419419
case Instruction::PtrToAddr:
420420
case Instruction::PtrToInt:
421421
case Instruction::BitCast:
422+
case Instruction::AddrSpaceCast:
422423
case Instruction::GetElementPtr:
423424
return findBaseObject(CE->getOperand(0), Aliases, Op);
424425
default:
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
; RUN: opt -module-summary < %s | llvm-dis | FileCheck %s
2+
3+
@__oclc_ABI_version = linkonce_odr hidden addrspace(4) constant i32 500, align 4
4+
@_ZL20__oclc_ABI_version__ = internal alias i32, addrspacecast (ptr addrspace(4) @__oclc_ABI_version to ptr)
5+
6+
; CHECK: ^1 = gv: (name: "__oclc_ABI_version", summaries: (variable: (module: ^0, flags: {{.*}})))
7+
; CHECK: ^2 = gv: (name: "_ZL20__oclc_ABI_version__", summaries: (alias: (module: ^0, flags: {{.*}}, aliasee: ^1)))

0 commit comments

Comments
 (0)