Mark Wielaard [Mon, 22 Feb 2016 22:42:19 +0000 (22:42 +0000)]
PR28901 Add two levels for -Wunused-const-variable.
There is some controversy about enabling -Wunused-const-variable for all
unused static const variables because some feel there are too many errors
exposed in header files. Create two levels for -Wunused-const-variable.
One level to only check for unused static const variables in the main
compilation file. Which is enabled by -Wunused-variable. And a second
level that also checks for unused static const variables in included
files. Which must be explicitly enabled.
gcc/ChangeLog
PR c/28901
* cgraphunit.c (check_global_declaration): Check level of
warn_unused_const_variable and main_input_filename.
* doc/invoke.texi (Warning Options): Add -Wunused-const-variable=.
(-Wunused-variable): For C implies -Wunused-const-variable=1.
(-Wunused-const-variable): Explain levels 1 and 2.
gcc/c-family/ChangeLog
PR c/28901
* c.opt (Wunused-const-variable): Turn into Alias for...
(Wunused-const-variable=): New option.
gcc/testsuite/ChangeLog
PR c/28901
* gcc.dg/unused-variable-3.c: New test.
Jakub Jelinek [Mon, 22 Feb 2016 21:34:49 +0000 (22:34 +0100)]
re PR target/69888 (ICE: SIGSEGV in decide_alg (i386.c:26169) due to infinite (?) recursion with -minline-all-stringops -mmemset-strategy=no_stringop:-1:noalign)
PR target/69888
* config/i386/i386.c (decide_alg): Ensure we don't recurse with
identical arguments. Formatting and spelling fixes.
Jakub Jelinek [Mon, 22 Feb 2016 21:34:07 +0000 (22:34 +0100)]
re PR target/69888 (ICE: SIGSEGV in decide_alg (i386.c:26169) due to infinite (?) recursion with -minline-all-stringops -mmemset-strategy=no_stringop:-1:noalign)
PR target/69888
* config/i386/i386.c (decide_alg): Ensure we don't recurse with
identical arguments. Formatting and spelling fixes.
Richard Biener [Mon, 22 Feb 2016 09:32:35 +0000 (09:32 +0000)]
re PR middle-end/37448 (cannot compile big function)
2016-02-22 Richard Biener <rguenther@suse.de>
PR ipa/37448
* ipa-inline-transform.c (inline_call): When not updating
overall summaries adjust self size by the growth estimate.
* ipa-inline.c (inline_to_all_callers_1): Add to the callers
hash-set, do not update overall summaries here. Renamed from ...
(inline_to_all_callers): ... this which is now wrapping the
above and performing delayed overall summary update.
(early_inline_small_functions): Delay updating of the overall
summary.
Paul Thomas [Sat, 20 Feb 2016 18:26:59 +0000 (18:26 +0000)]
re PR fortran/69423 (Invalid optimization with deferred-length character)
2016-02-20 Paul Thomas <pault@gcc.gnu.org>
PR fortran/69423
* trans-decl.c (create_function_arglist): Deferred character
length functions, with and without declared results, address
the passed reference type as '.result' and the local string
length as '..result'.
(gfc_null_and_pass_deferred_len): Helper function to null and
return deferred string lengths, as needed.
(gfc_trans_deferred_vars): Call it, thereby reducing repeated
code, add call for deferred arrays and reroute pointer function
results. Avoid using 'tmp' for anything other that a temporary
tree by introducing 'type_of_array' for the arrayspec type.
2016-02-20 Paul Thomas <pault@gcc.gnu.org>
PR fortran/69423
* gfortran.dg/deferred_character_15.f90 : New test.
Jakub Jelinek [Fri, 19 Feb 2016 22:18:38 +0000 (23:18 +0100)]
re PR driver/69805 (ICE in greater_than_spec_func, at gcc.c:9722)
PR driver/69805
* gcc.c (LINK_COMMAND_SPEC, GOMP_SELF_SPECS): Use
:%* in %:gt() argument.
(greater_than_spec_func): Adjust for expecting only numbers,
if there are more than two numbers, compare the last two.
Jakub Jelinek [Fri, 19 Feb 2016 19:11:58 +0000 (20:11 +0100)]
re PR c++/69851 (ICE: in assign_temp, at function.c:961)
PR c++/69851
* expr.c (store_field): Don't use bit-field path if exp is
COMPONENT_REF with TREE_ADDRESSABLE type, where TYPE_SIZE is
different from bitsize, but DECL_SIZE of FIELD_DECL is bitsize
and the assignment can be performed by bitwise copy. Formatting
fix.
Martin Sebor [Fri, 19 Feb 2016 18:37:40 +0000 (18:37 +0000)]
PR testsuite/69573 - FAIL: gcc.dg/pr61053.c (test for excess errors)
Tested on x86_64 by running make check-c with
RUNTESTFLAGS='--target_board=unix/-m32/-m128bit-long-double dg.exp=pr61053.c'
gcc/testsuite/ChangeLog:
2016-01-30 Martin Sebor <msebor@redhat.com>
PR testsuite/69573
* gcc.dg/pr61053.c: Tweaked test to avoid bogus failures.
Patrick Palka [Fri, 19 Feb 2016 17:04:29 +0000 (17:04 +0000)]
Adjust fix PR c++/68948
gcc/cp/ChangeLog:
PR c++/68948
* pt.c (tsubst_baselink): Don't diagnose an invalid constructor
call here.
* semantics.c (finish_call_expr): Don't assume a constructor
call is dependent if only the "this" pointer is dependent. When
building a constructor call, always use a dummy object.
Jakub Jelinek [Fri, 19 Feb 2016 16:25:58 +0000 (17:25 +0100)]
re PR middle-end/69838 (Lra deletes EH_REGION)
PR middle-end/69838
* lra.c (lra_process_new_insns): If non-call exceptions are enabled,
call copy_reg_eh_region_note_forward on before and/or after sequences
and remove note from insn if it no longer can throw.
Jakub Jelinek [Fri, 19 Feb 2016 16:02:51 +0000 (17:02 +0100)]
re PR c++/69850 (unnecessary -Wnonnull-compare warning)
PR c++/69850
* init.c (build_vec_delete_1): Set TREE_NO_WARNING on the NE_EXPR
condition.
* cp-gimplify.c (cp_fold): Propagate TREE_NO_WARNING from binary
operators if folding preserved the binop, just with different
arguments.
* g++.dg/warn/Wnonnull-compare-2.C: New test.
* g++.dg/warn/Wnonnull-compare-3.C: New test.
Jakub Jelinek [Fri, 19 Feb 2016 16:01:50 +0000 (17:01 +0100)]
re PR c++/67767 (-Wsuggest-attribute=noreturn suggests noreturn for function which already has noreturn and cold.)
PR c++/67767
* parser.c (cp_parser_std_attribute_spec_seq): Don't assume
attr_spec is always single element chain, chain all the attributes
properly together in the right order.
Andreas Krebbel [Fri, 19 Feb 2016 10:37:19 +0000 (10:37 +0000)]
S/390: z13 Change predicates of 128 bit add sub.
So far usage of 128 bit add/sub instruction was rejected if the second
operand was a constant because the predicate rejected this.
gcc/testsuite/ChangeLog:
* gcc.target/s390/vector/int128-1.c: New test.
gcc/ChangeLog:
* config/s390/vector.md ("<ti*>add<mode>3", "<ti*>sub<mode>3"):
Change the predicate of op2 from nonimmediate to general and let
reload fix it if necessary.
Andreas Krebbel [Fri, 19 Feb 2016 10:34:12 +0000 (10:34 +0000)]
S/390: z13 fix mode in vcond expansion
For floating point vector compares the target mode is an integer mode
which accidently was used as register mode when forcing the compare
operands into regs.
gcc/ChangeLog:
* config/s390/s390.c (s390_expand_vcond): Use the compare operand
mode.
Andreas Krebbel [Fri, 19 Feb 2016 10:31:05 +0000 (10:31 +0000)]
S/390: z13 inline stpcpy implementation.
A handwritten loop for stpcpy using the new z13 vector instructions
appears to be much faster than the millicoded instruction. However,
the implementation is much longer and therefore will only be enabled
when optimization for speed.
Andreas Krebbel [Fri, 19 Feb 2016 10:27:12 +0000 (10:27 +0000)]
S/390: Add IBM z13 pipeline description
This patch adds proper support for the -mtune=z13 option by adding a
z13 pipeline description. As started with zEC12 we mostly make use of
the sched reorder hooks to implement a grouping strategy. However,
this time we also keep an eye at the instruction mix provided in the
out of order window to allow the hardware to exploit the different
units.
gcc/ChangeLog:
* config/s390/2827.md: Rename ooo_* insn attributes to zEC12_*.
* config/s390/2964.md: New file.
* config/s390/s390.c (s390_get_sched_attrmask): Use the right set
of insn grouping attributes depending on the CPU level.
(s390_get_unit_mask): New function.
(s390_sched_score): Remove the OOO from the scheduling macros.
Add loop to calculate a score for the instruction mix.
(s390_sched_reorder): Likewise plus improve debug output.
(s390_sched_variable_issue): Rename macros as above. Calculate
the unit distances after actually scheduling an insn. Improve
debug output.
(s390_sched_init): Clear last_scheduled_unit_distance array.
* config/s390/s390.md: Include 2964.md.
Nick Clifton [Thu, 18 Feb 2016 13:00:07 +0000 (13:00 +0000)]
PR target/62554
PR target/69610
gcc * config/arm/arm.c (arm_option_override_internal): Disable
interworking if the target does not support thumb instructions.
(arm_reload_in_hi): Handle the case where a register to register
move needs reloading because there is no simple pattern to handle
it.
(arm_reload_out_hi): Likewise.
tests * gcc.target/arm/pr62554.c: New test.
* gcc.target/arm/pr69610-1.c: New test.
* gcc.target/arm/pr69610-2.c: New test.
Jakub Jelinek [Wed, 17 Feb 2016 22:27:24 +0000 (23:27 +0100)]
re PR c++/69850 (unnecessary -Wnonnull-compare warning)
PR c++/69850
* gimplify.c (gimplify_cond_expr): Call gimple_set_no_warning
on the cond_stmt from TREE_NO_WARNING on COND_EXPR_COND.
* gimple-ssa-nonnull-compare.c (do_warn_nonnull_compare): Don't
warn on gimple_no_warning_p statements.
* init.c (build_delete): Set TREE_NO_WARNING on ifexp.
Max Filippov [Wed, 17 Feb 2016 20:21:48 +0000 (20:21 +0000)]
xtensa: fix libgcc build with --text-section-literals
Functions __muldf3_aux, __divdf3_aux, __mulsf3_aux and __divsf3_aux
don't start with leaf_entry, so they need explicit .literal_position,
otherwise libgcc build fails in the presence of --text-section-literals.
2016-02-17 Max Filippov <jcmvbkbc@gmail.com>
libgcc/
* config/xtensa/ieee754-df.S (__muldf3_aux, __divdf3_aux): Add
.literal_position before the function.
* config/xtensa/ieee754-sf.S (__mulsf3_aux, __divsf3_aux):
Likewise.
Wilco Dijkstra [Wed, 17 Feb 2016 11:52:35 +0000 (11:52 +0000)]
As part of the final cleanup of aarch64_internal_mov_immediate a return was accidentally removed.
As part of the final cleanup of aarch64_internal_mov_immediate a return was
accidentally removed. This causes the 2-instruction case to fallthrough
into the general case even when it found a match. An example immediate is
0xcccccccccccccccd which was using 2 instructions in GCC5 but now requires 4.
Adding the return fixes the regressions.
Eric Botcazou [Wed, 17 Feb 2016 09:21:58 +0000 (09:21 +0000)]
exp_ch4.adb (Expand_N_Indexed_Component): Active synchronization if the prefix denotes an entity which Has_Atomic_Components.
* exp_ch4.adb (Expand_N_Indexed_Component): Active synchronization if
the prefix denotes an entity which Has_Atomic_Components.
* gcc-interface/trans.c (node_is_atomic): Return true if the prefix
denotes an entity which Has_Atomic_Components.
Tim Shen [Wed, 17 Feb 2016 03:33:02 +0000 (03:33 +0000)]
re PR libstdc++/69794 (std::regex_search match failure with regex object with flags grep|icase)
2016-02-16 Tim Shen <timshen@google.com>
PR libstdc++/69794
* include/bits/regex_scanner.h: Add different special character
sets for grep and egrep regex.
* include/bits/regex_scanner.tcc: Use _M_spec_char more uniformly.
* testsuite/28_regex/regression.cc: Add new testcase.