Dans votre première version, vous avez eu des instructions après une instruction Terminator, ce qui était incorrect car cette instruction n'est jamais exécutée.
Dans votre deuxième version (non mentionnée ici, veuillez utiliser Stackoverflow au lieu d'e-mails privés ...) utilisent% Call (dans le magasin Inst) avant de le définir (% Call = ...), donc clairement votre définition ne précède pas chaque Utilisez ... mais comme je l'ai dit, le magasin ne devrait pas être après l'invoque, car Invoke est un terminatoratst.
La solution consiste à mettre votre magasin dans le prochain bloc de base (vous pouvez en créer un nouveau):
%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...