aboutsummaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)Author
2015-01-23Merge branch 'maint'Marcus Arendt
2015-01-23Merge branch 'nox/standard_error/OTP-12424' into maintMarcus Arendt
* nox/standard_error/OTP-12424: Test standard_error Properly handle broken input in standard_error Fix io:getopts(standard_error)
2015-01-23Merge branch 'maint'Marcus Arendt
2015-01-23Merge branch 'marcus/rabbe-doc-typos2/OTP-12399' into maintMarcus Arendt
* marcus/rabbe-doc-typos2/OTP-12399: fix spelling
2015-01-21Update primary bootstrapBjörn Gustavsson
2015-01-21Merge branch 'bjorn/compiler/coverage'Björn Gustavsson
* bjorn/compiler/coverage: map_SUITE: Ensure recompilation when running cover Add beam_utils_SUITE to cover more lines in beam_utils beam_utils: Remove unreachable clauses in live_opt/4 receive_SUITE: Cover handling of recv_mark & recv_set in beam_utils beam_validator_SUITE: Mend the compiler_bug/1 test case beam_clean: Remove handling of forgotten instructions compile_SUITE: Test the 'dialyzer' option
2015-01-21Merge branch 'maint'Björn Gustavsson
* maint: Update primary bootstrap core_lib: Handle patterns in map values
2015-01-21Update primary bootstrapBjörn Gustavsson
2015-01-21Merge branch 'bjorn/compiler/map-pattern/OTP-12414' into maintBjörn Gustavsson
* bjorn/compiler/map-pattern/OTP-12414: core_lib: Handle patterns in map values
2015-01-21map_SUITE: Ensure recompilation when running coverBjörn Gustavsson
2015-01-21Add beam_utils_SUITE to cover more lines in beam_utilsBjörn Gustavsson
2015-01-21beam_utils: Remove unreachable clauses in live_opt/4Björn Gustavsson
beam_utils:live_opt() is only invoked on code that has been blockified by beam_block. Therefore the allocate/3 and allocate_heap/4 instructions only occur in their transformed form inside a block. While we are it, correct a comment. 'asm' has been replaced by 'from_asm'.
2015-01-21receive_SUITE: Cover handling of recv_mark & recv_set in beam_utilsBjörn Gustavsson
While we are it, also remove ?line macros in ref_opt_1/1 and correct the indentation in do_ref_opt/2.
2015-01-21beam_validator_SUITE: Mend the compiler_bug/1 test caseBjörn Gustavsson
The compiler_bug/1 test case succeeded for the wrong reason. The 'asm' option is no longer supported (was ignored) and the compiler looked for a .erl file. Make sure that we don't fall for this trick again by making sure that the error is reported from beam_validator.
2015-01-20Test standard_errorAnthony Ramine
2015-01-20Properly handle broken input in standard_errorAnthony Ramine
io:put_chars(standard_error, [oops]) could previously crash the standard_error process. Reported-by: Alexei Sholik
2015-01-19core_lib: Handle patterns in map valuesBjörn Gustavsson
core_lib:is_var_used/2 would not consider a variable used in the value of a map pattern such as: case Map of #{key := <<42:N>>} -> ok end Here the variable 'N' would not be considered used. It was assumed that there was no need to check map patterns at all, since maps currently don't support variables in keys.
2015-01-19Merge branch 'maint'Marcus Arendt
2015-01-19Merge branch 'mikpe/hipe-fconv-fmove-fixes/OTP-12413' into maintMarcus Arendt
* mikpe/hipe-fconv-fmove-fixes/OTP-12413: hipe: rtl: fix phi_remove_pred/2 FP moves hipe: backends: correct #fconv{} translation
2015-01-19fix spellingMarcus Arendt
2015-01-16Merge branch 'oliv3/math_log2/OTP-12411'Marcus Arendt
* oliv3/math_log2/OTP-12411: Add math:log2/1
2015-01-16beam_clean: Remove handling of forgotten instructionsBjörn Gustavsson
Commits b44f86b7 and 97953704 introduced translations of instructions in beam_a and beam_z, but forgot to remove the handling of them in beam_clean.
2015-01-16compile_SUITE: Test the 'dialyzer' optionBjörn Gustavsson
Cover more code in v3_core.
2015-01-16Merge remote branch 'origin/hb/parsetools/suppress_dialyzer_warnings/OTP-12271'Hans Bolinder
* origin/hb/parsetools/suppress_dialyzer_warnings/OTP-12271: Let Leex use the new -dialyzer attribute Let Yecc use the new -dialyzer attribute
2015-01-16Merge branch 'maint'Björn Gustavsson
* maint: Update primary bootstrap beam_bool: Correct live calculation for GC BIFs beam_bool: Correct indentation for try...catch sys_core_fold: Correct optimization of 'case' Conflicts: bootstrap/bin/start.boot bootstrap/bin/start_clean.boot bootstrap/lib/compiler/ebin/beam_asm.beam bootstrap/lib/stdlib/ebin/io_lib_pretty.beam
2015-01-16Update primary bootstrapBjörn Gustavsson
2015-01-16Merge branch 'bjorn/compiler/map-in-record-bug/OTP-12402' into maintBjörn Gustavsson
* bjorn/compiler/map-in-record-bug/OTP-12402: sys_core_fold: Correct optimization of 'case'
2015-01-16Merge branch 'bjorn/compiler/beam_bool/OTP-12410' into maintBjörn Gustavsson
* bjorn/compiler/beam_bool/OTP-12410: beam_bool: Correct live calculation for GC BIFs beam_bool: Correct indentation for try...catch
2015-01-15Let Leex use the new -dialyzer attributeHans Bolinder
2015-01-15Let Yecc use the new -dialyzer attributeHans Bolinder
Suppress Dialyzer warnings for clauses the only purpose of which is to catch bugs in Yecc.
2015-01-15Update primary bootstrapHans Bolinder
2015-01-15Merge branch 'hb/dialyzer/suppress_warning/OTP-10280'Hans Bolinder
* hb/dialyzer/suppress_warning/OTP-10280: dialyzer: Introduce module local suppression of warnings
2015-01-15Merge branch 'maint'Bruce Yinhe
2015-01-15Merge branch 'richcarl/syntax_tools-fix-bad-error-format' into maintBruce Yinhe
OTP-12406 * richcarl/syntax_tools-fix-bad-error-format: fix bad format of error in epp_dodger:parse_file/3
2015-01-15Merge branch 'maint'Bruce Yinhe
2015-01-15Merge branch 'mikpe/hipe-arm-interworking' into maintBruce Yinhe
OTP-12405 * mikpe/hipe-arm-interworking: hipe: fix ARM/Thumb interworking
2015-01-15Merge branch 'maint'Marcus Arendt
2015-01-15Merge branch 'arekinath/openbsd-build/OTP-12404' into maintMarcus Arendt
* arekinath/openbsd-build/OTP-12404: Fix compile breakage on OpenBSD
2015-01-14dialyzer: Introduce module local suppression of warningsHans Bolinder
The -dialyzer() attribute can be used for suppressing warnings in a module by specifying functions or warning options. It can also be used for requesting warnings in a module.
2015-01-14Add math:log2/1Olivier Girondel
2015-01-14beam_bool: Correct live calculation for GC BIFsBjörn Gustavsson
When optimizing boolean expressions, it is not always possible to find a number of live registers for a GC BIF that both preserves all source registers that will be tested and at the same time does not include registers that are not initialized. As currently implemented, we have incomplete information about the register calculated from the free variables. Some registers are marked as "reserved". Reserved registers means that we don't know anything about them; they may or may not be initialized. As a conservative correction (suitable for a maintenance release), we will abort the optimization if we find any reserved registers when calculating the number of live registers. We will not attempt to improve the information about the registers in this commit. By examining the coverage when running the existing compiler test suite we find that the optimization is aborted 15 times (before adding any new test cases). To put that in perspective, the optimization is successfully applied 4927 times, and aborted for other reasons 547 times. Reported-by: Ulf Norell Reported-by: Anthony Ramine
2015-01-14Merge branch 'andreaTP/added-aes-ecb-to-crypto/OTP-12403'Marcus Arendt
* andreaTP/added-aes-ecb-to-crypto/OTP-12403: aligned implementation following last specs finally fixed docs fixed incorrect tag proposal of documentation fixes and tests add aes ecb to crypto library
2015-01-14beam_bool: Correct indentation for try...catchBjörn Gustavsson
Old versions of the Erlang mode for Emacs used to indent try...catch strangely - the first clause following the 'catch' would be indented with one space less than the following clauses. If we are to use the new Erlang mode when we add more clauses, they would be indented with one space less than the preceding clauses. That would look silly.
2015-01-14sys_core_fold: Correct optimization of 'case'Björn Gustavsson
The optimization of a 'case' statement could lead to incorrect code that would cause an exception at run-time. Here is an example to show how the optimization went wrong. Start with the following code: f({r,#{key:=Val},X}=S) -> case S of {r,_,_} -> setelement(3, Val, S) end. (The record operations have already been translated to the corresponding tuple operations.) The first step in case_opt/3 is to substitute S to obtain: f({r,#{key:=Val},X}=S) -> case {r,#{key:=Val},X} of {r,_,_} -> setelement(3, Val, S) end. After that substitution the 'case' can be simplified to: f({r,#{key:=Val},_}=S) -> case #{key:=Val} of NewVar -> setelement(3, Val, S) end. That is the result from case_opt/3. Now eval_case/2 notices that since there is only one clause left in the 'case', the 'case' can eliminated: f({r,#{key:=Val},_}=S) -> NewVar = #{key:=Val}, setelement(3, Val, S). Since the map construction may have a side effect, it was not eliminated, but assigned to a variable that is never used. The problem is that '#{key:=Val}' is fine as a pattern, but in a construction of a new map, the '=>' operator must be used. So the map construction will fail, generating an exception. As a conservative correction for a maintenance release, we will abort the 'case' optimization if the substitution into the 'case' expression is anything but data items (tuples, conses, or literals) or variables. Reported-by: Dmitry Aleksandrov
2015-01-14Merge branch 'maint'Marcus Arendt
2015-01-14Merge branch 'marcus/rabbe-doc-typos/OTP-12399' into maintMarcus Arendt
* marcus/rabbe-doc-typos/OTP-12399: fix doc typos found by Rabbe Fogelholm
2015-01-14Merge branch 'maint'Marcus Arendt
2015-01-14Merge branch 'dotsimon/sctp_paddrinfo_state' into maintMarcus Arendt
* dotsimon/sctp_paddrinfo_state: Fix inet:getopts involving #sctp_paddrinfo{}
2015-01-14Merge branch 'maint'Marcus Arendt
2015-01-14Merge branch 'nox/http_uri-fragment/OTP-12398' into maintMarcus Arendt
* nox/http_uri-fragment/OTP-12398: Properly parse URI fragments