diff options
author | Björn Gustavsson <[email protected]> | 2012-08-15 11:11:09 +0200 |
---|---|---|
committer | Björn Gustavsson <[email protected]> | 2012-08-15 11:11:09 +0200 |
commit | 70e8c948bd762aa9e5413092d8c993e56197d69a (patch) | |
tree | f26311047c6fda74e5296ea6c25b1fb49f0f7b46 /lib/compiler/src/beam_type.erl | |
parent | 160bf5da0e03f39b468ebba5d39d1658c8a370e6 (diff) | |
parent | c5e5cf792d87e0d23f80ff572f499f0e3e044933 (diff) | |
download | otp-70e8c948bd762aa9e5413092d8c993e56197d69a.tar.gz otp-70e8c948bd762aa9e5413092d8c993e56197d69a.tar.bz2 otp-70e8c948bd762aa9e5413092d8c993e56197d69a.zip |
Merge branch 'maint'
* maint:
erl_lint: Add a deprecated warning for literal tuple funs
beam_utils:live_opt/1: Correct handling of try_case_end/1
Correct guard_SUITE_tuple_size.S
beam_type: Print the offending function if this pass crashes
beam_validator: Validate the size operand in bs_init_bits and bs_init2
Diffstat (limited to 'lib/compiler/src/beam_type.erl')
-rw-r--r-- | lib/compiler/src/beam_type.erl | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/lib/compiler/src/beam_type.erl b/lib/compiler/src/beam_type.erl index 6f0ffb5b25..d307d192b2 100644 --- a/lib/compiler/src/beam_type.erl +++ b/lib/compiler/src/beam_type.erl @@ -29,10 +29,17 @@ module({Mod,Exp,Attr,Fs0,Lc}, _Opts) -> {ok,{Mod,Exp,Attr,Fs,Lc}}. function({function,Name,Arity,CLabel,Asm0}) -> - Asm1 = beam_utils:live_opt(Asm0), - Asm2 = opt(Asm1, [], tdb_new()), - Asm = beam_utils:delete_live_annos(Asm2), - {function,Name,Arity,CLabel,Asm}. + try + Asm1 = beam_utils:live_opt(Asm0), + Asm2 = opt(Asm1, [], tdb_new()), + Asm = beam_utils:delete_live_annos(Asm2), + {function,Name,Arity,CLabel,Asm} + catch + Class:Error -> + Stack = erlang:get_stacktrace(), + io:fwrite("Function: ~w/~w\n", [Name,Arity]), + erlang:raise(Class, Error, Stack) + end. %% opt([Instruction], Accumulator, TypeDb) -> {[Instruction'],TypeDb'} %% Keep track of type information; try to simplify. |