2013-05-10 1 views
1

IR 빌더를 사용할 때 분명히 잘못된 IR을 생성 할 수 있습니다. i32float과 같이 호환되지 않는 유형의 두 값을 추가합니다. 해당 명령어의 의미에 따라 자동으로 값 (또는 더 나은 사용자)을 승격시키는 기능이 있습니까? 다음과 같은 값이 입력됩니다.LLVM 명령어의 입력 값 자동 승격

Value * CreateSafeFAdd (Value *LHS, Value *RHS, const Twine &Name="", MDNode *FPMathTag=0) 

정수 인 경우에. 입력 인수 타입 중 하나가 float이고 다른 하나가 double 인 경우 더 높은 부동 소수점 정밀도로 승격됩니다.

그렇지 않은 경우 유효한 IR을 구축하기 위해 모든 유형 변환을 수행해야한다고 가정합니다.

답변

1

유형 대화는 IR을 구축 한 처리해야하지만 사용하여 자신의 CreateSafeFAdd 기능을 만들 수 Value::getType()