diff options
author | Björn Gustavsson <[email protected]> | 2019-03-11 13:15:02 +0100 |
---|---|---|
committer | Björn Gustavsson <[email protected]> | 2019-03-20 16:19:30 +0100 |
commit | 4e0430638635083c199f81375a6c14f2ffb726fb (patch) | |
tree | feaa70c8e46e8a82469ff10a237c336b905d4437 /lib/hipe/main | |
parent | 0ffc8346553a5fc9322a75d4d8be5417dad67f29 (diff) | |
download | otp-4e0430638635083c199f81375a6c14f2ffb726fb.tar.gz otp-4e0430638635083c199f81375a6c14f2ffb726fb.tar.bz2 otp-4e0430638635083c199f81375a6c14f2ffb726fb.zip |
HiPE: Don't fail the compilation for unimplemented instructions
Diffstat (limited to 'lib/hipe/main')
-rw-r--r-- | lib/hipe/main/hipe.erl | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/lib/hipe/main/hipe.erl b/lib/hipe/main/hipe.erl index 2348e9b1f6..094b7bc508 100644 --- a/lib/hipe/main/hipe.erl +++ b/lib/hipe/main/hipe.erl @@ -583,9 +583,8 @@ fix_beam_exports([], Exports) -> Exports. get_beam_icode(Mod, {BeamCode, Exports}, File, Options) -> - {ok, Icode} = - ?option_time((catch {ok, hipe_beam_to_icode:module(BeamCode, Options)}), - "BEAM-to-Icode", Options), + Icode = ?option_time(hipe_beam_to_icode:module(BeamCode, Options), + "BEAM-to-Icode", Options), BeamBin = get_beam_code(File), {{Mod, Exports, Icode}, BeamBin}. @@ -662,9 +661,12 @@ run_compiler_1(Name, DisasmFun, IcodeFun, Options) -> {Icode, WholeModule} = IcodeFun(Code, Opts), CompRes = compile_finish(Icode, WholeModule, Opts), compiler_return(CompRes, Parent) - catch error:Error:StackTrace -> + catch + error:Error:StackTrace -> print_crash_message(Name, Error, StackTrace), - exit(Error) + exit(Error); + throw:{unimplemented_instruction,_Instruction}=Error -> + exit(Error) end end), Timeout = case proplists:get_value(timeout, Options) of |