aboutsummaryrefslogtreecommitdiffstats
path: root/lib/compiler
AgeCommit message (Collapse)Author
2011-05-24Prepare releaseOTP_R14B03Erlang/OTP
2011-05-20Update copyright yearsBjörn-Egil Dahlberg
2011-05-16OTP-9094: [httpc] Add support for upload body streaming (PUT and POST).Micael Karlberg
Filipe David Manana OTP-9114: [ftp] Added (type) spec for all exported functions. OTP-9123: mod_esi:deliver/2 made to accept binary data. Bernard Duggan OTP-9124: [httpd] Prevent XSS in error pages. Michael Santos OTP-9131: [httpd] Wrong security property names used in documentation. Garrett Smith OTP-9157: [httpd] Improved error messages. Ricardo Catalinas Jim�nez OTP-9158: [httpd] Fix timeout message generated by mod_esi. Bernard Duggan OTP-9202: [httpd] Extended support for file descriptors. Attila Rajmund Nohl OTP-9230: The default ssl kind has now been changed to essl. OTP-9246: [httpc] httpc manager crash because of a handler retry race condition. Merge branch 'bmk/inets/inet56_integration' into dev
2011-05-12rHans Bolinder
Use Erlang specs and types for documentation
2011-04-12bs_match_SUITE: Improve coverage of beam_bsmBjörn Gustavsson
2011-04-12beam_bsm: Eliminate uncovered line in warning generationBjörn Gustavsson
In warning_translate_label/2, gb_trees:lookup/2 is called to translate from the entry label for a function to its name. Since the gb_tree has an entry for all functions in the module, there is no way that the lookup can fail unless there is a serious bug. Therefore, use gb_trees:get/2 so that an exception and an internal compiler error will be generated if the lookup would ever fail.
2011-04-12match_SUITE: Cover a clause in beam_dead:forward/4Björn Gustavsson
2011-04-12beam_dead: Remove uncovered special case handling of empty blocksBjörn Gustavsson
There is never any empty blocks when beam_dead is invoked. Even if there were, they will be removed a little bit later in forward/4.
2011-04-12beam_dead: Remove uncovered clauses in binary matching optimizationBjörn Gustavsson
In the optimization of binary matching, it seems that two clauses cannot never be reached. Removing the clauses is safe, since that would only mean that an opportunity for an optimization is lost
2011-04-12beam_dead: Remove uncoverable case clause in update_value_dict/3Björn Gustavsson
Because the code generator (v3_codegen) would not include the same value more than once in a select_val/3 instruction and because a label can only be referenced by one select_val/3 instruction, there is no way that the correct value could already be in the gb_tree. (Even if it could happen, this change is safe because only opportunity for an optimization would be missed; incorrect code would not be generated.)
2011-04-12beam_dead: Remove code that cannot be covered in forward/4Björn Gustavsson
Since the optimizations in forward/4 already depends on some assumptions on how code is generated anyway, document the assumptions in a comment and remove the uncoverable code.
2011-04-12record_SUITE: Cover optimization of is_record/3 in beam_typeBjörn Gustavsson
Since the introduction of improved record optimizations in 1858cb81391d2bce29b4b7620574ca60128cebf7 and 470c91d43eae54f63661645acbce4b92d73287cc, the optimization of a is_record/3 call with a known correct type in beam_type:simplify_basic_1/3 has not been covered.
2011-04-12compiler tests: Reinstate ?MODULE macro in calls to test_lib:recompile/1Björn Gustavsson
In 3d0f4a3085f11389e5b22d10f96f0cbf08c9337f (an update to conform with common_test), in all test_lib:recompile(?MODULE) calls, ?MODULE was changed to the actual name of the module. That would cause test_lib:recompile/1 to compile the module with the incorrect compiler options in cloned modules such as record_no_opt_SUITE, causing worse coverage.
2011-04-06Merge branch 'dev' into bmk/inets/inet56_integrationMicael Karlberg
2011-03-30Merge branch 'hw/call-chmod-without-f' into devHenrik Nord
* hw/call-chmod-without-f: Call chmod without the "-f" flag Conflicts: erts/emulator/test/Makefile lib/asn1/test/Makefile lib/crypto/test/Makefile lib/debugger/test/Makefile lib/docbuilder/test/Makefile lib/edoc/test/Makefile lib/erl_interface/test/Makefile lib/inviso/test/Makefile lib/parsetools/test/Makefile lib/percept/test/Makefile lib/ssl/test/Makefile lib/syntax_tools/test/Makefile lib/test_server/test/Makefile lib/tools/test/Makefile OTP-9170
2011-03-29beam_dict: Eliminate the redundant next_atom record elementBjörn Gustavsson
It is not needed because it can be trivially calculated using gb_trees:size/1.
2011-03-29beam_dict: Fix typo in commentBjörn Gustavsson
2011-03-25sys_core_fold: Eliminate incorrect warningBjörn Gustavsson
The compiler (sys_core_fold) tries to avoid constructing tuples in case expressions. The following code: c(A, B) -> case {A,B} of {ok,X} -> X; {_,_} -> error end. will be rewritten so that no tuple is built. If a clause requires a tuple to be built as in this code: c(A, B) -> case {A,B} of {ok,X} -> X; V -> V %The tuple will be built here end. the tuple will be built in the clause(s) in which it is needed. If the value returned from the case is not used as in this code: c(A, B) -> case {A,B} of V -> V %Warning: a term is constructed, but never used end, ok. there will be an incorrect warning. Basically, what happens is that the code is reduced to: c(A, B) -> {A,B}, %Warning: a term is constructed, but never used ok. and the optimizer sees that the {A,B} tuple can't possibly be used. Eliminate the warning by adding a 'compiler_generated' annotation to the tuple. Reported-by: Kostis Sagonas
2011-03-25sys_core_fold: Be careful to preserve annotations while optimizingBjörn Gustavsson
2011-03-23v3_core: Fix variable incorrectly unbound after binary matchBjörn Gustavsson
In the following code: m(<<Sz:8,_:Sz/binary>>) -> Sz = wrong. the Sz variable is supposed to be bound in the function header and the matching "Sz = wrong" should cause a badarg exception. But what happens is that the Sz variables seems to be unbound and the matching succeds and the m/1 function returns 'wrong'. If the Sz variable is used directly (not matched), it will have the expected value. Thus the following code: m(<<Sz:8,_:Sz/binary>>) -> Sz. will correctly return the value of Sz that was matched out from the binary. Reported-by: Bernard Duggan
2011-03-23v3_core: Fix style and indentationBjörn Gustavsson
2011-03-17Merge branch 'dev' into ↵Micael Karlberg
bmk/inets/ftp/missing_spec_causes_dialyxer_problems/OTP-9114 Also fixed a bunch of "end-years" (was 2010 but should have been 2011, which the commit hook not happy with).
2011-03-14Prepare releaseOTP_R14B02Erlang/OTP
2011-03-11Update copyright yearsBjörn-Egil Dahlberg
2011-02-24Merge branch 'bjorn/fix-dialyzer-warnings' into devBjörn Gustavsson
* bjorn/fix-dialyzer-warnings: v3_kernel_pp: Eliminate dialyzer warning inet6_tcp_dist: Eliminate dialyzer warning for "tuple fun"
2011-02-24Merge branch 'bjorn/compiler/refactor-source-options' into devBjörn Gustavsson
* bjorn/compiler/refactor-source-options: compile: Refactor handling of source options (e.g. 'from_core')
2011-02-23v3_kernel_pp: Eliminate dialyzer warningBjörn Gustavsson
Use conditional compilation instead of a run-time test. Will also improve the coverage of the code.
2011-02-23compiler: Eliminate some warningsBjörn Gustavsson
2011-02-18Merge branch 'jp/dependencies_makefile' into devBjörn Gustavsson
* jp/dependencies_makefile: Add dependencies Makefile generation to erlc(1) and compile(3) Conflicts: lib/compiler/test/compile_SUITE.erl OTP-9065
2011-02-18Add dependencies Makefile generation to erlc(1) and compile(3)Jean-Sébastien Pédron
This is useful when a project is built with Makefiles and erlc(1) instead of EMakefiles. Tracking dependencies by hand is error-prone and it becomes painful when using external application headers like EUnit's one. A dependencies Makefile will look like this: module.beam: module.erl \ /usr/local/lib/erlang/lib/eunit-2.1.4/include/eunit.hrl \ header.hrl When included in the main Makefile, 'module' will be recompiled only when needed. GCC offers the same feature and new erlc(1) options are compatible with it. More informations at: http://wiki.github.com/dumbbell/otp/dependencies-makefile
2011-02-17Rename Suite Callback to Common Test HookLukas Larsson
2011-02-17Update and add cover spec files to work with common_testLukas Larsson
2011-02-17Update all test specsLukas Larsson
2011-02-17Fix formatting for compilerLukas Larsson
2011-02-17Add init_per_suite and end_per_suiteLukas Larsson
2011-02-17Add ts_install_scb to suite/0Lukas Larsson
2011-02-17Update compiler tests to conform with common_test standardLukas Larsson
2011-02-17Update all fin_per_testcase to end_per_testcase.Lukas Larsson
2011-02-14compile: Refactor handling of source options (e.g. 'from_core')Björn Gustavsson
The options for compiling from Core Erlang, BEAM assembler files, and BEAM files are handled in several places, making it difficult to change or add more similar options. Refactor the option handling so that each option only need to be handled in one place.
2011-02-09Merge branch 'bjorn/compiler/eliminate-warnings' into devBjörn Gustavsson
* bjorn/compiler/eliminate-warnings: compiler Makefile: Turn warnings into errors v3_kernel_pp: Add support for pretty-printing #k_literal{} records v3_kernel_pp: Eliminate warning
2011-02-07v3_codegen: Use the latest instance of StBjörn Gustavsson
By accident a previous instance of St is used, which is harmless in this case, but leads to worse quality of the generated code.
2011-02-02compiler Makefile: Turn warnings into errorsBjörn Gustavsson
We want to ensure that the compiler applications is kept free of warnings.
2011-02-02v3_kernel_pp: Add support for pretty-printing #k_literal{} recordsBjörn Gustavsson
2011-02-02v3_kernel_pp: Eliminate warningBjörn Gustavsson
2010-12-21compiler: Don't include -export_type as attributes in BEAM filesBjörn Gustavsson
Similar to -spec and -type, -export_type should be not be included as attributes (and therefore loaded) in BEAM files, but only in the abstract code chunk.
2010-12-06Prepare releaseErlang/OTP
2010-12-02Merge branch 'bjorn/fix-compiler-bugs/OTP-8949' into devBjörn Gustavsson
* bjorn/fix-compiler-bugs/OTP-8949: beam_utils: Fix check_liveness/3 for receive loops beam_utils: Fix liveness analysis for gc_bif instructions
2010-12-02beam_utils: Fix check_liveness/3 for receive loopsBjörn Gustavsson
Sometimes the beam_bool pass wants to know whether an y register will be killed by the code that follows and will do (effectively): beam_utils:is_killed({y,Y}, Code, L) When asked to calculate the liveness for an y register, beam_utils:is_killed/3 will loop forever if the code includes a receive loop. Since this rarely occurs, fix the problem in the simplest and most conservative way. Reported-by: Christopher Williams
2010-11-29Merge branch 'pan/auto-import-doc-fix/OTP-8848' into devPatrik Nyblom
* pan/auto-import-doc-fix/OTP-8848: Correct description of no_auto_import compiler directive
2010-11-26beam_utils: Fix liveness analysis for gc_bif instructionsBjörn Gustavsson
When gc_bif instructions occurred outside of a block, beam_utils:check_liveness/3 did not take into account that the instruction could do a garbage collection, and could falsely report that an x register would be killed. That could cause the beam_dead pass to make the code unsafe by removing the assignment to an x register that would subsequently be referenced by the garbage collector. Reported-by: Christopher Williams