IR Builder を使用すると、たとえば と のような互換性のない型の 2 つの値を追加するなど、無効な IR を構築できi32
ますfloat
。命令のセマンティクスに従って、自動的に価値 (またはより良いユーザー) を昇格させる機能はありますか? 何かのようなもの:
Value * CreateSafeFAdd (Value *LHS, Value *RHS, const Twine &Name="", MDNode *FPMathTag=0)
たとえば、整数の場合など、入力値を昇格させます。float
また、入力引数の型の 1 つが で、もう1 つが の場合、より高い浮動小数点精度に昇格しますdouble
。
そうでない場合は、有効な IR を構築するためにすべての型変換を行う必要があると思います。