2015-10-22 Richard Biener <rguenther@suse.de>
PR middle-end/68046
PR middle-end/61893
* optabs.c (emit_libcall_block_1): Allow a NULL_RTX equiv.
(expand_binop): For -ftrapv optabs do not record an REG_EQUAL note.
(expand_unop): Likewise.
* gcc.dg/torture/ftrapv-2.c: New testcase.
From-SVN: r229170
libsanitizer/
PR bootstrap/68041
* configure.ac (link_sanitizer_common): Link against librt only if it
contains shm_open, required by sanitizers.
(CXX_ABI_NEEDED): Remove variable.
* configure: Regenerate.
* ubsan/Makefile.am (libubsan_la_LIBADD): Do not add -lc++abi anymore.
* ubsan/Makefile.in: Regenerate.
From-SVN: r229168
Also make build_complex_cproj available globally and use
it for the existing match.pd rules.
Tested on x86_64-linux-gnu, aarch64-linux-gnu and arm-linux-gnueabi.
gcc/
* builtins.c (fold_builtin_cproj): Delete.
(fold_builtin_1): Handle constant arguments here.
(build_complex_cproj): Move and rename to...
* tree.c: (build_complex_inf): ...this.
* tree.h (build_complex_inf): Declare.
* match.pd: Fold cproj(x)->x if x has no infinity.
Use build_complex_inf for existing cproj rules.
From-SVN: r229164
gcc/ChangeLog:
2015-10-22 Andreas Krebbel <krebbel@linux.vnet.ibm.com>
PR target/68015
* config/s390/s390.md (mov<mode>cc): Emit compare only if we don't
already have a comparison result.
gcc/testsuite/ChangeLog:
2015-10-22 Andreas Krebbel <krebbel@linux.vnet.ibm.com>
PR target/68015
* gcc.target/s390/pr68015.c: New test.
From-SVN: r229163
This patch addresses PR-67948 by changing the xor-and.c test,
initially written for a simplify-rtx pattern, to make it pass post
r228661 (see
https://gcc.gnu.org/ml/gcc-patches/2015-10/msg00676.html). This test
no longer triggered the simplify-rtx pattern it was written for prior
to r228661, though other optimizations did lead to the same assembly
the test checked for. The optimization added with r228661 matches the
pattern used in the test and optimizes it to a better and still valid
sequence. Being unable to easily change the test to trigger the
original simplify-rtx pattern, I chose to change it to pass with the
new produced assembly sequence.
This is correct because the transformation is valid and it yields a
more efficient pattern. However, as I pointed out before this test
doesn't test the optimization it originally was intended for.
Tested by running regression tests for armv6.
Is this OK to commit?
Thanks, Andre
2015-10-22 Andre Vieira <andre.simoesdiasvieira@arm.com>
PR testsuite/67948
* gcc.target/arm/xor-and.c: Adjust test to check for eor
instead of orr.
From-SVN: r229161
Jiong pointed out privately that there was a thinko
in the way in which the global state was being
set and reset. I don't like adding such
global state but ....
2015-10-22 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
PR target/63304
* config/aarch64/aarch64.c (aarch64_nopcrelative_literal_loads): New.
(aarch64_expand_mov_immediate): Use aarch64_nopcrelative_literal_loads.
(aarch64_classify_address): Likewise.
(aarch64_secondary_reload): Likewise.
(aarch64_override_options_after_change_1): Adjust.
* config/aarch64/aarch64.md (aarch64_reload_movcp<GPF_TF:mode><P:mode>):
Use aarch64_nopcrelative_literal_loads.
(aarch64_reload_movcp<VALL:mode><P:mode>): Likewise.
* config/aarch64/aarch64-protos.h (aarch64_nopcrelative_literal_loads):
Declare
2015-10-22 Jiong Wang <jiong.wang@arm.com>
Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
PR target/63304
* gcc.target/aarch64/pr63304_1.c: New test.
From-SVN: r229160
/cp
2015-10-21 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/66781
* parser.c (cp_parser_enum_specifier): Upon error_at set
nested_name_specifier to error_mark_node; improve error message.
/testsuite
2015-10-21 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/66781
* g++.dg/parse/enum13.C: New.
/cp
2015-10-21 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/67847
* parser.c (cp_parser_enum_specifier): Reject a nested_name_specifier
which doesn't name a class or namespace.
/testsuite
2015-10-21 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/67847
* g++.dg/parse/enum12.C: New.
From-SVN: r229156
2015-10-21 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/67939
* data.c (create_character_initializer): Deal with zero length string.
2015-10-21 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/67939
* gfortran.dg/pr67939.f90: New test.
From-SVN: r229153
When a scalar is defined in function of an array reference in the current scop,
it does variate. Graphite cannot represent the condition in scop-11.c, as a[*]
variates in the current region, and it is not an affine condition:
for (j = 0; j <= 20; j++)
a[j] = b + i;
if (a[12] == 23)
b = 3;
else
b = 1;
for (j = 0; j <= 20; j++)
a[j] = b + i;
* graphite-scop-detection.c (parameter_index_in_region): Update call to
invariant_in_sese_p_rec.
* graphite-sese-to-poly.c (extract_affine): Same.
* sese.c (invariant_in_sese_p_rec): Pass in an extra parameter has_vdefs.
(scalar_evolution_in_region): Return chrec_dont_know when the scalar variable
depends on virtual definitions in the current region.
* sese.h (invariant_in_sese_p_rec): Update declaration.
testsuite/
* gcc.dg/graphite/scop-11.c: Update pattern.
Co-Authored-By: Sebastian Pop <s.pop@samsung.com>
From-SVN: r229151
* graphite-scop-detection.c (build_scops): Do not handle scops with more
than PARAM_GRAPHITE_MAX_ARRAYS_PER_SCOP arrays.
* params.def (PARAM_GRAPHITE_MAX_ARRAYS_PER_SCOP): New.
Co-Authored-By: Sebastian Pop <s.pop@samsung.com>
From-SVN: r229150
PR ipa/67056
* ipa-polymorphic-call.c (possible_placement_new): If cur_offset
is negative we don't know the type.
(check_stmt_for_type_change): Skip constructors of non-polymorphic
types as those won't help devirutalization.
* g++.dg/ipa/pr67056.C: New testcase.
From-SVN: r229148
If all address spaces use the same modes and forms, we would
be forced to replicate these hooks in the backend. Which would
then require the creation of a new hook to replace
target_default_pointer_address_modes_p.
* targhooks.c (default_addr_space_pointer_mode): Remove check
for generic address space.
(default_addr_space_address_mode): Likewise.
(default_addr_space_valid_pointer_mode): Likewise.
(default_addr_space_legitimate_address_p): Likewise.
(default_addr_space_legitimize_address): Likewise.
From-SVN: r229143
The current default of making all undefined coversions being
set to null is not useful. It has caused all users to lie
and say that spaces are subsets when they are not, just so
that they can override the conversion.
* expr.c (expand_expr_real_2): Use convert_modes on disjoint
address spaces.
From-SVN: r229142
The fold code also expanded cabs(x+yi) to fsqrt(x*x+y*y) when optimising
for speed. tree-ssa-math-opts.c has this transformation too, but unlike
the fold code, it first checks whether the target implements the sqrt
optab. The patch simply removes the fold code and keeps the
tree-ssa-math-opts.c logic the same.
gcc.dg/lto/20110201-1_0.c was relying on us replacing cabs
with fsqrt even on targets where fsqrt is itself a library call.
The discussion leading up to that patch suggested that we only
want to test the fold on targets with a square root instruction,
so it would be OK to skip the test on other targets:
https://gcc.gnu.org/ml/gcc-patches/2011-07/msg01961.htmlhttps://gcc.gnu.org/ml/gcc-patches/2011-07/msg02036.html
The patch does that using the sqrt_insn effective target.
It's possible that removing the tree folds renders the LTO trick
unnecessary, but since the test was originally for an ICE, it seems
better to leave it as-is.
Tested on x86_64-linux-gnu, aarch64-linux-gnu and arm-linux-gnueabi.
20110201-1_0.c passes on all three.
gcc/
* builtins.c (fold_builtin_cabs): Delete.
(fold_builtin_1): Update accordingly. Handle constant arguments here.
* match.pd: Add rules previously handled by fold_builtin_cabs.
gcc/testsuite/
* gcc.dg/lto/20110201-1_0.c: Restrict to sqrt_insn targets.
Add associated options for arm*-*-*.
(sqrt): Remove dummy definition.
From-SVN: r229141
This patch adds a pass that collects information that is common to
all uses of an SSA name X and back-propagates that information up
the statements that generate X. The general idea is to use the
information to simplify instructions (rather than a pure DCE) so
I've simply called it gimple-ssa-backprop.c, to go with
tree-ssa-forwprop.c.
At the moment the only use of the pass is to remove unnecessary
sign operations, so that it's effectively a global version of
fold_strip_sign_ops. I'm hoping it could be extended in future
to record which bits of an integer are significant. There are
probably other potential uses too.
A later patch gets rid of fold_strip_sign_ops.
Tested on x86_64-linux-gnu, aarch64-linux-gnu and arm-linux-gnueabi.
gcc/
* doc/invoke.texi (-fdump-tree-backprop, -fssa-backprop): Document.
* Makefile.in (OBJS): Add gimple-ssa-backprop.o.
* common.opt (fssa-backprop): New option.
* fold-const.h (negate_mathfn_p): Declare.
* fold-const.c (negate_mathfn_p): Make public.
* timevar.def (TV_TREE_BACKPROP): New.
* tree-pass.h (make_pass_backprop): Declare.
* passes.def (pass_backprop): Add.
* gimple-ssa-backprop.c: New file.
gcc/testsuite/
* gcc.dg/tree-ssa/backprop-1.c, gcc.dg/tree-ssa/backprop-2.c,
gcc.dg/tree-ssa/backprop-3.c, gcc.dg/tree-ssa/backprop-4.c,
gcc.dg/tree-ssa/backprop-5.c, gcc.dg/tree-ssa/backprop-6.c: New tests.
From-SVN: r229139
We used to insert a trivial integer_onep condition around loops we know have
more than an iteration. This patch avoids generating those conditions.
* graphite-isl-ast-to-gimple.c (graphite_create_new_loop_guard): Do not call
create_empty_if_region_on_edge when cond_expr is true.
(translate_isl_ast_node_for): Check whether a guard has been generated.
Co-Authored-By: Sebastian Pop <s.pop@samsung.com>
From-SVN: r229137
Now that scop contains a list of all the basic blocks inside, it makes sense to
iterate over only those basic blocks in
graphite-sese-to-poly.c:rewrite_reductions_out_of_ssa,rewrite_cross_bb_scalar_deps_out_of_ssa
Passes regtest and bootstrap.
gcc/ChangeLog:
2015-10-20 Aditya Kumar <hiraditya@msn.com>
* graphite-poly.h (struct dr_info): Added invalid_alias_set number.
(operator=): Removed.
(dr_info): Make alias_set number the last argument with default value of invalid_alias_set.
* graphite-sese-to-poly.c (build_scop_drs): Update constructor of dr_info.
(rewrite_reductions_out_of_ssa): Iterate only through the basic blocks which are inside region.
(rewrite_cross_bb_scalar_deps_out_of_ssa): Same.
* sese.h (struct sese_l): Removed assignment operator.
(split_region_for_bb): Removed dead code.
From-SVN: r229136
PR middle-end/67966
* tree.c (verify_type): Verify that TYPE_MODE match
between TYPE_CANONICAL and type.
* expr.c (store_expr_with_bounds): Revert my previous change.
* expmed.c (store_bit_field_1): Revert prevoius change.
* gimple-expr.c (useless_type_conversion_p): Require TYPE_MODE
to match for all types.
From-SVN: r229132
gcc/
* omp-low.c (simd_clone_create): Set in_other_partition
for created clones.
gcc/testsuite/
* gcc.dg/lto/simd-function_0.c: New test.
From-SVN: r229127
This patch makes sure that, for every simplification that uses
fold_strip_sign_ops, there are associated match.pd rules for the
leaf sign ops, i.e. abs, negate and copysign. A follow-on patch
will add a pass to handle more complex cases.
Tested on x86_64-linux-gnu, aarch64-linux-gnu and arm-linux-gnueabi.
gcc/
* match.pd: Add rules to simplify ccos, ccosh, hypot, copysign
and x*x in cases where the operands are sign ops. Extend these
rules to handle copysign as a sign op (including for cos, cosh
and pow, which already treated negate and abs as sign ops).
From-SVN: r229123
PR target/68018
* config/i386/i386.c (ix86_compute_frame_layout): Realign the stack
for 64-bit MS_ABI targets also when default incoming stack boundary
is overriden.
testsuite/ChangeLog:
PR target/68018
* gcc.target/i386/pr68018.c: New test.
From-SVN: r229120
2015-10-21 Richard Biener <rguenther@suse.de>
* tree-ssa-sccvn.c (cond_stmts_equal_p): Compare two GIMPLE
cond stmts, enhanced and split out from ...
(vn_phi_eq): ... here.
From-SVN: r229119
2015-10-21 Richard Biener <rguenther@suse.de>
PR middle-end/68031
* fold-const.c: Include tree-ssa-operands.h and tree-into-ssa.h.
(tree_ssa_name_nonnegative_warnv_p): Fold into ...
(tree_single_nonnegative_warnv_p): ... here. For SSA names
make sure they are not registered for update.
* gcc.dg/torture/pr68031.c: New testcase.
From-SVN: r229118
libsanitizer/
* sanitizer_common/sanitizer_stacktrace.cc (GetCanonicFrame): Assume we
compiled code with GCC when extracting the caller PC for ARM if no
valid frame pointer is available.
From-SVN: r229115
libsanitizer/
PR bootstrap/63888
Reapply:
2015-02-20 Jakub Jelinek <jakub@redhat.com>
* asan/asan_globals.cc (RegisterGlobal): Disable detect_odr_violation
support until it is rewritten upstream.
* c-c++-common/asan/pr63888.c: New test.
From-SVN: r229114
libsanitizer/
PR sanitizer/63958
Reapply:
2014-10-14 David S. Miller <davem@davemloft.net>
* sanitizer_common/sanitizer_platform_limits_linux.cc (time_t):
Define at __kernel_time_t, as needed for sparc.
(struct __old_kernel_stat): Don't check if __sparc__ is defined.
* libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h
(__sanitizer): Define struct___old_kernel_stat_sz,
struct_kernel_stat_sz, and struct_kernel_stat64_sz for sparc.
(__sanitizer_ipc_perm): Adjust for sparc targets.
(__sanitizer_shmid_ds): Likewsie.
(__sanitizer_sigaction): Likewise.
(IOC_SIZE): Likewsie.
From-SVN: r229113
gcc/
* asan.c (asan_emit_stack_protection): Don't pass local stack to
asan_stack_malloc_[n] anymore. Check if asan_stack_malloc_[n] returned
NULL and use local stack than.
(asan_finish_file): Insert __asan_version_mismatch_check_v[n] call
in addition to __asan_init.
* sanitizer.def (BUILT_IN_ASAN_INIT): Rename to __asan_init.
(BUILT_IN_ASAN_VERSION_MISMATCH_CHECK): Add new builtin call.
* asan.h (asan_intercepted_p): Handle new string builtins.
* ubsan.c (ubsan_use_new_style_p): New function.
(ubsan_instrument_float_cast): If location is unknown, assign
input_location to loc. Propagate loc to ubsan_create_data if
ubsan_use_new_style_p returned true.
config/
* bootstrap-asan.mk: Replace ASAN_OPTIONS=detect_leaks with
LSAN_OPTIONS=detect_leaks.
gcc/testsuite/
* c-c++-common/ubsan/float-cast-overflow-10.c: Adjust test.
* c-c++-common/ubsan/float-cast-overflow-8.c: Likewise.
* c-c++-common/ubsan/float-cast-overflow-9.c: Likewise.
* g++.dg/asan/default-options-1.C: Likewise.
From-SVN: r229112