aboutsummaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)Author
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-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
2016-05-12Revert "Prepare release"Erlang/OTP
This reverts commit bd64ad8e15d66e48b36dbe3584315dd5cfc8b59a.
2016-05-12Eliminate dialyzer warnings for unmatched returnsBjörn Gustavsson
Dialyzer complains that three calls to gen_dec_line/7 ignore the return value. It turns out that when the last argument to gen_dec_line/7 is 'false', the return value will always be {[],[]}. Introduce gen_dec_line/6 as helper to make it clear that we don't ignore a useful return value.
2016-05-11runtime_tools: Change erts_snprintf to enif_snprintfBjörn-Egil Dahlberg
2016-05-11erts: Document enif_snprintfBjörn-Egil Dahlberg
2016-05-11erts: Add tests for enif_snprintfBjörn-Egil Dahlberg
2016-05-11Updated OTP versionOTP-19.0-rc1Erlang/OTP
2016-05-11Prepare releaseErlang/OTP
2016-05-11Merge branch 'ingela/ssl/test-cuddle' into masterErlang/OTP
* ingela/ssl/test-cuddle: ssl: Correct test suite
2016-05-11Merge branch 'lukas/trace-fix'Rickard Green
* lukas/trace-fix: erts: Only allow remove from trace_status callback
2016-05-11Merge branch 'rickard/ds-proc-exit/OTP-13123'Rickard Green
* rickard/ds-proc-exit/OTP-13123: Add dirty_heap_access test case Add dirty_call_while_terminated test case Move dirty nif test cases into dirty_nif_SUITE Add better support for communication with a process executing dirty NIF Remove conditional dirty schedulers API
2016-05-11erts: Only allow remove from trace_status callbackLukas Larsson
Make it so that it is only possible to remove a tracer via returning remove from an erl_tracer. This limition is put in place in order to avoid a lot of lock checking and taking in various places, especially in regards to trace events happening on dirty schedulers.
2016-05-11Add dirty_heap_access test caseRickard Green
2016-05-11Add dirty_call_while_terminated test caseRickard Green
2016-05-11Move dirty nif test cases into dirty_nif_SUITERickard Green
2016-05-11Add better support for communication with a process executing dirty NIFRickard Green
- Termination of a process... - Modify trace flags of process... - Process info on process... - Register/unregister of name on process... - Set group leader on process... ... while it is executing a dirty NIF.
2016-05-11erts: Add enif_snprintfBjörn-Egil Dahlberg
* Add the capability to format erlang terms to a char buffer in nifs. * Bump NIF version to 2.11
2016-05-11Merge branch 'lukas/erts/max_heap_size/OTP-13174'Lukas Larsson
* lukas/erts/max_heap_size/OTP-13174: erts: Fix non-smp max_heap_size assert
2016-05-11erts: Fix non-smp max_heap_size assertLukas Larsson
2016-05-11Merge branch 'lukas/erts/max_heap_size/OTP-13175'Lukas Larsson
* lukas/erts/max_heap_size/OTP-13174: erts: Add max_heap_size remote gc testcase