最初のバージョンでは、ターミネーター命令の後に命令がありましたが、この命令は実行されないため、間違っていました。
2番目のバージョン(ここでは言及されていません、プライベートメールの代わりにStackOverFlowを使用してください...)では、それを定義する前に%コール(ストアInstで)を使用しています(%Call = ...)。使用...しかし、私が言ったように、Invokeはターミネータインストであるため、店は呼び出しの後はそうすべきではありません。
解決策は、ストアを次の基本ブロックに入れることです(新しいブロックを作成できます):
%invoke.cont
%call = invoke i8* @_ZNKSs5c_strEv(%"class.std::basic_string"* @loadedFile)
to label %invoke.cont2_before unwind label %lpad1
invoke.cont2_before: ; preds = %invoke.cont
store i8* %call, i8** %reduced_var
br label %invoke.cont2
invoke.cont2: ; preds = %main_block, %invoke.cont2_before
%call4 = invoke i32 @_ZStorSt13_Ios_OpenmodeS_(i32 8, i32 16)
to label %invoke.cont3_before unwind label %lpad1
等...