aboutsummaryrefslogtreecommitdiffstats
path: root/lib/compiler
AgeCommit message (Collapse)Author
2012-10-09beam_utils: Check liveness in catches and try/catch blocksBjörn Gustavsson
Less conservative liveness analysis allows more optimizations to be applied (such as the ones in beam_bool).
2012-10-09v3_codegen: Clarify code generation for binary constructionBjörn Gustavsson
Add some comments to make the code generation for binary construction somewhat clearer. Also get rid of the cg_bo_newregs/2 function that serves no useful purpose. (It was probably intended to undo the effect of cg_live/2, but note that the value passed to cg_bo_newregs/2 has not passed through cg_live/2.)
2012-10-09v3_codegen: Clean up comments and remove out-commented codeBjörn Gustavsson
2012-10-09v3_codegen: Don't duplicate the functionality of cg_reg_arg/2Björn Gustavsson
2012-09-04Merge tag 'OTP_R15B02'Björn-Egil Dahlberg
The R15B02 release
2012-09-03Prepare releaseOTP_R15B02Erlang/OTP
2012-08-31Merge branch 'maint'Björn-Egil Dahlberg
Conflicts: lib/diameter/autoconf/vxworks/sed.general xcomp/README.md
2012-08-31Update copyright yearsBjörn-Egil Dahlberg
2012-08-29Merge branch 'maint'Henrik Nord
2012-08-29Merge branch 'ta/docsmaint' into maintHenrik Nord
* ta/docsmaint: Fix various doc typos for R15B02 Fix various code typos for R15B02 OTP-10245
2012-08-24Merge branch 'maint'Fredrik Gustafsson
* maint: Fix the erlc -MP flag
2012-08-24Merge branch 'rc/fix-MP-compiler-flag/OTP-10211' into maintFredrik Gustafsson
2012-08-23Merge branch 'maint'Björn Gustavsson
* maint: compiler: Warn if the size of a binary segment is invalid
2012-08-23Merge branch 'bjorn/compiler/illegal-size/OTP-10197' into maintBjörn Gustavsson
* bjorn/compiler/illegal-size/OTP-10197: compiler: Warn if the size of a binary segment is invalid
2012-08-22Merge branch 'maint'Lukas Larsson
* maint: Revert "Merge branch 'nox/compile-column-numbers' into maint"
2012-08-22Revert "Merge branch 'nox/compile-column-numbers' into maint"Lukas Larsson
Column numbers was merged without understanding all the whole story. See mail on erlang-patches for details. This reverts commit df8e67e203b83f95d1e098fec88ad5d0ad840069, reversing changes made to 0c9d90f314f364e5b1301ec89d762baabc57c7aa.
2012-08-22compiler: Warn if the size of a binary segment is invalidBjörn Gustavsson
The compiler would silently accept and Dialyzer would crash on code like: <<X:(2.5)>> It is never acceptable for Dialyzer to crash. The compiler should at least generate a warning for such code. It is tempting to let the compiler generate an error, but that would mean that code like: Sz = 42.0, <<X:Sz>>. would be possible to compile with optimizations disabled, but not with optimizations enabled. Dialyzer crashes because it calls cerl:bitstr_bitsize/1, which crashes if the type of size for the segment is invalid. The easiest way to avoid that crash is to extend the sanity checks in v3_core to also include the size field of binary segments. That will cause the compiler to issue a warning and to replace the bad binary construction with a call to erlang:error/1. (It also means that Dialyzer will not issue a warning for bad size fields.)
2012-08-17Remove support for tuple funsBjörn Gustavsson
Tuple funs were deprecated in R15B (in commit a4029940e309518f5500).
2012-08-15Merge branch 'bjorn/compiler/minor-fixes/OTP-10185' into maintBjörn Gustavsson
* bjorn/compiler/minor-fixes/OTP-10185: 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
2012-08-15beam_utils:live_opt/1: Correct handling of try_case_end/1Björn Gustavsson
Liveness for the try_case_end/1 instruction should be calculated in the same way as for the case_end/1 instruction.
2012-08-15Correct guard_SUITE_tuple_size.SBjörn Gustavsson
The number of live registers in the gc_bif instructions was wrong. It was not noticed because the beam_type pass silently corrected it.
2012-08-15beam_type: Print the offending function if this pass crashesBjörn Gustavsson
2012-08-15beam_validator: Validate the size operand in bs_init_bits and bs_init2Björn Gustavsson
2012-08-14Merge branch 'tja/fix-base' into maintFredrik Gustafsson
2012-08-14Merge branch 'nox/compile-column-numbers' into maintFredrik Gustafsson
* nox/compile-column-numbers: Fix messages ordering with column numbers Fix type compile:err_info/0 Test column number reporting in error_SUITE Fix printing of errors with column numbers Create a new "column" option in compile Allow setting of initial position in epp Export type erl_scan:location/0
2012-08-06compiler: Eliminate EXIT messages from the temporary compiler processBjörn Gustavsson
If a process trap exits, calling the compiler would leave an EXIT message in the message queue of the calling process because the compiler spawns a temporary work process. Eliminate the EXIT process by monitoring the temporary process instead of linking to it. Reported-by: Jeremy Heater
2012-08-06compile_SUITE: Correct the forms_2 test case to work on WindowsBjörn Gustavsson
Correct the forms_2 test case introduced in 2d785c07fbf9f533bf so that it will work on Windows. As originally written, the test case assumed that filename:absname("/foo/bar") would return "/foo/bar", which is not true on Windows (typically, the result will be "c:/foo/bar"). While at it, clean up indentation, the overlong line, and comments.
2012-08-02sys_pre_expand: Fix BASE never being setTomas Janousek
Commit a612e99fb5aaa934fe5a8591db0f083d7fa0b20a turned module attributes from 2-tuples to 3-tuples but forgot to update get_base/1, breaking BASE for parametric modules.
2012-07-18Merge branch 'jv/forms-source' into maintHenrik Nord
* jv/forms-source: Allow the source to be set when compiling forms OTP-10150
2012-07-10Fix the erlc -MP flagRichard Carlsson
Because of a copy-and-paste error in erlc.c, the -MP flag had the same effect as -MG. As a workaround, you had to pass +makedep_phony to enable the MP option. This patch makes -MP work as intended.
2012-07-05Fix various doc typos for R15B02Tuncer Ayaz
2012-06-20sys_pre_expand: Eliminate bottleneck for modules with many functionsBjörn Gustavsson
Use a gb_set instead of an ordset to store the set of defined functions in the module to avoid quadritic time complexity.
2012-06-10Fix messages ordering with column numbersAnthony Ramine
With L1, L2, C1, C2 integers such as L1 < L2 and C1 < C2, locations are ordered like this: L1 < {L1, C1} < {L1, C2} < L2
2012-06-06Fix type compile:err_info/0Anthony Ramine
2012-06-05Update to work with whitespace in exec pathLukas Larsson
OTP-10106 OTP-10107
2012-06-03Test column number reporting in error_SUITEAnthony Ramine
2012-06-03Fix printing of errors with column numbersAnthony Ramine
There was a colon missing after the column number, it must be an error as it's not missing in list_errors/2.
2012-06-02Create a new "column" option in compileAnthony Ramine
If set, compile will call epp with a full location {1, 1} instead of 1, thus making it keep the column numbers in the parsed AST.
2012-05-31Add type info for compile:file/1,2 macro optionGustav Simonsson
2012-04-10Allow the source to be set when compiling formsJosé Valim
This commit adds a source option to compile:forms() that sets the source value returned by module_info(compile).
2012-04-01Prepare releaseOTP_R15B01Erlang/OTP
2012-03-30Update copyright yearsBjörn-Egil Dahlberg
2012-03-14Merge branch 'bjorn/compiler/coverage-and-minor-fixes/OTP-9982' into maintBjörn Gustavsson
* bjorn/compiler/coverage-and-minor-fixes/OTP-9982: v3_life: Use common code for guards and bodies v3_core: Don't put negative line numbers in annotations v3_kernel: Dig out the line number only when generating a warning v3_kernel: Clean up handling of guards v3_kernel: Introduce is_in_guard/1 v3_kernel: Removed unreached clause for #k_bin_int{} in sub_size_var/1 v3_kernel: Remove unreached handling of #k_bin_int{} in arg_con/1 v3_codegen: Eliminate the special case of 'put' without destination v3_kernel: Don't attempt to share identical literals v3_kernel: Handle sequences in guards v3_kernel: Remove clauses that are never executed in arg_val/1 v3_kernel.hrl: Remove unused record #k_string{} v3_kernel.erl: Remove unused define of EXPENSIVE_BINARY_LIMIT sys_core_fold: Refactor previous_ctx_to_binary/2 to cover it completely sys_core_fold: Fix opt_guard_try/1 sys_core_fold: Simplify opt_bool_not() to cover it completely sys_core_fold: Remove duplicate optimization
2012-03-14v3_life: Use common code for guards and bodiesBjörn Gustavsson
2012-03-14v3_core: Don't put negative line numbers in annotationsBjörn Gustavsson
In Core Erlang and later passes, compiler-generated code can be indicated in two different ways: by negative line numbers and by a 'compiler_generated' annotation. Simplify the code and improve coverage by turning negative line numbers positive and adding a 'compiler_generated' annotation in the v3_core pass. That means that Core Erlang and latter passes do not have deal with negative line numbers.
2012-03-14v3_kernel: Dig out the line number only when generating a warningBjörn Gustavsson
2012-03-14v3_kernel: Clean up handling of guardsBjörn Gustavsson
Handling of guards become a mess when andalso/orelse in guards were introduced. Clean it up by using common code for most constructs, regardless of where they occur, and when needed use is_in_guard/1 to handle guard constructs differently.
2012-02-21Merge branch 'ks/compile_info-fix' into maintGustav Simonsson
* ks/compile_info-fix: compiler: Fix discrepancy in compile_info OTP-9917
2012-02-20Fix discrepancy in compile_infoKostis Sagonas
The BEAM disassembler used the atom 'none' to signify the absence of a compile_info chunk in a .beam file. This clashes with the type declaration of the compile_info field of a #beam_file{} record as containing a list. Use [] to signify the absence of this chunk. This simplifies the code and avoids a dialyzer warning. For fixing a similar problem and for consistency, changed also the return type of the attributes field of the #beam_file{} record. This required a change in the beam_disasm test suite.
2012-02-16Merge branch 'bjorn/compiler/inline-and-on_load/OTP-9910' into maintBjörn Gustavsson
* bjorn/compiler/inline-and-on_load/OTP-9910: compiler: Teach the inliner to preserve on_load functions