llvm/test/Transforms/ThinLTOBitcodeWriter/circular-reference.ll
Peter Collingbourne d8035f7f14 ThinLTOBitcodeWriter: Do not follow operand edges of type GlobalValue when looking for virtual functions.
Such edges may otherwise result in infinite recursion if a pointer to a vtable
is reachable from the vtable itself. This can happen in practice if a TU
defines the ABI types used to implement RTTI, and is itself compiled with RTTI.

Fixes PR32121.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@296839 91177308-0d34-0410-b5e6-96231b3b80d8
2017-03-02 23:10:17 +00:00

10 lines
327 B
LLVM

; RUN: opt -thinlto-bc -o %t %s
; RUN: llvm-modextract -b -n 0 -o - %t | llvm-dis | FileCheck --check-prefix=M0 %s
; RUN: llvm-modextract -b -n 1 -o - %t | llvm-dis | FileCheck --check-prefix=M1 %s
; M0: @g = external constant
; M1: @g = constant
@g = constant i8* bitcast (i8** @g to i8*), !type !0
!0 = !{i32 0, !"typeid"}