1. 01 Mar, 2016 26 commits
    • re PR c/69796 (ICE on invalid code in useless_type_conversion_p, at gimple-expr.c:83) · 686e2237
      	PR c/69796
      	PR c/69974
      	* c-parser.c (c_parser_translation_unit): Don't change TREE_TYPE
      	of incomplete decls to error_mark_node.
      
      	* gcc.dg/pr69796.c: New test.
      	* gcc.dg/pr69974.c: New test.
      
      From-SVN: r233861
      Jakub Jelinek committed
    • * config.gcc (cr16-*-elf): Add newlib-stdint.h to tm_file. · db48a9e3
      From-SVN: r233858
      Nick Clifton committed
    • re PR middle-end/69987 (internal compiler error: in verify_loop_structure, at cfgloop.c:1639) · 5e3f1c7c
      	PR tree-optimization/69987
      	* gfortran.dg/pr69987.f90: New test.
      
      	PR tree-optimization/69989
      	* gcc.c-torture/compile/pr69989-2.c: New test.
      
      From-SVN: r233857
      Jeff Law committed
    • re PR middle-end/69983 (FAIL: gcc.dg/graphite/scop-sor.c scan-tree-dump-times… · e546907c
      re PR middle-end/69983 (FAIL: gcc.dg/graphite/scop-sor.c scan-tree-dump-times graphite "number of SCoPs:  1" 1)
      
      2016-03-01  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/69983
      	* tree-chrec.c (eq_evolutions_p): Handle conversions, compare
      	types and fall back to operand_equal_p.
      
      From-SVN: r233856
      Richard Biener committed
    • re PR c++/69795 (g++ ICE on invalid code on x86_64-linux-gnu in "reject_gcc_builtin") · 1be56bc5
      	PR c++/69795
      	* c-common.c (reject_gcc_builtin): Check for FUNCTION_DECL rather than
      	any DECL.
      
      	* g++.dg/parse/invalid1.C: New test.
      
      From-SVN: r233855
      Marek Polacek committed
    • S/390: Revert setmem pattern folding · db340c73
      This does not work without:
      https://gcc.gnu.org/ml/gcc-patches/2016-02/msg01575.html
      
      2016-03-01  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
      
      	Revert
      	2016-03-01  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
      
      	* config/s390/constraints.md ("jm8"): New constraint.
      	* config/s390/predicates.md ("const_int_8bitset_operand"): New predicate.
      	* config/s390/s390.md ("*setmem_long", "*setmem_long_and"): Merge
      	into ...
      	("*setmem_long<setmem_and>"): New pattern.
      	("*setmem_long_31z", "*setmem_long_and_31z"): Merge
      	into ...
      	("*setmem_long_31z<setmem_and>"): New pattern.
      	* config/s390/subst.md ("setmem_31z_subst", "setmem_and_subst"):
      	New substitution rules with the required attributes.
      
      From-SVN: r233854
      Andreas Krebbel committed
    • Revert recent gensupport change. · a7ba15ca
      2016-03-01  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
      
      	Revert
      	2016-03-01  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
      
      	* gensupport.c (process_substs_on_one_elem): Split loop to
      	complete mark_operands_used_in_match_dup on all expressions in the
      	vector first.
      	(adjust_operands_numbers): Inline into process_substs_on_one_elem
      	and remove function.
      
      From-SVN: r233853
      Andreas Krebbel committed
    • re PR middle-end/70022 (ICE: in tree_to_shwi, at tree.c:7328 with out-of-bounds vector index) · 1b19470d
      2016-03-01  Richard Biener  <rguenther@suse.de>
      
      	PR middle-end/70022
      	* fold-const.c (fold_indirect_ref_1): Fix range checking for
      	vector BIT_FIELD_REF extract.
      
      	* gcc.dg/pr70022.c: New testcase.
      
      From-SVN: r233852
      Richard Biener committed
    • re PR target/69994 (test case gfortran.dg/reassoc_6.f fails starting with r233669) · 366298bd
      2016-03-01  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/69994
      	* tree-ssa-reassoc.c (ops_equal_values_p): Handle missing case.
      
      From-SVN: r233851
      Richard Biener committed
    • re PR tree-optimization/69956 (Wrong vector type @ fold-const) · 3ae0661a
      gcc/
      
      	PR tree-optimization/69956
      	* tree-vect-stmts.c (supportable_widening_operation): Support
      	multi-step conversion of boolean vectors.
      	(supportable_narrowing_operation): Likewise.
      
      gcc/testsuite/
      
      	PR tree-optimization/69956
      	* gcc.dg/pr69956.c: New test.
      
      From-SVN: r233850
      Ilya Enkovich committed
    • S/390: Disallow SImode in s390_decompose_address · c64181a8
      After Y is never used anymore with SImode operands we can finally
      disallow SImode (if != Pmode) in s390_decompose_address.  In fact that
      was the whole point of the patch series.
      
      gcc/ChangeLog:
      
      2016-03-01  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
      
      	* config/s390/s390.c (s390_decompose_address): Don't accept SImode
      	anymore.
      
      From-SVN: r233849
      Andreas Krebbel committed
    • S/390: Use define_subst for the setmem patterns. · 708c0910
      While trying to get rid of the Y constraint in the setmem patterns I
      noticed that for these patterns it isn't even a problem since these
      always only use the constraint with a Pmode match_operand.  But while
      being at it I've tried to fold some of the patterns a bit.
      
      gcc/ChangeLog:
      
      2016-03-01  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
      
      	* config/s390/constraints.md ("jm8"): New constraint.
      	* config/s390/predicates.md ("const_int_8bitset_operand"): New predicate.
      	* config/s390/s390.md ("*setmem_long", "*setmem_long_and"): Merge
      	into ...
      	("*setmem_long<setmem_and>"): New pattern.
      	("*setmem_long_31z", "*setmem_long_and_31z"): Merge
      	into ...
      	("*setmem_long_31z<setmem_and>"): New pattern.
      	* config/s390/subst.md ("setmem_31z_subst", "setmem_and_subst"):
      	New substitution rules with the required attributes.
      
      From-SVN: r233848
      Andreas Krebbel committed
    • S/390: Get rid of Y constraint in vector.md. · 674a959c
      This finally removes the Y constraint from the vector patterns while
      folding some of them using a code iterator.
      
      gcc/ChangeLog:
      
      2016-03-01  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
      
      	* config/s390/subst.md (DSI_VI): New mode iterator.
      	("addr_style_op_subst"): Use DSI_VI instead of DSI.
      	* config/s390/vector.md ("vec_set<mode>"): Move expander before
      	the insn definition.
      	("*vec_set<mode>"): Change predicate and add alternative to
      	support only either register or const_int operands as element
      	selector.
      	("*vec_set<mode>_plus"): New pattern to support reg + const_int
      	operands.
      	("vec_extract<mode>"): New expander.
      	("*vec_extract<mode>"): New insn definition supporting reg and
      	const_int element selectors.
      	("*vec_extract<mode>_plus"): New insn definition supporting
      	reg+const_int element selectors.
      	("rotl<mode>3", "ashl<mode>3", "ashr<mode>3"): Merge into the
      	following expander+insn definition.
      	("<vec_shifts_name><mode>3"): New expander.
      	("*<vec_shifts_name><mode>3<addr_style_op>"): New insn definition.
      
      From-SVN: r233847
      Andreas Krebbel committed
    • S/390: Get rid of Y constraint in tabort. · eae48192
      This removes the Y constraint from the tabort pattern definition.  In
      this case it is easier without using substitutions.
      
      gcc/ChangeLog:
      
      2016-03-01  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
      
      	* config/s390/s390.md ("*tabort_1"): Change predicate to
      	nonmemory_operand.  Add a second alternative to cover
      	register as well as const int operands.
      	("*tabort_1_plus"): New pattern definition.
      
      From-SVN: r233846
      Andreas Krebbel committed
    • S/390: Get rid of Y constraint in arithmetic right shift · a9fcf821
       patterns.
      
      The arithmetic shift patterns set also the condition code.  This adds
      more substitution potential.  Depending on whether the actual result
      or the CC output will be used 3 different variants of each of these
      patterns are needed.  This multiplied with the PLUS and the AND
      operands from the earlier substitutions enables a lot of folding.
      
      2016-03-01  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
      
      	* config/s390/s390.md ("*ashrdi3_cc_31")
      	("*ashrdi3_cconly_31""*ashrdi3_cc_31_and")
      	("*ashrdi3_cconly_31_and", "*ashrdi3_31_and", "*ashrdi3_31"):
      	Merge insn definitions into ...
      	("*ashrdi3_31<addr_style_op_cc><masked_op_cc><setcc><cconly>"):
      	New pattern definition.
      	("*ashr<mode>3_cc", "*ashr<mode>3_cconly", "ashr<mode>3", )
      	("*ashr<mode>3_cc_and", "*ashr<mode>3_cconly_and")
      	("*ashr<mode>3_and"): Merge insn definitions into ...
      	("*ashr<mode>3<addr_style_op_cc><masked_op_cc><setcc><cconly>"):
      	New pattern definition.
      	* config/s390/subst.md ("addr_style_op_cc_subst")
      	("masked_op_cc_subst", "setcc_subst", "cconly_subst"): New
      	substitutions patterns plus attributes.
      	Add ashiftrt to SUBST iterator.
      
      From-SVN: r233845
      Andreas Krebbel committed
    • S/390: Get rid of Y constraint in left and logical right · adf22b3f
       shift patterns.
      
      With this patch the substitution patterns added earlier are used for
      the logical right shift and all the left shift patterns.
      
      2016-03-01  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
      
      	* config/s390/s390.md ("<shift><mode>3"): Change predicate of
      	op2 to nonmemory_operand.
      	("*<shift>di3_31", "*<shift>di3_31_and"):
      	Merge into single pattern definition ...
      	("*<shift>di3_31<addr_style_op><masked_op>"): New pattern.
      	("*<shift><mode>3", "*<shift><mode>3_and"): Merge into single
      	pattern definition ...
      	("*<shift><mode>3<addr_style_op><masked_op>"): New pattern.
      	* config/s390/subst.md: Add ashift and lshiftrt to SUBST
      	iterator.
      
      From-SVN: r233844
      Andreas Krebbel committed
    • S/390: Get rid of Y constraint in rotate patterns. · 191eb16d
      This patch introduces substitution patterns to add PLUS const_int, and
      AND operands to patterns and uses this to rewrite the existing rotate
      pattern.
      
      gcc/ChangeLog:
      
      2016-03-01  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
      
      	* config/s390/predicates.md (const_int_6bitset_operand): New
              predicates.
      	* config/s390/s390.md: Include subst.md.
      	("rotl<mode>3"): New expander.
      	("rotl<mode>3", "*rotl<mode>3_and"): Merge insn definitions into
      	...
      	("*rotl<mode>3<addr_style_op><masked_op>"): New insn definition.
      	* config/s390/subst.md: New file.
      
      From-SVN: r233843
      Andreas Krebbel committed
    • S/390: Use enabled attribute overrides to disable · 62d3f261
       alternatives.
      
      So far whenever we wanted to disable an alternative we have used mode
      attributes emitting constraints matching an earlier alternative
      assuming that due to this the later alternative will never be chosen.
      
      With this patch the `enabled' attribute, which so far is only set from
      `cpu_facility', is overridden to 0 to disable certain alternatives.
      This comes handy when defining the substitutions later and while
      adding it anyway I've used it for the existing cases as well.
      
      gcc/ChangeLog:
      
      2016-03-01  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
      
      	* config/s390/s390.md ("op_type", "atype", "length" attributes):
      	Remove RRR type.  It doesn't really exist.
      	("RRer", "f0", "v0", "vf", "vd", "op1", "Rf"): Remove mode
      	attributes.
      	("BFP", "DFP", "nDSF", "nDFDI"): Add mode attributes.
      	("*cmp<mode>_ccs", "floatdi<mode>2", "add<mode>3")
      	("*add<mode>3_cc", "*add<mode>3_cconly", "sub<mode>3")
      	("*sub<mode>3_cc", "*sub<mode>3_cconly", "mul<mode>3")
      	("fma<mode>4", "fms<mode>4", "div<mode>3", "*neg<mode>2")
      	("*abs<mode>2", "*negabs<mode>2", "sqrt<mode>2"): Override
      	`enabled' attribute.
      
      From-SVN: r233842
      Andreas Krebbel committed
    • gensupport: Fix define_subst operand renumbering. · 772040f7
      When processing substitutions the operands are renumbered.  To find a
      free operand number the array used_operands_numbers is used.
      Currently this array is used to assign new numbers before all the
      RTXes in the vector have been processed.  I did run into problems with
      this for insns where a match_dup occurred in a later (use ...) operand
      referring to an earlier operand (e.g. s390.md "setmem_long").
      
      The patch splits the loop doing the processing into two in order to
      have all the operand numbers collected already when assigning new
      numbers.
      
      gcc/ChangeLog:
      
      2016-03-01  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
      
      	* gensupport.c (process_substs_on_one_elem): Split loop to
      	complete mark_operands_used_in_match_dup on all expressions in the
      	vector first.
      	(adjust_operands_numbers): Inline into process_substs_on_one_elem
      	and remove function.
      
      From-SVN: r233841
      Andreas Krebbel committed
    • re PR target/70011 (test case gcc.dg/vect/costmodel/ppc/costmodel-fast-math-vect-pr29925.c fails) · 0f09ab88
      2016-02-29  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
      
      	PR target/70011
      	* gcc.dg/vect/costmodel/ppc/costmodel-fast-math-vect-pr299925.c:
      	XFAIL when hardware supports efficient unaligned storage access.
      
      From-SVN: r233840
      Bill Schmidt committed
    • Fix PR c++/69961 (invalid ctor call with dependent args) · 76d881bf
      gcc/cp/ChangeLog:
      
      	PR c++/68948
      	PR c++/69961
      	* pt.c (tsubst_baselink): Reinstate the check for an invalid
      	constructor call.
      
      gcc/testsuite/ChangeLog:
      
      	PR c++/69961
      	* g++.dg/template/pr69961a.C: New test.
      	* g++.dg/template/pr69961b.C: New test.
      
      From-SVN: r233838
      Patrick Palka committed
    • PR preprocessor/69985: fix ICE with long lines in -Wformat · 7168133a
      gcc/testsuite/ChangeLog:
      	PR preprocessor/69985
      	* gcc.dg/cpp/pr69985.c: New test case.
      
      libcpp/ChangeLog:
      	PR preprocessor/69985
      	(linemap_position_for_loc_and_offset): Rename param from "offset"
      	to "column_offset".  Right-shift the column_offset by m_range_bits
      	of the pertinent ordinary map whenever offsetting a
      	source_location.  For clarity, offset the column by the column
      	offset, rather than the other way around.
      
      From-SVN: r233836
      David Malcolm committed
    • re PR target/69706 (internal compiler error: in extract_constrain_insn, at recog.c:2246) · f3c7a945
      	PR target/69706
      	* config/sparc/sparc.c (NWORDS_UP): Rename to...
      	(CEIL_NWORDS): ...this.  Use CEIL macro.
      	(compute_fp_layout): Adjust to above renaming.
      	(function_arg_union_value): Likewise.
      	(sparc_arg_partial_bytes): Likewise.
      	(sparc_function_arg_advance): Likewise.
      
      From-SVN: r233833
      Eric Botcazou committed
    • Daily bump. · 9cb37fca
      From-SVN: r233832
      GCC Administrator committed
    • re PR tree-optimization/70005 (wrong code at -O2 and -O3 on x86_64-linux-gnu) · e66f219b
      	PR tree-optimization/70005
      	* tree-ssa-uncprop.c (associate_equivalences_with_edges): Handle case
      	where an object with a boolean range is compared against a value
      	outside [0..1].
      
      	PR tree-optimization/70005
      	* gcc.c-torture/execute/pr70005.c New test.
      
      From-SVN: r233829
      Jeff Law committed
  2. 29 Feb, 2016 14 commits
    • re PR tree-optimization/69999 (ICE in verify_loop_structure, at cfgloop.c:1639… · 0c6072a3
      re PR tree-optimization/69999 (ICE in verify_loop_structure, at cfgloop.c:1639 (error: loop with header 3 not in loop tree) at -O3 or -Ofast)
      
      	PR tree-optimization/69999
      	* gimple-ssa-split-paths.c (split_paths): When duplicating a block
      	with an outgoing edge marked with EDGE_IRREDUCIBLE_LOOP, schedule
      	loop cleanups.
      
      	PR tree-optimization/69999
      	* gcc.c-torture/compile/pr69999.c: New test.
      
      From-SVN: r233824
      Jeff Law committed
    • * sv.po: Update. · 8cfb576a
      From-SVN: r233820
      Joseph Myers committed
    • Poison ENABLE_CHECKING macro · 56c091ab
      	* system.h: Poison ENABLE_CHECKING macro.
      
      From-SVN: r233817
      Martin Liska committed
    • re PR target/69994 (test case gfortran.dg/reassoc_6.f fails starting with r233669) · ce40915e
      2016-02-29  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/69994
      	* tree-ssa-reassoc.c (gimple_nop_conversion_p): New function.
      	(get_unary_op): Look through nop conversions.
      	(ops_equal_values_p): New function, look for equality diregarding
      	nop conversions.
      	(eliminate_plus_minus_pair): Use ops_equal_values_p
      	(repropagate_negates): Do not use get_unary_op here.
      
      From-SVN: r233816
      Richard Biener committed
    • Replace ENABLE_CHECKING macro with flag_checking in GNAT · 4232ebbb
      	* gcc-interface/utils.c (set_reverse_storage_order_on_pad_type):
      	Replace ENABLE_CHECKING macro with flag_checking.
      
      From-SVN: r233815
      Martin Liska committed
    • HSA: reduce dump output w/o -details flag · 2998cb96
      	* hsa-gen.c (gen_body_from_gimple): Dump only if TDF_DETAILS
      	is presented in dump flags.
      	* hsa-regalloc.c (linear_scan_regalloc): Likewise.
      	(hsa_regalloc): Likewise.
      
      From-SVN: r233814
      Martin Liska committed
    • re PR tree-optimization/69652 ([ICE] verify_ssa fail w/ -O2 -ffast-math -ftree-vectorize) · fd9fbdb3
      gcc/testsuite/
      
      2016-02-29  Yuri Rumyantsev  <ysrumyan@gmail.com>
      
      	PR tree-optimization/69652
      	* gcc.dg/torture/pr69652.c: Delete test.
      	* gcc.dg/vect/pr69652.c: New test.
      
      From-SVN: r233811
      Yuri Rumyantsev committed
    • re PR c++/69995 ([C++14] Invalid result when evaluating constexpr function) · 7574c916
      	PR c++/69995
      	* constexpr.c (cxx_eval_store_expression): Unshare init.
      
      From-SVN: r233810
      Jason Merrill committed
    • re PR tree-optimization/69980 (Supposedly wrong SLP code emitted) · cbd400b4
      2016-02-19  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/69980
      	* tree-vect-slp.c (vect_attempt_slp_rearrange_stmts): Update
      	permutation of those we need to keep.
      
      	* gfortran.dg/vect/pr69980.f90: New testcase.
      
      From-SVN: r233809
      Richard Biener committed
    • re PR target/69706 (internal compiler error: in extract_constrain_insn, at recog.c:2246) · 84ea0f58
      	PR target/69706
      	* config/sparc/sparc.c (ROUND_ADVANCE): Rename to...
      	(NWORDS_UP): ...this
      	(init_cumulative_args): Minor tweaks.
      	(sparc_promote_function_mode): Likewise.
      	(scan_record_type): Delete.
      	(traverse_record_type): New function template.
      	(classify_data_t): New structure type.
      	(classify_registers): New inline function.
      	(function_arg_slotno): In 64-bit mode, bail out early if FP slots are
      	exhausted.  Instantiate traverse_record_type on classify_registers and
      	deal with the case of a structure passed in slot #15 with no FP field
      	in the first word.
      	(assign_data_t): New structure type.
      	(compute_int_layout): New static function.
      	(compute_fp_layout): Likewise.
      	(count_registers): New inline function.
      	(assign_int_registers): New static function.
      	(assign_fp_registers): Likewise.
      	(assign_registers): New inline function.
      	(function_arg_record_value_1): Delete.
      	(function_arg_record_value_2): Likewise.
      	(function_arg_record_value_3): Likewise.
      	(function_arg_record_value): Adjust to above changes.  Instantiate
      	traverse_record_type on count_registers to first count the number of
      	registers to be used and then on assign_registers to assign them.
      	(function_arg_union_value): Adjust to above renaming.
      	(sparc_function_arg_1); Minor tweaks.  Remove commented out code.
      	(sparc_arg_partial_bytes): Adjust to above renaming.  Deal with the
      	case of a structure passed in slot #15
      	(sparc_function_arg_advance): Likewise.
      	(function_arg_padding): Minor tweak.
      
      From-SVN: r233808
      Eric Botcazou committed
    • decl.c (gnat_to_gnu_entity): Retrofit handling of unconstrained array types as… · 8ea456b9
      decl.c (gnat_to_gnu_entity): Retrofit handling of unconstrained array types as designated types into common...
      
      	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Access_Type>: Retrofit
      	handling of unconstrained array types as designated types into common
      	processing.  Also handle array types as incomplete designated types.
      
      From-SVN: r233807
      Eric Botcazou committed
    • decl.c (gnat_to_gnu_entity): In ASIS mode, fully lay out the minimal record type. · 68ec5613
      	* gcc-interface/decl.c (gnat_to_gnu_entity) <Concurrent types>: In
      	ASIS mode, fully lay out the minimal record type.
      
      From-SVN: r233806
      Eric Botcazou committed
    • trans.c (finalize_nrv_r): Remove obsolete code. · 5d2a63dc
      	* gcc-interface/trans.c (finalize_nrv_r): Remove obsolete code.
      	(build_return_expr): Likewise.
      	(Call_to_gnu): If this is a function call and there is no target,
      	create a temporary for the return value for all aggregate types,
      	but never create it for a return statement.  Push a binding level
      	around the call in more cases.  Remove obsolete code.
      
      From-SVN: r233805
      Eric Botcazou committed
    • ada-tree.h (DECL_RETURN_VALUE_P): New macro. · 93e708f9
      	* gcc-interface/ada-tree.h (DECL_RETURN_VALUE_P): New macro.
      	* gcc-interface/gigi.h (gigi): Remove useless attribute.
      	(gnat_gimplify_expr): Likewise.
      	(gnat_to_gnu_external): Declare.
      	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Constant>: Factor out
      	code dealing with the expression of external constants into...
      	Invoke gnat_to_gnu_external instead.
      	<E_Variable>: Invoke gnat_to_gnu_external to translate renamed objects
      	when not for a definition.  Deal with COMPOUND_EXPR and variables with
      	DECL_RETURN_VALUE_P set for renamings and with the case of a dangling
      	'reference to a function call in a renaming.  Remove obsolete test and
      	adjust associated comment.
      	* gcc-interface/trans.c (Call_to_gnu): Set DECL_RETURN_VALUE_P on the
      	temporaries created to hold the return value, if any.
      	(gnat_to_gnu_external): ...this.  New function.
      	* gcc-interface/utils.c (create_var_decl): Detect a constant created
      	to hold 'reference to function call.
      	* gcc-interface/utils2.c (build_unary_op) <ADDR_EXPR>: Add folding
      	for COMPOUND_EXPR in the DECL_RETURN_VALUE_P case.
      
      From-SVN: r233804
      Eric Botcazou committed