aboutsummaryrefslogtreecommitdiffstats
path: root/lib/hipe
AgeCommit message (Collapse)Author
2014-01-21[dialyzer] Re-work the handling of opaque typesHans Bolinder
It is now OK to inspect and modify the internals of opaque types within the scope of the module. The contracts are used for decorating types with opaqueness when it is harmless to do so. The opaqueness is propagated by the typesig module and also by the dataflow module. A lot of details have been fixed or updated. In particular the modules erl_types and erl_bif_types have been modified extensively. The version in vsn.mk has been updated to 2.7. The reason is a modification of #opaque{} in erl_types. Dialyzer seems to be about five percent slower than it used to be.
2014-01-10hipe: Fix compilation with 'no_remove_comments'Johannes Weißl
To reproduce the error: $ echo '-module(hello).' > hello.erl $ erl 1> c(hello, [native,{hipe,[no_remove_comments]}]). [...] <HiPE (v 3.10.2.1)> Error: [hipe:834]: ERROR: {{case_clause, {icode_comment,call_ext_only}}, [{hipe_icode,successors,1, [{file,"hipe_icode.erl"}, {line,1444}]}, [...]
2013-12-20Merge remote-tracking branch 'origin/kostis/dialyzer_hipe-remove-gs'Dan Gudmundsson
2013-12-10Merge tag 'OTP_R16B03'Magnus Lidén
The R16B03 release Conflicts: lib/sasl/vsn.mk
2013-12-09Prepare releaseOTP_R16B03Erlang/OTP
2013-11-13Remove the hipe tool as it uses the now obsolete gsKostis Sagonas
2013-10-14Merge branch 'maint'Fredrik Gustafsson
2013-10-09Fix crash when using remote types in the tail of list typesKostis Sagonas
Hans Bolider reported a dialyzer crash when using a remote type in the tail position of a maybe_improper_list() declaration. A test was created (by extending an existing module of the testsuite) and erl_types was modified to expand the remote type and not pass it unexpanded to subsequent phases in the processing.
2013-09-17Merge tag 'OTP_R16B02'Magnus Lidén
The R16B02 release Conflicts: lib/sasl/vsn.mk
2013-09-16Prepare releaseOTP_R16B02Erlang/OTP
2013-09-09Merge branch 'maint'Björn Gustavsson
* maint: Change encoding of troublesome notes.xml files to utf-8 Convert some notes.xml files from latin-1 to utf-8
2013-09-06Convert some notes.xml files from latin-1 to utf-8Björn Gustavsson
In the master branch, the encoding for most xml files have been changed from latin-1 to utf-8. The problem is, that the corresponding files in the maint branch still are encoded in latin-1, and that a merge from maint to master may bring in characters encoded in latin-1 into a notes.xml file declared to be in utf-8. To fix the problem once and for all (for the files involved), we'll need to re-encode the files files utf-8 in maint, and then merge to master. Noticed-by: Magnus Henoch
2013-06-18Merge tag 'OTP_R16B01'Björn-Egil Dahlberg
The R16B01 release Conflicts: lib/sasl/vsn.mk
2013-06-17Prepare releaseOTP_R16B01Erlang/OTP
2013-06-12Merge branch 'maint'Björn-Egil Dahlberg
2013-06-12Update copyright yearsBjörn-Egil Dahlberg
2013-04-19Convert XML files to UTF-8Hans Bolinder
2013-04-19Convert XML files to UTF-8, where neededHans Bolinder
2013-04-19Remove the "coding: utf-8" comment from all Erlang source filesHans Bolinder
2013-04-11Merge branch 'ks/hipe-cleanup-escaping/OTP-11031' into maintFredrik Gustafsson
* ks/hipe-cleanup-escaping/OTP-11031: Loosen the assumptions of code that handles escaping functions
2013-03-12Loosen the assumptions of code that handles escaping functionsKostis Sagonas
The HiPE compiler implicitly relied on the assumption that a function will never appear as both exported and also used as function closure. This was true because the BEAM compiler prior to R16B created module local anonymous functions for each closure. A proposed change to the BEAM compiler invalidates this invariant, so in order to accommodate for this change there needs to be a change of how the set of possibly escaping functions is computed. While doing this, the code was simplified by taking out a boolean() tag that indicated whether a function is a closure or exported and also slightly cleaned up the affected modules.
2013-03-10Fix handling of bs_match_string translationKostis Sagonas
Prior to R16B, the bs_match_string instruction worked only for cases that had a destination variable. As shown by the example below, this is not always the case and the Dst list can be empty. test(<<42, _/bits>> = B) -> B. This fixes a bug reported by Loïc Hoguin (02/12/2013); the original post used a different code example to illustrate the problem. While revising the code, a significant clean up was also performed.
2013-03-10Take out 'constant' type test and unnecessary type declarationKostis Sagonas
2013-03-10Take out 'constant' type test from left over commentsKostis Sagonas
2013-03-10Enable more warningsKostis Sagonas
2013-03-10Use remote type instead of relying on hipe_icode.hrlKostis Sagonas
2013-03-10Add type info for hipe_bifs:nstack_used_size/0Kostis Sagonas
2013-03-10Use correct type nameKostis Sagonas
2013-03-10Update a commentKostis Sagonas
2013-03-02Fix the title of hipe_app documentation pageLoïc Hoguin
2013-02-25Prepare releaseOTP_R16BErlang/OTP
2013-02-25Merge branch 'kostis/hipe-icode-range-bug'Sverker Eriksson
* kostis/hipe-icode-range-bug: Fix bug related to the handling of is_number/1 by the range analysis Clean up and homogenize text messages for options OTP-10897
2013-02-25Fix bug related to the handling of is_number/1 by the range analysisKostis Sagonas
The following module produced erroneous results when compiled with HiPE: -module(a). -export([foo/1]). foo(X) when is_number(X) -> is_integer(X). Running: 1> c(a). 2> a:foo(0). true 3> hipe:c(a). 4> a:foo(0). false % *** WRONG *** The problem was that the 'number' case for the `hipe_icode:type_test/1` was going to the default case where the argument was determined as being something other than an integer. Thanks to Sebastian Egner and Johannes Weißl for bringing the bug into attention. Fixed on the day it was reported.
2013-02-25Clean up and homogenize text messages for optionsKostis Sagonas
2013-02-22Update copyright yearsBjörn-Egil Dahlberg
2013-02-20Merge branch 'ks/hipe_bif-remove_refs_from/OTP-10851'Fredrik Gustafsson
* ks/hipe_bif-remove_refs_from/OTP-10851: Fixed test to allow for lists:foreach/2 call Change the return value of hipe_bifs:remove_refs_from/1
2013-02-20Merge branch 'sa/dialyzer-types-arity/OTP-10861'Fredrik Gustafsson
* sa/dialyzer-types-arity/OTP-10861: Minor refactoring Update Dialyzer's documentation Support for types with the same name and different arity
2013-02-19Merge branch 'ks/type-doc-cleanup/OTP-10850'Fredrik Gustafsson
* ks/type-doc-cleanup/OTP-10850: Add support for printing <<_:_*1>> as bitstring() Clean up of documentation of type language
2013-02-15Support for types with the same name and different arityStavros Aronis
2013-02-14Add new binary conversion bifsLukas Larsson
Added: binary_to_integer/1,2, integer_to_binary/1,2
2013-02-13Change the return value of hipe_bifs:remove_refs_from/1Kostis Sagonas
In order to avoid an ummatched return warning in erts and make the code more sane, the return value of the bif was changed from [] to 'ok'. (Probably more hipe_bifs need such changes but they will have to wait.) While at it, the code of various functions in hipe_unified_loader was shortened by using lists:foreach/1 instead of explicit recursion.
2013-02-11Add support for printing <<_:_*1>> as bitstring()Kostis Sagonas
2013-01-29Prepare releaseOTP_R16A_RELEASE_CANDIDATEErlang/OTP
2013-01-28Fix wording of error messageStavros Aronis
2013-01-25Extend char() to Unicode charactersHans Bolinder
The code related to the introduction of unicode_string() and unicode_char() has been removed. The types char() and string() have been extended to include Unicode characters. In fact char() was changed some time ago; this commit is about cleaning up the documentation and introduce better names for some functions.
2013-01-23Properly support functions with arbitrary arity in type specs.Stavros Aronis
Dialyzer now understands the "fun(...)" syntax in type specs.
2013-01-21[hipe, kernel, stdlib] Correct a few typesHans Bolinder
The type ascii_string() in the base64 module has been corrected. The type file:file_info() has been cleaned up. The type file:fd() has been made opaque in the documentation. The type nodes() has been removed from erl_bif_types.erl.
2013-01-18Merge branch 'nox/enable-silent-rules/OTP-10726'Björn-Egil Dahlberg
* nox/enable-silent-rules/OTP-10726: Implement ./otp_build configure --enable-silent-rules
2013-01-15Implement ./otp_build configure --enable-silent-rulesAnthony Ramine
With silent rules, the output of make is less verbose and compilation warnings are easier to spot. Silent rules are disabled by default and can be disabled or enabled at will by make V=0 and make V=1.
2013-01-15Merge branch 'sa/dialyzer-record-field-type/OTP-10681'Fredrik Gustafsson
* sa/dialyzer-record-field-type/OTP-10681: Fix precision of record creation violation warnings