在您的第一个版本中,您在终止器指令后有指令,这是不正确的,因为此说明从未执行。
在您的第二个版本中(此处未提及,请使用stackoverflow代替私人电子邮件...)在定义之前使用%调用(在商店Inst中)(%呼叫= ...),因此显然您的定义并非每个定义之前使用...但是正如我所说,商店不应该在调用后,因为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
ETC...