Age | Commit message (Collapse) | Author |
|
Extend the 'rtl_var' definition to host liveness information needed for
a simple liveness analysis performed by the LLVM backend.
Also, uncomment some function definitions (mostly simple accessors) that
are already there and are useful for the translation of RTL code to LLVM
assembly.
Finally, extend the RTL 'call' instruction with the 'normalcontinuation'
field which is required for translating calls that are in the scope of
an exception handler. This extra field is required in order to point to
a new basic block which will hold the 'unwind label' of LLVM's invoke
instruction. While the 'unwind label' is semantically equivalent with
the 'failcontinuation', in LLVM this block must have a 'landingpad'
instruction. The problem arises by the fact that an RTL 'continuation'
block can also be accessible by other paths in the RTL CFG, and so
cannot be marked as a landing pad. To overcome this issue we create a
new block (the 'normalcontinuation') which is used as the 'unwind label'
of LLVM's invoke instruction and which will eventually transfer control
to the 'continuation' block.
|
|
This is used by the LLVM backend in order to generate unique names for
temporary SSA values and functions.
|
|
All backends (e.g. arm, ppc, sparc, x86) share the same code for the following
functions:
* find_const/2,
* mk_data_relocs/2, and
* slim_sorted_exportmap/3
This commit moves those definitions (along with some helper functions) in
misc/hipe_pack_constants.erl and adds the appropriate specs. This is a
structural change; no change in semantics intented.
|
|
|
|
Commit 81c7db0e247a6ee1b7a5c2764aa9575d7f6fb88a broke apart
hipe_bif:make_fe/3 into two BIFs but forgot to properly update the
type information about HiPE BIFs in erl_bif_types.erl. This commit
fixes this by taking out the types of hipe_bifs:make_fe/3 and adding
types for the new BIFs hipe_bifs:get_fe/2 and
hipe_bifs:hipe_bifs_set_native_address_in_fe/2.
|
|
* kostis/hipe-tests-bs/OTP-11748:
Up the time limit (globally) for some slow machines
Add check so that tests are skipped if HiPE is not available
Add a Makefile for the HiPE tests
Add tests for the HiPE compiler (Part 1: binaries and bitstrings)
|
|
|
|
|
|
|
|
Create tests for the HiPE native code compiler. This is the first
part of the effort and contains tests that check that the native
code produced by the HiPE compiler for binaries and bitstrings is
OK and behaves similarly to the code produced by the BEAM compiler.
|
|
* lukas/ose/master/OTP-11334: (71 commits)
erts: Fix unix efile assert
ose: Use -O2 when building
ose: Expand OSE docs
ose: Add dummy ttsl driver
ose: Cleanup cleanup of mutex selection defines
ose: Polish mmap configure checks
ose: Add ose specific x-compile flags
ose: Updating fd_driver and spawn_driver for OSE
ose: Updating event and signal API for OSE
ose: Cleanup of mutex selection defines
win32: Compile erl_log.exe
ose: Remove uneccesary define
ose: Fix ssl configure test for osx
erts: Fix sys_msg_dispatcher assert
ose: Fix broken doc links
ose: Thread priorities configurable from lmconf
ose: Yielding the cpu is done "the OSE" way
ose: Start using ppdata for tse key
ose: Do not use spinlocks on OSE
ose: Fix support for crypto
...
Conflicts:
lib/crypto/c_src/crypto.c
|
|
This port has support for both non-smp and smp.
It contains a new way to do io checking in which erts_poll_wait
receives the payload of the polled entity. This has implications
for all linked-in drivers.
|
|
* hb/dialyzer/deprecate_types/OTP-10342:
Deprecate pre-defined built-in types
|
|
* schlagert/fix_basic_appups:
Dynamically configure typer_SUITE according to environment
Disable hipe_SUITE when environment doesn't support it
Make hipe non-upgradable by setting appup file empty
Fix missing module on hipe app file template
Add test suites performing app and appup file checks
Introduce appup test utility
Fix library application appup files
Fix non-library appup files according to issue #240
OTP-11744
|
|
|
|
The reason for this is that if you are running a system with native
compiled code, then you will have major problems with soft upgrade
and the only reasonable way to go is to restart your emulator.
Currently there is no instruction that will force ONLY a restart of
the emulator, so the solution would be to hand write a relup with
only a restart_emulator instruction. By letting hipe.appup be empty,
systools will complain and not generate a relup - which should
indicate that you might have to write your relup by hand.
|
|
|
|
Add the mentioned test suites for *all* library and touched
non-library applications.
|
|
The types array(), dict(), digraph(), gb_set(), gb_tree(), queue(),
set(), and tid() have been deprecated. They will be removed in OTP 18.0.
Instead the types array:array(), dict:dict(), digraph:graph(),
gb_set:set(), gb_tree:tree(), queue:queue(), sets:set(), and ets:tid()
can be used. (Note: it has always been necessary to use ets:tid().)
It is allowed in OTP 17.0 to locally re-define the types array(), dict(),
and so on.
New types array:array/1, dict:dict/2, gb_sets:set/1, gb_trees:tree/2,
queue:queue/1, and sets:set/1 have been added.
|
|
Handle immediate opaque types as aliases:
A declaration of dict/0
-opaque dict() :: dict(_, _).
-opaque dict(Key, Value) :: ...
is handled as an alias, that is, when using dict() it is immediately
replaced by dict(_, _).
This is a means to avoid having to handle equivalent opaque types
later. To be changed if it doesn't work well.
|
|
This should fix a problem with variables in parameterized types.
In particular it concerns parameterized opaque types and records.
|
|
|
|
As discussed in issue #240 *all* OTP library applications use the '.*'
wildcard as up and down version. This makes library applications
always up- and downgradeable. Using the wildcard version obsoletes
all maintenance tasks regarding library applications' appup files.
Additionally, it prevents upgrade problems caused by automatically
included application dependencies when using reltool to create
releases. Missing copyright headers are now consistently present.
|
|
|
|
|
|
|
|
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.
|
|
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}]},
[...]
|
|
|
|
The R16B03 release
Conflicts:
lib/sasl/vsn.mk
|
|
|
|
|
|
|
|
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.
|
|
The R16B02 release
Conflicts:
lib/sasl/vsn.mk
|
|
|
|
* maint:
Change encoding of troublesome notes.xml files to utf-8
Convert some notes.xml files from latin-1 to utf-8
|
|
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
|
|
The R16B01 release
Conflicts:
lib/sasl/vsn.mk
|
|
|
|
|
|
|
|
|
|
|
|
|
|
* ks/hipe-cleanup-escaping/OTP-11031:
Loosen the assumptions of code that handles escaping functions
|
|
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.
|
|
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.
|
|
|
|
|