aboutsummaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)Author
2016-05-16Merge branch 'bjorn/compiler/beam_bool/ERL-143'Björn Gustavsson
* bjorn/compiler/beam_bool/ERL-143: Eliminate crash in beam_bool Add beam_bool_SUITE Add missing test cases in andor_SUITE and beam_block_SUITE
2016-05-16Merge branch 'bjorn/compiler/misc'Björn Gustavsson
* bjorn/compiler/misc: beam_utils: Correct break in conventions for split_even/1 and join_even/1 beam_utils: Remove clause checking for illegal set/4 instruction beam_utils: Simplify the return value for check_liveness/3 beam_utils: Remove unused code beam_utils: Let code_at/2 fail if the label does not exist beam_utils: Remove unused handling of try/3 in live_opt/4 beam_utils: Correct translation of BIFs to tests core_pp: Remove uncovered clause in is_simple_term/1 core_pp: Crash on unhandled Core Erlang forms core_pp: Remove unused clauses in unindent/3 to improve coverage core_pp: Remove useless try...catch core_pp: Simplify printing of map literals compile_SUITE: Cover numeric variable names in core_pp compile_SUITE: Eliminate clones when re-compiling test suites test_lib: Add is_cloned_mod/1 trycatch_SUITE: Cover the only uncovered line in sys_core_fold test_lib: Correct calculation of number of processes
2016-05-16Eliminate crash in beam_boolBjörn Gustavsson
beam_bool would crash when attempting to optimize BEAM code similar to this code: bif '=:=' Reg1 SomeValue => y(0) bif '=:=' Reg2 {atom,true} => x(2) bif '=:=' Reg3 {atom,true} => x(3) bif 'or' x(2) x(3) => x(2) is_eq_exact Fail x(2) {atom,true} The problem is that the first instruction that assigns a value to a Y register. beam_bool:ssa_assign/2 will not accept a Y register argument. We could change ssa_assign/2 to accept a Y register, but that would only cause the entire optimization to be rejected later because the Y register is alive in the code that follows. Therefore, a better solution is to modify extend_block/3 so that the instruction that assign to Y registers are not added to the block. That is, the optimizer will only operate on the following code: bif '=:=' Reg2 {atom,true} => x(2) bif '=:=' Reg3 {atom,true} => x(3) bif 'or' x(2) x(3) => x(2) is_eq_exact Fail x(2) {atom,true} Usually the optimization will succeed, rewriting the four instructions to a select_val instruction. Assembly code such as the above can be produced by code similar to: Y = Something == SomethingElse, case Y of Condition; OtherCondition -> . . . end, . . ., Y. Reported-by: http://bugs.erlang.org/browse/ERL-143 Reported-by: José Valim
2016-05-16Add beam_bool_SUITEBjörn Gustavsson
It's time that we have a dedicated test suite for beam_bool.
2016-05-16Add missing test cases in andor_SUITE and beam_block_SUITEBjörn Gustavsson
Two test cases were not actually run. Even if their main purpose is to ensure that the compiler doesn't crash, we always try to also run the test case (when practial) to also ensure that the generated code is correct.
2016-05-13Merge branch 'egil/erts/nif-format_term/OTP-13580'Björn-Egil Dahlberg
* egil/erts/nif-format_term/OTP-13580: runtime_tools: Change erts_snprintf to enif_snprintf erts: Document enif_snprintf erts: Add tests for enif_snprintf erts: Add enif_snprintf Conflicts: erts/emulator/beam/erl_nif_api_funcs.h
2016-05-13Merge branch 'egil/tools/fix-unmatched_return/OTP-13595'Björn-Egil Dahlberg
* egil/tools/fix-unmatched_return/OTP-13595: xref: Fix unmatched return warnings tags: Fix unmatched return warnings lcnt: Fix unmatched return warnings fprof: Fix unmatched return warnings fprof: Fix unmatched return warnings eprof: Fix unmatched return warnings cover: Fix unmatched return warnings
2016-05-13Merge branch 'egil/runtime_tools/fix-unmatched_return/OTP-13595'Björn-Egil Dahlberg
* egil/runtime_tools/fix-unmatched_return/OTP-13595: runtime_tools: Fix unmatched return warnings
2016-05-13Merge branch 'egil/os_mon/fix-unmatched_return/OTP-13595'Björn-Egil Dahlberg
* egil/os_mon/fix-unmatched_return/OTP-13595: os_mon: Fix unmatched return warnings
2016-05-13Merge branch 'egil/et/fix-doc-lint'Björn-Egil Dahlberg
* egil/et/fix-doc-lint: et: Fix linting documentation xml tags
2016-05-13Merge branch 'egil/runtime_tools/fix-doc-lint'Björn-Egil Dahlberg
* egil/runtime_tools/fix-doc-lint: runtime_tools: Fix tags of dbg reference manual runtime_tools: Fix tags of LTTng User's Guide
2016-05-13Merge branch 'egil/percept/fix-ug-doc'Björn-Egil Dahlberg
* egil/percept/fix-ug-doc: egd: Fix User's Guide lint
2016-05-13Merge branch 'egil/erts-epmd/modernize-tests'Björn-Egil Dahlberg
* egil/erts-epmd/modernize-tests: Eliminate use of doc and suite clauses Replace use of test_server:format/2 with io:format/2 Modernize use of timetraps Remove ?line macros
2016-05-13beam_utils: Correct break in conventions for split_even/1 and join_even/1Björn Gustavsson
Exported functions in this file should appear at the top of the file. Also add missing spaces after commas.
2016-05-13beam_utils: Remove clause checking for illegal set/4 instructionBjörn Gustavsson
I can't remember that clause ever trigger during development. Remove it to eliminated an uncovered line.
2016-05-13beam_utils: Simplify the return value for check_liveness/3Björn Gustavsson
check_liveness/3 returns {unknown,State} if an instruction is not handled. All callers will handle 'unknown' the same way as 'used'. Therefore, we can simplify the code and improve the coverage if we return {used,State} instead of {unknown,State}.
2016-05-13beam_utils: Remove unused codeBjörn Gustavsson
2016-05-13beam_utils: Let code_at/2 fail if the label does not existBjörn Gustavsson
All callers only calls code_at/2 for existing labels and they don't handle the return value 'none'.
2016-05-13beam_utils: Remove unused handling of try/3 in live_opt/4Björn Gustavsson
30cc5c902d moved try/3 instruction inside blocks, so the clause for handling try/3 in live_opt/4 is never executed.
2016-05-13beam_utils: Correct translation of BIFs to testsBjörn Gustavsson
Two lines were never covered, because '[]' was used instead of 'nil'.
2016-05-13core_pp: Remove uncovered clause in is_simple_term/1Björn Gustavsson
The clause for handling #c_values{} in is_simple_term/1 is never executed. It can be safely removed, since there is a default clause that will return 'false' in the extremly unlikely event that a Without the clause, code such as: let <_v1,_v2> = <1,2> in {_v1,_v2} would be printed with an extra newline: let <_v1,_v2> = <1,2> in {_v1,_v2}
2016-05-13core_pp: Crash on unhandled Core Erlang formsBjörn Gustavsson
Don't try to be nice. Since we now have good test suites for Core Erlang, just let it crash.
2016-05-13core_pp: Remove unused clauses in unindent/3 to improve coverageBjörn Gustavsson
2016-05-13core_pp: Remove useless try...catchBjörn Gustavsson
We will get more information if we don't catch the exception.
2016-05-13core_pp: Simplify printing of map literalsBjörn Gustavsson
Map patterns are never represented as literals. Therefore, a map literal should always be printed with the 'assoc' operator. That also means that there is no remaining use of the 'class' field and that it can be removed from the 'ctxt' record.
2016-05-13compile_SUITE: Cover numeric variable names in core_ppBjörn Gustavsson
The inliner generates variable whose names are numeric. Run the inliner to cover one more line in core_pp.
2016-05-13compile_SUITE: Eliminate clones when re-compiling test suitesBjörn Gustavsson
Several test cases in compile_SUITE (e.g. core/1) extracts the abstract code from a BEAM file and runs the compiler on it. It is only a waste of time to use the abstract code from cloned versions of test case modules. That is, use record_SUITE, but don't use record_no_opt_SUITE, record_post_opt_SUITE, or record_inline_SUITE since they all contain essentially the same abstract code.
2016-05-13test_lib: Add is_cloned_mod/1Björn Gustavsson
Add is_cloned_mod(Mod) to determine whether Mod is the original name for a module (e.g. record_SUITE) or a cloned module (e.g. record_no_opt_SUITE).
2016-05-13trycatch_SUITE: Cover the only uncovered line in sys_core_foldBjörn Gustavsson
Recent spring cleaning in the test suite left a line in sys_core_fold dealing with an unnecessary catch uncovered.
2016-05-13test_lib: Correct calculation of number of processesBjörn Gustavsson
Correct calculation of the number of parallel processes to use when cover is used. It was supposed not to exceed 4 (according to the comment), but it was calculated as the number of schedulers. On my computer, having 8 schedulers, this change made the compiler test suite with cover run almost twice as fast.
2016-05-13Merge branch 'bjorn/asn1/dialyzer-warnings/OTP-13579'Björn Gustavsson
* bjorn/asn1/dialyzer-warnings/OTP-13579: Eliminate dialyzer warnings for unmatched returns
2016-05-13Merge branch 'bjorn/common_test/dialyzer-warnings'Björn Gustavsson
* bjorn/common_test/dialyzer-warnings: ct_logs: Eliminate dialyzer warnings
2016-05-13Merge branch 'mururu/stdlib/fix-deprecated-warnings/PR-1050/OTP-13594'Björn Gustavsson
* mururu/stdlib/fix-deprecated-warnings/PR-1050/OTP-13594: Fix deprecated warnings
2016-05-13Merge branch 'bjorn/compiler/badfun-literal/ERL-138/OTP-13552'Björn Gustavsson
* bjorn/compiler/badfun-literal/ERL-138/OTP-13552: sys_core_fold: Don't generated failing calls such as 3(4) fun_SUITE: Test for failing calls to funs
2016-05-13Update application versionsHans Bolinder
2016-05-13Use the newly defined types in a record declarationKostis Sagonas
2016-05-13Strengthen the spec of analyze/1Kostis Sagonas
2016-05-13Fix dependency calculation when encountering an erroneous 'apply'Kostis Sagonas
Dialyzer's dependency calculation was throwing an error when encountering an 'apply' node with something that was not a variable (e.g., a literal). The rest of the code did not know what to do with this error, which resulted in dialyzer crashing. Fix this by ingoring the detected error in the dependency calculation phase; later dialyzer passes know how to properly handle and report this kind of errors anyway. This fixes [Erlang-JIRA] (ERL-138).
2016-05-13[reltool] Correct documentationHans Bolinder
Fix mistakes found by 'xmllint'.
2016-05-13[syntax_tools] Correct documentationHans Bolinder
Fix mistakes found by 'xmllint'.
2016-05-12et: Fix linting documentation xml tagsBjörn-Egil Dahlberg
2016-05-12Merge branch 'egil/update-gitignore'Björn-Egil Dahlberg
* egil/update-gitignore: Update .gitignore
2016-05-12Update .gitignoreBjörn-Egil Dahlberg
2016-05-12runtime_tools: Fix tags of dbg reference manualBjörn-Egil Dahlberg
2016-05-12runtime_tools: Fix tags of LTTng User's GuideBjörn-Egil Dahlberg
2016-05-12egd: Fix User's Guide lintBjörn-Egil Dahlberg
2016-05-12sys_core_fold: Don't generated failing calls such as 3(4)Björn Gustavsson
Rewrite code such as: X = not_a_fun, X() to: error({badfun,not_a_fun}) Also generate a warning.
2016-05-12fun_SUITE: Test for failing calls to funsBjörn Gustavsson
2016-05-12runtime_tools: Fix unmatched return warningsBjörn-Egil Dahlberg
2016-05-12Remove 19.0 from version tableHenrik Nord