2017-03-23 5 views
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으로 수행하는 방법이 있는지 모르겠어요 :

답변

0

그것은 별칭을 정의하기 위해 노력하고 있습니다.