* common/config/epiphany/epiphany-common.c
(epiphany_option_optimization_table): Enable section anchors by
default at -O1 or higher.
* config/epiphany/epiphany.c (TARGET_MAX_ANCHOR_OFFSET): Define.
(TARGET_MIN_ANCHOR_OFFSET): Likewise.
(epiphany_rtx_costs) <SET>: For binary operators, the set as such
carries no extra cost.
(epiphany_legitimate_address_p): For BLKmode, apply SImode check.
* config/epiphany/epiphany.h (ASM_OUTPUT_DEF): Define.
* config/epiphany/predicates.md (memclob_operand): New predicate.
* config/epiphany/epiphany.md (stack_adjust_add, stack_adjust_str):
Use memclob_operand predicate and X constraint for operand 3.
gcc/testsuite:
* gcc.target/epiphany/t1068-2.c: New file.
epiphany.c (epiphany_rtx_cost): Compare with CC_N_NE / CC_C_LTU / CC_C_GTU carries no extra cost for its operands.
gcc:
* config/epiphany/epiphany.c (epiphany_rtx_cost): Compare
with CC_N_NE / CC_C_LTU / CC_C_GTU carries no extra cost for
its operands.
gcc/testsuite:
* gcc.target/epiphany/btst-1.c: New test.
Jason Merrill [Fri, 11 Apr 2014 18:25:07 +0000 (14:25 -0400)]
parser.h (struct cp_token): Rename ambiguous_p to error_reported.
* parser.h (struct cp_token): Rename ambiguous_p to error_reported.
* parser.c: Adjust.
(cp_lexer_get_preprocessor_token): Always clear it.
(cp_parser_lambda_expression): Use it to avoid duplicate diagnostics.
re PR rtl-optimization/60651 (Mode switching instructions are sometimes emitted in the wrong order)
gcc:
PR rtl-optimization/60651
* mode-switching.c (optimize_mode_switching): Make sure to emit
sets of a lower numbered entity before sets of a higher numbered
entity to a mode of the same or lower priority.
When creating a seginfo for a basic block that starts with a code
label, move the insertion point past the code label.
(new_seginfo): Document and enforce requirement that
NOTE_INSN_BASIC_BLOCK only appears for empty blocks.
* doc/tm.texi.in: Document ordering constraint for emitted mode sets.
* doc/tm.texi: Regenerate.
gcc/testsuite:
PR rtl-optimization/60651
* gcc.target/epiphany/mode-switch.c: New test.
Steve Ellcey [Fri, 11 Apr 2014 11:52:14 +0000 (11:52 +0000)]
re PR middle-end/60556 (tip of tree crash with mips compiler)
PR middle-end/60556
* expr.c (convert_move): Use emit_store_flag_force instead of
emit_store_flag. Pass lowpart_mode instead of VOIDmode as 5th
argument to it.
* gcc.c-torture/compile/pr60556.c: New test.
Co-Authored-By: Jakub Jelinek <jakub@redhat.com>
From-SVN: r209300
Andreas Krebbel [Fri, 11 Apr 2014 10:36:58 +0000 (10:36 +0000)]
htm-nofloat-1.c: Rename to ...
2014-04-11 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
* gcc.target/s390/htm-nofloat-1.c: Rename to ...
* gcc.target/s390/htm-nofloat-compile-1.c: ... this one.
* gcc.target/s390/htm-nofloat-2.c: Add check for htm target and
rename to ...
* gcc.target/s390/htm-nofloat-1.c: ... this one.
* gcc.target/s390/s390.exp: Make sure the assembler supports htm
instructions as well.
moved this ChangeLog entry to fortran/ChangeLog
2014-04-04 Bernd Edlinger <bernd.edlinger@hotmail.de>
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.
Richard Biener [Thu, 10 Apr 2014 16:20:07 +0000 (16:20 +0000)]
re PR ipa/60761 (Improve dump_decl for clones)
PR ipa/60761
* error.c (dump_decl) <case FUNCTION_DECL>: If
DECL_LANG_SPECIFIC is NULL, but DECL_ABSTRACT_ORIGIN is not,
recurse on DECL_ABSTRACT_ORIGIN instead of printing
<built-in>.
Co-Authored-By: Jakub Jelinek <jakub@redhat.com>
From-SVN: r209278
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.