Age | Commit message (Collapse) | Author |
|
* bjorn/cuddle-with-tests:
Correct tar_SUITE:unicode/1
|
|
|
|
* ingela/httpc/keep-alive-https/OTP-14041:
inets: httpc - do not send absolute URIs over TLS tunnels
|
|
v3_kernel may produce unwanted and confusing warnings for code that
has been inlined with the new inliner (cerl_inline). Consider this
code:
-compile(inline).
compute1(X) ->
add(X, 0).
compute2(X, Y) ->
add(X, Y).
add(1, 0) ->
1;
add(1, Y) -> %% "this clause cannot match..."
1 + Y;
add(X, Y) ->
X + Y.
v3_kernel warns because add/2 has been inlined into compute1/1 and only
the first clause in add/2 will match. But the other clauses are needed
when add/2 is inlined into compute2/2, so the user cannot do anything
to eliminate the warning (short of manually inlining add/2, defeating the
purpose of the 'inline' option).
The warning would be reasonable if compute2/2 didn't exist, but it would
be too complicated for the compiler to figure whether a warning make
sense or not.
Therefore, suppress all warnings generated by v3_kernel if cerl_inline
has been run.
ERL-301
|
|
* dgud/stdlib/rand-fixup-spec:
Fixup of specs in rand
|
|
|
|
* ingela/odbc/mac:
odbc: Remove support for old MACs
|
|
Change configure to skip odbc for old MACs, the change in
PR-1227 is not backwards compatible with old MACs, and we do not
see a need to continue support for such old versions. However
it is still possible to make it work on such machines using
the --with-odbc configure option.
|
|
Build a dialyzer PLT and use it to analyze all OTP applications
that can currently be analyzed without warnings even when the
option -Wunmatched_returns is turned on. Note that the dialyzer
run does _not_ enable the option which allows for improper lists.
Applications to run dialyzer on are mentioned alphabetically.
As more applications are fixed to run cleanly even with unmatched
returns, they can be added to this list. However, there will come
a point when the warning pass of Dialyzer will run out of memory
on Travis and the process will be killed. This should be fixed in
dialyzer.
|
|
warning: array subscript is below array bounds
and ok, it's technically undef behavior to set pointer
before first array element.
|
|
|
|
for simplify string to 64-bit integer parsing.
|
|
Instead of passing around a file descriptor
use a function pointer to facilitate more advanced
backend write logic such as size limitation or compression.
|
|
|
|
Make sure that we always test the "+fnu" option on all
systems. It seems that it was not tested in our daily
builds, since they are run non-interactively.
Make sure that we sort the list of names in do_unicode/1.
Otherwise the test would only work in "+fnl" mode because
the list would only contain one element.
|
|
* elbrujohalcon/expand-sup-doc/PR-1233/OTP-14037:
Expand on the behavior of supervisors
|
|
Fixed bad specs introduced in commit ff568b5e818.
Also suppress improper_lists warnings.
|
|
* dgud/mnesia/type-specs:
Add basic spec and types
|
|
|
|
* richcarl/mnesia/mnesia-ext-dont-wrap-cont/PR-1240/OTP-14039:
Don't wrap continuations from mnesia_ext backends
|
|
* jj1bdx/stdlib/rand-jump/PR-1235/OTP-14038:
Add jump functions to rand module
|
|
Also, use byte form for immediates up to 255, since there's no sign
extension in byte form.
HiPE seems to never generate negative test immediates currently, but we
should at least not output incorrect encodings.
|
|
test_two_fixnums would previously only check its right-hand argument for
immediates, but not it's left. Now, test_two_fixnums reduces to
test_fixnum if either argument is an immediate.
|
|
|
|
By changing mask_and_compare from and,sub to sub,and, x86 can use a
3-address LEA immediate add, saving a mov. The RISC backends should see
no change in sequence length.
We make test_(heap_|sub)binary use mask_and_compare so they will benefit
too.
|
|
The addsub sequence was suboptimal when one of the arguments was
immediate, because it became an immediate alu followed by an immediate
alub, and the optimisers would not combine them due to the risk of
altering the branch. However, in this case we know that such a rewrite
is safe, and do it directly in hipe_tagscheme:fixnum_addsub/5 instead.
|
|
This makes the fast case a fallthrough and the slow case a branch,
hopefully improving cache locality.
|
|
|
|
With the introduction of immediate adds encoded as 'LEA' on x86, it is
now possible to do a fixnum add in two instructions and one branch by
commuting the addition and reusing the result register as a temporary,
which makes the 'alub' a 2-address add, saving a move instruction.
|
|
|
|
It seems that most 3-address adds of temps can be move coalesced.
Therefore, we limit the behaviour added by 1567585dda8 to only affect
immediate adds.
Also, add conversion of immediate mov+sub to lea.
|
|
Although LEA is useful for three-address form adds, sometimes it is used
where a normal add would have sufficed (due to the addition being the
last use of one of the operands; but RTL lowering does not know that as
it does not have liveness information). As a workaround, we convert LEA
back to ADD when the destination is the same as one of the operands.
|
|
|
|
|
|
|
|
|
|
branch and alub overlap in their use cases, but the backends rely on
knowing that the result is unused in their lowering of branch. By
extending alub so that the destination is optional, it can fully replace
branch.
This simplifies rtl by reducing code duplication and the number of
instructions.
Also, in the x86 and arm backends, we can now use 'test' and
{'tst','mvn','teq'} to lower some alubs without destinations. This is
particularly good for x86, as sequences such as 'is_boxed' type tests
now get shorter (both from not needing a mov to copy the variable, but
also from the fact that 'testb' encodes shorter than 'andq').
|
|
|
|
|
|
Add additional details on the behavior of supervisors when
reaching maximum restart intensity, as stated by @rvirding
at [Medium](https://goo.gl/XhwpSL)
|
|
to get errors for "#if UNDEFINED_MACRO"
|
|
|
|
|
|
* tokitori/stdlib/optimize-sets/PR-1212/OTP-14035:
Speed up sets:add_element/2 and sets:del_element/2
|
|
|
|
* github/pr/1227:
Update configure to work better on Mac
|
|
Jump functions returns the state after performing jump calculation to a
rand module internal state, which is equivalent to perform a large
number of calls of calculating new states for XorShift*/+ algorithms.
This commit add jump functions for exsplus and exs1024 algorithms, and a
wrapper function jump/1. The wrapper function will cause error with
reason "not_implemented" if the jump function for the algorithm is not
implemented.
This commit adds following new functionalities:
- Add new functions rand:jump/0 and rand:jump/1
- Add the member jump to type alg_handler(), a fun for performing
the jump function
- Add jump functions for exsplus, equivalent to 2^64 calls
- Add jump functions for exs1024, equivalent to 2^512 calls
- Revise seed_put/1, seed/1, seed/2
See <https://github.com/erlang/otp/pull/1235#discussion_r86950557>
- Add dummy jump function for exs64 calling
erlang:error(not_implemented)
- Add jump function test cases as follows:
* Add Common Test group reference_jump
* Add tests for jump/0 to reference_jump_procdict/1
* Rename tests for jump/1 to reference_jump_state/1
* Rename gen_jump/1 to gen_jump_1/1
* Add Common Tests reference_jump_procdict and reference_jump_state
to the group reference_jump
- Add jump function documentation
This commit also changes the Copyright year for Kenji Rikitake's code
from 2015 to 2015-2016.
|
|
The fixpoint iteration added in 05130e48 makes those calls
superfluous.
|
|
|
|
|