PR debug/60655
* config/arm/arm.c (TARGET_CONST_NOT_OK_FOR_DEBUG_P): Define
(arm_const_not_ok_for_debug_p): Reject MINUS with SYM_REF's
ameliorating the cases where it can be.
Bill Schmidt [Wed, 9 Apr 2014 02:12:11 +0000 (02:12 +0000)]
rs6000.c (rs6000_expand_vector_set): Use vnand instead of vnor to exploit possible fusion opportunity in the future.
2014-04-08 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
* config/rs6000/rs6000.c (rs6000_expand_vector_set): Use vnand
instead of vnor to exploit possible fusion opportunity in the
future.
(altivec_expand_vec_perm_const_le): Likewise.
Paolo Carlini [Wed, 9 Apr 2014 00:09:28 +0000 (00:09 +0000)]
re PR c++/59115 (ICE with invalid template parameter)
/cp
2014-04-08 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/59115
* pt.c (process_template_parm): For an invalid non-type parameter
only set TREE_TYPE to error_mark_node.
(push_inline_template_parms_recursive, comp_template_parms,
redeclare_class_template, coerce_template_template_parm,
coerce_template_template_parms, unify): Use error_operand_p.
/testsuite
2014-04-08 Paolo Carlini <paolo.carlini@oracle.com>
re PR rtl-optimization/60763 (ICE in extract_insn starting with rev 208984)
gcc/
PR target/60763
* config/rs6000/vsx.md (vsx_xscvdpspn_scalar): Change input to DImode.
* config/rs6000/rs6000.md (reload_vsx_from_gprsf): Update accordingly.
Use gen_rtx_REG rather than simplify_gen_subreg for op0_di.
Andreas Krebbel [Tue, 8 Apr 2014 14:18:46 +0000 (14:18 +0000)]
re PR rtl-optimization/60776 (FAIL gcc.dg/builtin-bswap-6.c and gcc.dg/builtin-bswap-7.c)
2014-04-08 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
PR rtl-optimization/60776
* gcc.dg/builtin-bswap-6.c: Use -mbranch-cost=0 for s390.
* gcc.dg/builtin-bswap-7.c: Likewise.
* gcc.dg/builtin-bswap-6a.c: New testcase.
* gcc.dg/builtin-bswap-7a.c: New testcase.
Revert
2014-04-04 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
* gcc.dg/builtin-bswap-6.c: Adjust return value to disable GCC
optimization.
* gcc.dg/builtin-bswap-7.c: Likewise.
invoke (Wnon-virtual-dtor): Update to match implementation.
* doc/invoke (Wnon-virtual-dtor): Update to match implementation.
(Weffc++): Likewise.
cp/
* class.c (check_bases_and_members): Warn about non-virtual dtors
in public bases only. Check warn_ecpp before complaining about
non-polymorphic bases.
Richard Biener [Mon, 7 Apr 2014 14:03:55 +0000 (14:03 +0000)]
re PR tree-optimization/60766 (Wrong optimization with -O2)
2014-04-07 Richard Biener <rguenther@suse.de>
PR tree-optimization/60766
* tree-ssa-loop-ivopts.c (cand_value_at): Compute in an
unsigned type.
(may_eliminate_iv): Convert cand_value_at result to desired
type.
Richard Biener [Mon, 7 Apr 2014 08:38:23 +0000 (08:38 +0000)]
re PR c++/60750 (double free after std::move on string inside throw when compiled with optimization)
2014-04-07 Richard Biener <rguenther@suse.de>
PR middle-end/60750
* tree-ssa-operands.c (maybe_add_call_vops): Also add VDEFs
for noreturn calls.
* tree-cfgcleanup.c (fixup_noreturn_call): Do not remove VDEFs.
* g++.dg/torture/pr60750.C: New testcase.
* gcc.dg/tree-ssa/20040517-1.c: Adjust.
re PR debug/55794 (FAIL: g++.dg/debug/dwarf2/non-virtual-thunk.C -std=gnu++98 and -std=gnu++11)
PR debug/55794
* config/pa/pa.c (pa_output_function_epilogue): Skip address and code
size accounting for thunks.
(pa_asm_output_mi_thunk): Use final_start_function() and
final_end_function() to output function start and end directives.
avr-arch.h (avr_mcu_t): Add dev_attribute field to have device specific ISA/ feature information.
* config/avr/avr-arch.h (avr_mcu_t): Add dev_attribute field to have device
specific ISA/ feature information. Remove short_sp and errata_skip ds.
Add avr_device_specific_features enum to have device specific info.
* config/avr/avr-c.c (avr_cpu_cpp_builtins): use dev_attribute to check
errata_skip. Add __AVR_ISA_RMW__ builtin macro if RMW ISA available.
* config/avr/avr-devices.c (avr_mcu_types): Update AVR_MCU macro for
updated device specific info.
* config/avr/avr-mcus.def: Merge device specific details to
dev_attribute field.
* config/avr/avr.c (avr_2word_insn_p): use dev_attribute field to check
errata_skip.
* config/avr/avr.h (AVR_HAVE_8BIT_SP): same for short sp info.
* config/avr/driver-avr.c (avr_device_to_as): Pass -mrmw option to
assembler if RMW isa supported by current device.
* config/avr/genmultilib.awk: Update as device info structure changed.
* doc/invoke.texi: Add info for __AVR_ISA_RMW__ builtin macro
re PR tree-optimization/60656 (x86 vectorization produces wrong code)
2014-04-04 Cong Hou <congh@google.com>
PR tree-optimization/60656
* tree-vect-stmts.c (supportable_widening_operation):
Fix a bug that elements in a vector with vect_used_by_reduction
property are incorrectly reordered when the operation on it is not
consistant with the one in reduction operation.
2014-04-04 Cong Hou <congh@google.com>
PR tree-optimization/60656
* gcc.dg/vect/pr60656.c: New test.
re PR rtl-optimization/60155 (ICE: in get_pressure_class_and_nregs at gcse.c:3438)
PR rtl-optimization/60155
* gcse.c (record_set_data): New function.
(single_set_gcse): New function.
(gcse_emit_move_after): Use single_set_gcse instead of single_set.
(hoist_code): Likewise.
(get_pressure_class_and_nregs): Likewise.
decl.c (duplicate_decls): Check for the return of warning_at before emitting a note.
2014-04-04 Fabien Chêne <fabien@gcc.gnu.org>
* decl.c (duplicate_decls): Check for the return of warning_at
before emitting a note.
(warn_misplaced_attr_for_class_type): Likewise.
(check_tag_decl): Likewise.
Patrick Palka [Fri, 4 Apr 2014 19:36:00 +0000 (02:36 +0700)]
re PR c++/44613 (Declaring an array with non-constant length inside a switch corrupts stack pointer.)
PR c++/44613
* semantics.c (add_stmt): Set STATEMENT_LIST_HAS_LABEL.
* decl.c (cp_finish_decl): Create a new BIND_EXPR before
instantiating a variable-sized type.
Jan Hubicka [Fri, 4 Apr 2014 18:02:31 +0000 (20:02 +0200)]
re PR lto/59626 (/usr/include/bits/unistd.h:173:1: error: inlining failed in call to always_inline 'readlinkat': recursive inlining)
PR ipa/59626
* lto-cgraph.c (input_overwrite_node): Check that partitioning
flags are set only during streaming.
* ipa.c (process_references, walk_polymorphic_call_targets,
symtab_remove_unreachable_nodes): Drop bodies of always inline
after early inlining.
(symtab_remove_unreachable_nodes): Remove always_inline attribute.
* gcc.dg/lto/pr59626_0.c: New testcase.
* gcc.dg/lto/pr59626_1.c: New testcase.
This is a partial fix for PR60655 where dwarf2out.c rejects NOT of a
value in const_ok_for_output_1. There is still a problem with the
testcase on armhf where we get operations of the form, const (minus
(const_int) (symref)) without the -fdata-sections option which is just
weird. I'm not yet sure where this is produced from and will not have
the time to dig further today.
As Jakub said on IRC, const_ok_for_output_1 is called only with
partial rtx's and therefore disabling minus (const_int) (symref) might
not be the best thing to do especially if this were part of plus
(symref) (minus (const int) (symref)) and both symrefs were in the
same section.
Bootstrapped and regtested on armhf
Bootstrap and regression test running on x86_64.
Ok to commit ?
regards
Ramana
gcc/
<DATE> Jakub Jelinek <jakub@redhat.com>
Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
* dwarf2out.c (const_ok_for_output_1): Reject expressions
containing a NOT.
Martin Jambor [Fri, 4 Apr 2014 14:11:06 +0000 (16:11 +0200)]
re PR ipa/60640 (ICE edge points to wrong declaration / verify_cgraph_node failed)
2014-04-04 Martin Jambor <mjambor@suse.cz>
PR ipa/60640
* cgraph.h (cgraph_clone_node): New parameter added to declaration.
Adjust all callers.
* cgraph.c (clone_of_p): Also return true if thunks match.
(verify_edge_corresponds_to_fndecl): Removed extraneous call to
cgraph_function_or_thunk_node and an obsolete comment.
* cgraphclones.c (build_function_type_skip_args): Moved upwards in the
file.
(build_function_decl_skip_args): Likewise.
(set_new_clone_decl_and_node_flags): New function.
(duplicate_thunk_for_node): Likewise.
(redirect_edge_duplicating_thunks): Likewise.
(cgraph_clone_node): New parameter args_to_skip, pass it to
redirect_edge_duplicating_thunks which is called instead of
cgraph_redirect_edge_callee.
(cgraph_create_virtual_clone): Pass args_to_skip to cgraph_clone_node,
moved setting of a lot of flags to set_new_clone_decl_and_node_flags.
PR fortran/60191
* fortran/trans-types.c (gfc_get_function_type): In case of recursion
build a variadic function type with empty argument list instead of a
stdarg-like function type with incomplete argument list.
re PR tree-optimization/60505 (Warning caused by GCC vectorizer.)
2014-04-03 Cong Hou <congh@google.com>
PR tree-optimization/60505
* tree-vectorizer.h (struct _stmt_vec_info): Add th field as the
threshold of number of iterations below which no vectorization will be
done.
* tree-vect-loop.c (new_loop_vec_info):
Initialize LOOP_VINFO_COST_MODEL_THRESHOLD.
* tree-vect-loop.c (vect_analyze_loop_operations):
Set LOOP_VINFO_COST_MODEL_THRESHOLD.
* tree-vect-loop.c (vect_transform_loop):
Use LOOP_VINFO_COST_MODEL_THRESHOLD.
* tree-vect-loop.c (vect_analyze_loop_2): Check the maximum number
of iterations of the loop and see if we should build the epilogue.
2014-04-03 Cong Hou <congh@google.com>
PR tree-optimization/60505
* gcc.dg/vect/pr60505.c: New test.
c-family/
* c.opt (Wnon-virtual-dtor): Auto set when Weffc++.
cp/
* class.c (accessible_nvdtor_p): New.
(check_bases): Don't check base destructor here ...
(check_bases_and_members): ... check them here. Trigger on
Wnon-virtual-dtor flag.
(finish_struct_1): Use accessible_nvdtor_p.
Martin Jambor [Thu, 3 Apr 2014 09:35:41 +0000 (11:35 +0200)]
ipa-cp.c (ipcp_verify_propagated_values): Also dump symtab and mention gcc_unreachable before failing.
2014-04-03 Martin Jambor <mjambor@suse.cz>
* ipa-cp.c (ipcp_verify_propagated_values): Also dump symtab and
mention gcc_unreachable before failing.
* ipa.c (symtab_remove_unreachable_nodes): Also print order of
removed symbols.
Jan Hubicka [Thu, 3 Apr 2014 03:55:59 +0000 (05:55 +0200)]
re PR ipa/60659 (ICE in get_polymorphic_call_info, at ipa-devirt.c:1292)
PR ipa/60659
* ipa-devirt.c (get_polymorphic_call_info): Do not ICE on type inconsistent
code and instead mark the context inconsistent.
(possible_polymorphic_call_targets): For inconsistent contexts
return empty complete list.
* testsuite/g++.dg/torture/pr60659.C: New testcase.
Anthony Green [Thu, 3 Apr 2014 02:11:34 +0000 (02:11 +0000)]
This patch does three related things for the moxie port...
1. Changes char to be unsigned by default
2. Changes WCHAR_TYPE from long int to unsigned int
3. Zero- and sign-extends values properly, sometimes using the new
sign-extension instructions.
Bill Schmidt [Wed, 2 Apr 2014 22:07:30 +0000 (22:07 +0000)]
re PR tree-optimization/60733 (ICE due to SLSR on valid code at -O3 on x86_64-linux-gnu)
[gcc]
2014-04-02 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
PR tree-optimization/60733
* gimple-ssa-strength-reduction.c (ncd_with_phi): Change required
insertion point for PHI candidates to be the end of the feeding
block for the PHI argument.
[gcc/testsuite]
2014-04-02 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
PR tree-optimization/60733
* gcc.dg/torture/pr60733.c: New test.
Joseph Myers [Wed, 2 Apr 2014 20:10:45 +0000 (21:10 +0100)]
funcspec-2.c, [...]: Skip for -march= options different from those in dg-options.
* gcc.target/i386/funcspec-2.c, gcc.target/i386/funcspec-3.c,
gcc.target/i386/funcspec-9.c, gcc.target/i386/isa-1.c,
gcc.target/i386/memcpy-strategy-1.c,
gcc.target/i386/memcpy-strategy-2.c,
gcc.target/i386/memcpy-vector_loop-1.c,
gcc.target/i386/memcpy-vector_loop-2.c,
gcc.target/i386/memset-vector_loop-1.c,
gcc.target/i386/memset-vector_loop-2.c,
gcc.target/i386/sse2-init-v2di-2.c, gcc.target/i386/ssetype-1.c,
gcc.target/i386/ssetype-2.c, gcc.target/i386/ssetype-5.c: Skip for
-march= options different from those in dg-options.
re PR target/60735 (GCC targeting E500 with SPE has errors with the _Decimal64 type)
2014-04-02 Michael Meissner <meissner@linux.vnet.ibm.com>
PR target/60735
* config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): If we have
software floating point or no floating point registers, do not
allow any type in the FPRs. Eliminate a test for SPE SIMD types
in GPRs that occurs after we tested for GPRs that would never be
true.
* config/rs6000/rs6000.md (mov<mode>_softfloat32, FMOVE64):
Rewrite tests to use TARGET_DOUBLE_FLOAT and TARGET_E500_DOUBLE,
since the FMOVE64 type is DFmode/DDmode. If TARGET_E500_DOUBLE,
specifically allow DDmode, since that does not use the SPE SIMD
instructions.
PR target/54083
* gcc.dg/attr-weakref-1.c: Allow the test on darwin
with the additional options -Wl,-undefined,dynamic_lookup
and -Wl,-flat_namespace.
* gcc.dg/torture/pr53922.c: Additional option
-Wl,-flat_namespace for darwin[89].
* gcc.dg/torture/pr60092.c: Additional options
-Wl,-undefined,dynamic_lookup and -Wl,-flat_namespace
for darwin[89].