2
두 개의 전역 구조체 타입 선언이 있는데, 그 중 하나는 다른 하나의 "부속 유형"입니다.LLVM에서 전역 정의 전송하기
나는이 시도 : 나는 더 구체적인 유형으로 전역 변수를 정의하지만 전역 변수가 더 일반적인 유형하자 할
%hs = type { %hs* (%hs*)* }
%dc = type { %hs* (%hs*)*, i64, [1 x %hs*] }
@boring = constant %hs { %hs* (%hs*)* null }
; this works, but has type %dc* instead of %hs*
@foo = constant %dc { %hs* (%hs*)* null, i64 1, [1 x %hs*] [ %hs* @boring ] }
; this does not
@bar = constant %hs bitcast (%dc @foo to %hs)
; this tests that @bar indeed has the desired type
@test = constant %dc { %hs* (%hs*)* null, i64 1, [1 x %hs*] [ %hs* @bar ] }
을하지만 그 실패
llc-4.0: foo.ll:10:34: error: global variable reference must have pointer type
@bar = constant %hs bitcast (%dc @foo to %hs)
위와 같이 @bar
을 정의 할 수있는 방법이 있지만 hs*
유형이 있습니까?
하나의 정의에서 이상적으로는?
@bar = alias %hs, %hs* bitcast (%dc* @foo to %hs*)
떨어져 중간 값 @foo
으로 수행하는 방법이 있는지 모르겠어요 :