aboutsummaryrefslogtreecommitdiffstats
path: root/lib/hipe/main
diff options
context:
space:
mode:
authorBjörn Gustavsson <[email protected]>2019-03-11 13:15:02 +0100
committerBjörn Gustavsson <[email protected]>2019-03-20 16:19:30 +0100
commit4e0430638635083c199f81375a6c14f2ffb726fb (patch)
treefeaa70c8e46e8a82469ff10a237c336b905d4437 /lib/hipe/main
parent0ffc8346553a5fc9322a75d4d8be5417dad67f29 (diff)
downloadotp-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.erl12
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