1. 03 May, 2016 12 commits
    • re PR tree-optimization/70916 (gcc ICE at -O3 on valid code on x86_64-linux-gnu… · e7437b59
      re PR tree-optimization/70916 (gcc ICE at -O3 on valid code on x86_64-linux-gnu in "tree_operand_check")
      
      	PR tree-optimization/70916
      	* tree-if-conv.c (constant_or_ssa_name): Removed.
      	(fold_build_cond_expr): Use is_gimple_val instead of
      	constant_or_ssa_name.
      
      From-SVN: r235815
      Jakub Jelinek committed
    • re PR tree-optimization/70916 (gcc ICE at -O3 on valid code on x86_64-linux-gnu… · dea60b59
      re PR tree-optimization/70916 (gcc ICE at -O3 on valid code on x86_64-linux-gnu in "tree_operand_check")
      
      	PR tree-optimization/70916
      	* tree-vect-patterns.c (vect_recog_mask_conversion_pattern): Give up
      	if COND_EXPR rhs1 is neither SSA_NAME nor COMPARISON_CLASS_P.
      
      	* gcc.c-torture/compile/pr70916.c: New test.
      
      From-SVN: r235814
      Jakub Jelinek committed
    • re PR target/49244 (__sync or __atomic builtins will not emit 'lock bts/btr/btc') · adedd5c1
      	PR target/49244
      	* tree-ssa-ccp.c: Include stor-layout.h and optabs-query.h.
      	(optimize_atomic_bit_test_and): New function.
      	(pass_fold_builtins::execute): Use it.
      	* optabs.def (atomic_bit_test_and_set_optab,
      	atomic_bit_test_and_complement_optab,
      	atomic_bit_test_and_reset_optab): New optabs.
      	* internal-fn.def (ATOMIC_BIT_TEST_AND_SET,
      	ATOMIC_BIT_TEST_AND_COMPLEMENT, ATOMIC_BIT_TEST_AND_RESET): New ifns.
      	* builtins.h (expand_ifn_atomic_bit_test_and): New prototype.
      	* builtins.c (expand_ifn_atomic_bit_test_and): New function.
      	* internal-fn.c (expand_ATOMIC_BIT_TEST_AND_SET,
      	expand_ATOMIC_BIT_TEST_AND_COMPLEMENT,
      	expand_ATOMIC_BIT_TEST_AND_RESET): New functions.
      	* doc/md.texi (atomic_bit_test_and_set@var{mode},
      	atomic_bit_test_and_complement@var{mode},
      	atomic_bit_test_and_reset@var{mode}): Document.
      	* config/i386/sync.md (atomic_bit_test_and_set<mode>,
      	atomic_bit_test_and_complement<mode>,
      	atomic_bit_test_and_reset<mode>): New expanders.
      	(atomic_bit_test_and_set<mode>_1,
      	atomic_bit_test_and_complement<mode>_1,
      	atomic_bit_test_and_reset<mode>_1): New insns.
      
      	* gcc.target/i386/pr49244-1.c: New test.
      	* gcc.target/i386/pr49244-2.c: New test.
      
      From-SVN: r235813
      Jakub Jelinek committed
    • PR 70687: Use wide_int in combine.c:change_zero_ext · 50891606
      PR 70687 reports a case where combine.c mishandles integer modes
      wider than unsigned HOST_WIDE_INT.  I don't have a testcase since
      the PR is just pointing out the hole.
      
      Also, I think a ZERO_EXTEND of a vector mode could in principle satisfy
      the subreg condition but wouldn't be equivalent to an AND.  E.g.:
      
            (zero_extend:V4DI (subreg:V4SI (reg:V4DI R) 0))
      
      Tested on x86_64-linux-gnu.
      
      gcc/
      	PR rtl-optimization/70687
      	* combine.c (change_zero_ext): Check for scalar modes.  Use wide_int
      	instead of unsigned HOST_WIDE_INT.
      
      From-SVN: r235811
      Richard Sandiford committed
    • Fix PR44281, bad RA with global regs. · f80041ef
      	PR rtl-optimization/44281
      	* hard-reg-set.h (struct target_hard_regs): New field
      	x_fixed_nonglobal_reg_set.
      	(fixed_nonglobal_reg_set): New macro.
      	* reginfo.c (init_reg_sets_1): Initialize it.
      	* ira.c (setup_alloc_regs): Use fixed_nonglobal_reg_set instead
      	of fixed_reg_set.
      	* df-scan.c (df_insn_refs_collect): Asms may reference global regs.
      
      testsuite/
      	PR rtl-optimization/44281
      	* gcc.target/i386/pr44281.c: New test.
      
      From-SVN: r235809
      Bernd Schmidt committed
    • re PR tree-optimization/56541 (vectorizaton fails in conditional assignment of a constant) · 1cfcd39e
      	PR tree-optimization/56541
      	* doc/invoke.texi (@item max-tree-if-conversion-phi-args): New item.
      	* params.def (PARAM_MAX_TREE_IF_CONVERSION_PHI_ARGS): new param.
      	* tree-if-conv.c (MAX_PHI_ARG_NUM): new macro.
      	(any_complicated_phi): new static variable.
      	(aggressive_if_conv): delete.
      	(if_convertible_phi_p): support phis with more than two arguments.
      	(if_convertible_bb_p): remvoe check on aggressive_if_conv and
      	critical pred edges.
      	(ifcvt_split_critical_edges): support phis with more than two
      	arguments by checking new parameter.  only split critical edges
      	if needed.
      	(tree_if_conversion): handle simd pragma marked loop using new
      	local variable aggressive_if_conv.  check any_complicated_phi.
      
      	gcc/testsuite
      	PR tree-optimization/56541
      	* gcc.dg/tree-ssa/ifc-pr56541.c: new test.
      	* gcc.dg/vect/pr56541.c: new test.
      
      From-SVN: r235808
      Bin Cheng committed
    • tree-ssa-loop-ivopts.c (get_computation_cost_at): Check depends_on before using it. · 15526589
      	* tree-ssa-loop-ivopts.c (get_computation_cost_at): Check depends_on
      	before using it.
      
      From-SVN: r235807
      Bin Cheng committed
    • tree-ssa-loop-ivopts.c (get_computation_cost_at): Don't clobber cbase. · e0db1402
      	* tree-ssa-loop-ivopts.c (get_computation_cost_at): Don't clobber
      	cbase.
      
      From-SVN: r235805
      Bin Cheng committed
    • Make-lang.in (cc1-checksum.c): For stage-final re-use the checksum from the previous stage. · fb2647aa
      2016-05-03  Richard Biener  <rguenther@suse.de>
      
      	c/
      	* Make-lang.in (cc1-checksum.c): For stage-final re-use
      	the checksum from the previous stage.
      
      	cp/
      	* Make-lang.in (cc1plus-checksum.c): For stage-final re-use
      	the checksum from the previous stage.
      
      From-SVN: r235804
      Richard Biener committed
    • sh.md (udivsi3, [...]): Simplify. · d0ce2326
      gcc/
      	* config/sh/sh.md (udivsi3, divsi3, mulsi3): Simplify.
      	(mulhisi3, umulhisi3, (smulsi3_highpart, umulsi3_highpart): Convert to
      	define_insn_and_split.
      	(mulsi3_i): New define_insn_and_split.
      	(mulsi3_call): Convert to define_insn.
      	(mulsidi3, mulsidi3_compact, umulsidi3, umulsidi3_compact):
      	Remove constraints.
      
      From-SVN: r235803
      Oleg Endo committed
    • * c-common.h (enum c_omp_region_type): Remove stray comma. · 1d793c34
      From-SVN: r235802
      Marek Polacek committed
    • Daily bump. · 1e2867df
      From-SVN: r235800
      GCC Administrator committed
  2. 02 May, 2016 28 commits
    • machmode.h (mode_complex): Add support to give the complex mode for a given mode. · 4304ccfd
      [gcc]
      2016-05-02  Michael Meissner  <meissner@linux.vnet.ibm.com>
      
      	* machmode.h (mode_complex): Add support to give the complex mode
      	for a given mode.
      	(GET_MODE_COMPLEX_MODE): Likewise.
      	* stor-layout.c (layout_type): For COMPLEX_TYPE, use the mode
      	stored by build_complex_type and gfc_build_complex_type instead of
      	trying to figure out the appropriate mode based on the size. Raise
      	an assertion error, if the type was not set.
      	* genmodes.c (struct mode_data): Add field for the complex type of
      	the given type.
      	(blank_mode): Likewise.
      	(make_complex_modes): Remember the complex mode created in the
      	base type.
      	(emit_mode_complex): Write out the mode_complex array to map a
      	type mode to the complex version.
      	(emit_insn_modes_c): Likewise.
      	* tree.c (build_complex_type): Set the complex type to use before
      	calling layout_type.
      	* config/rs6000/rs6000.c (rs6000_hard_regno_nregs_internal): Add
      	support for __float128 complex datatypes.
      	(rs6000_hard_regno_mode_ok): Likewise.
      	(rs6000_setup_reg_addr_masks): Likewise.
      	(rs6000_complex_function_value): Likewise.
      	* config/rs6000/rs6000.h (FLOAT128_IEEE_P): Likewise.
      	__float128 and __ibm128 complex.
      	(FLOAT128_IBM_P): Likewise.
      	(ALTIVEC_ARG_MAX_RETURN): Likewise.
      	* doc/extend.texi (Additional Floating Types): Document that
      	-mfloat128 must be used to enable __float128.  Document complex
      	__float128 and __ibm128 support.
      
      [gcc/fortran]
      2016-05-02  Michael Meissner  <meissner@linux.vnet.ibm.com>
      
      	* trans-types.c (gfc_build_complex_type):
      
      [gcc/testsuite]
      2016-05-02  Michael Meissner  <meissner@linux.vnet.ibm.com>
      
      	* gcc.target/powerpc/float128-complex-1.c: New tests for complex
      	__float128.
      	* gcc.target/powerpc/float128-complex-2.c: Likewise.
      
      From-SVN: r235794
      Michael Meissner committed
    • re PR target/49244 (__sync or __atomic builtins will not emit 'lock bts/btr/btc') · fd39794a
      	PR target/49244
      	* gimple.c (gimple_builtin_call_types_compatible_p): Allow
      	char/short arguments promoted to int because of promote_prototypes.
      
      From-SVN: r235792
      Jakub Jelinek committed
    • backport: Since x86 psABIs require the function incoming stack must align at 16 bytes... · 50d94c29
      Backport r265322 from llvm upstream
      
      Since x86 psABIs require the function incoming stack must align at 16
      bytes, child process stack passed to clone should be aligned at 16
      bytes.
      
      	PR testsuite/70520
      	* c-c++-common/asan/clone-test-1.c (main): Align child process
      	stack to 16 bytes.
      
      From-SVN: r235790
      H.J. Lu committed
    • PR c++/62314: C++: add fixit hint to misspelled member names · bc1aee87
      When we emit a hint about a misspelled member name, it will slightly
      aid readability if we use a fixit-hint to show the proposed
      name in context within the source code (and in the future this
      might support some kind of auto-apply in an IDE).
      
      This patch adds such a hint to the C++ frontend, taking us from:
      
      test.cc:10:15: error: 'struct foo' has no member named 'colour'; did you mean 'color'?
         return ptr->colour;
                     ^~~~~~
      
      to:
      
      test.cc:10:15: error: 'struct foo' has no member named 'colour'; did you mean 'color'?
         return ptr->colour;
                     ^~~~~~
                     color
      
      gcc/cp/ChangeLog:
      	PR c++/62314
      	* typeck.c (finish_class_member_access_expr): When
      	giving a hint about a possibly-misspelled member name,
      	add a fix-it replacement hint.
      
      gcc/testsuite/ChangeLog:
      	PR c++/62314
      	* g++.dg/spellcheck-fields-2.C: New test case.
      
      From-SVN: r235785
      David Malcolm committed
    • * ChangeLog: Add missing entry. · 7caed520
      From-SVN: r235783
      Uros Bizjak committed
    • predicates.md (register_ssemem_operand): New predicate. · c8802daf
      	* config/i386/predicates.md (register_ssemem_operand): New predicate.
      	* config/i386/i386.md (*cmpi<FPCMP:unord><MODEF:mode>): Merge from
      	*cmpi<FPCMP:unord><MODEF:mode>_mixed and
      	*cmpi<FPCMP:unord><X87MODEF:mode>_i387.  Disable unsupported
      	alternatives using "enabled" attribute.  Use register_ssemem_operand
      	as operand 1 predicate.
      	(*cmpi<unord>xf_i387): Split XFmode pattern from
      	*cmpi<FPCMP:unord><X87MODEF:mode>_i387.
      	(*absneg<mode>2): Merge from *absneg<mode>2_mixed and
      	*absneg<mode>2_i387.  Disable unsupported alternatives using
      	"enabled" attribute.
      
      From-SVN: r235782
      Uros Bizjak committed
    • c-common.h (enum c_omp_region_type): Define. · 77886428
      	gcc/c-family/
      	* c-common.h (enum c_omp_region_type): Define.
      
      	gcc/c/
      	* c-parser.c (c_parser_oacc_all_clauses): Update call to
      	c_finish_omp_clauses.
      	(c_parser_omp_all_clauses): Likewise.
      	(c_parser_oacc_cache): Likewise.
      	(c_parser_oacc_loop): Likewise.
      	(omp_split_clauses): Likewise.
      	(c_parser_omp_declare_target): Likewise.
      	(c_parser_cilk_all_clauses): Likewise.
      	(c_parser_cilk_for): Likewise.
      	* c-typeck.c (c_finish_omp_clauses): Replace bool arguments
      	is_omp, declare_simd, and is_cilk with enum c_omp_region_type ort.
      
      	gcc/cp/
      	* cp-tree.h (finish_omp_clauses): Update prototype.
      	* parser.c (cp_parser_oacc_all_clauses): Update call to
      	finish_omp_clauses.
      	(cp_parser_omp_all_clauses): Likewise.
      	(cp_parser_omp_for_loop): Likewise.
      	(cp_omp_split_clauses): Likewise.
      	(cp_parser_oacc_cache): Likewise.
      	(cp_parser_oacc_loop): Likewise.
      	(cp_parser_omp_declare_target):
      	(cp_parser_cilk_simd_all_clauses): Likewise.
      	(cp_parser_cilk_for): Likewise.
      	* pt.c (tsubst_omp_clauses): Replace allow_fields and declare_simd
      	arguments with enum c_omp_region_type ort.
      	(tsubst_omp_clauses): Update calls to finish_omp_clauses.
      	(tsubst_omp_attribute): Update calls to tsubst_omp_clauses.
      	(tsubst_omp_for_iterator): Update calls to finish_omp_clauses.
      	(tsubst_expr): Update calls to tsubst_omp_clauses.
      	* semantics.c (finish_omp_clauses): Replace bool arguments
      	allow_fields, declare_simd, and is_cilk with bitmask ort.
      	(finish_omp_for): Update call to finish_omp_clauses.
      
      From-SVN: r235780
      Cesar Philippidis committed
    • PR c++/62314: add fixit hint for missing "template <> " in explicit specialization · 474e0129
      gcc/cp/ChangeLog:
      	PR c++/62314
      	* parser.c (cp_parser_class_head): Capture the start location;
      	use it to emit a fix-it insertion hint when complaining
      	about missing "template <> " in explicit specializations.
      
      gcc/testsuite/ChangeLog:
      	PR c++/62314
      	* g++.dg/pr62314.C: New test case.
      
      From-SVN: r235777
      David Malcolm committed
    • omp-low.c (lower_oacc_head_tail): Assert there is at least one marker. · 4877b5a4
      	* omp-low.c (lower_oacc_head_tail): Assert there is at least one
      	marker.
      	(oacc_loop_process): Check mask for loop termination.
      
      From-SVN: r235775
      Nathan Sidwell committed
    • Don't install libvtv without --enable-vtable-verify · 4344d7fa
      	* Makefile.am (toolexeclib_LTLIBRARIES): Only set if
      	ENABLE_VTABLE_VERIFY.
      	Simplify.
      	* Makefile.in: Regenerate.
      
      From-SVN: r235772
      Rainer Orth committed
    • ipa-inline-analsysis.c (evaluate_conditions_for_known_args): Revert accidental change. · 201da53f
      
      	* ipa-inline-analsysis.c (evaluate_conditions_for_known_args): Revert
      	accidental change.
      
      From-SVN: r235771
      Jan Hubicka committed
    • * cif-code.def (CIF_THUNK): Add. · fd5fac4c
      From-SVN: r235770
      Jan Hubicka committed
    • * sv.po, zh_CN.po: Update. · ed3c0c8e
      From-SVN: r235768
      Joseph Myers committed
    • Demangler integer overflow fixes from Marcel Böhme. · bfbc839a
      	PR c++/70498
      	* cp-demangle.c: Parse numbers as integer instead of long to avoid
      	overflow after sanity checks. Include <limits.h> if available.
      	(INT_MAX): Define if necessary.
      	(d_make_template_param): Takes integer argument instead of long.
      	(d_make_function_param): Likewise.
      	(d_append_num): Likewise.
      	(d_identifier): Likewise.
      	(d_number): Parse as and return integer.
      	(d_compact_number): Handle overflow.
      	(d_source_name): Change variable type to integer for parsed number.
      	(d_java_resource): Likewise.
      	(d_special_name): Likewise.
      	(d_discriminator): Likewise.
      	(d_unnamed_type): Likewise.
      	* testsuite/demangle-expected: Add regression test cases.
      
      From-SVN: r235767
      Marcel Böhme committed
    • ipa-inline-analysis.c (reset_inline_summary): Clear fp_expressions · 818b88a7
      
      	* ipa-inline-analysis.c (reset_inline_summary): Clear fp_expressions
      	(dump_inline_summary): Dump it.
      	(fp_expression_p): New predicate.
      	(estimate_function_body_sizes): Use it.
      	(inline_merge_summary): Merge fp_expressions.
      	(inline_read_section): Read fp_expressions.
      	(inline_write_summary): Write fp_expressions.
      	* ipa-inline.c (can_inline_edge_p): Permit inlining across fp math
      	codegen boundary if either caller or callee is !fp_expressions.
      	* ipa-inline.h (inline_summary): Add fp_expressions.
      	* ipa-inline-transform.c (inline_call): When inlining !fp_expressions
      	to fp_expressions be sure the fp generation flags are updated.
      
      	* gcc.dg/ipa/inline-8.c: New testcase.
      
      From-SVN: r235766
      Jan Hubicka committed
    • re PR rtl-optimization/70467 (Useless "and [esp],-1" emitted on AND with uint64_t variable) · dd77684f
      	PR rtl-optimization/70467
      	* cse.c (cse_insn): Handle no-op MEM moves after folding.
      
      	* gcc.target/i386/pr70467-1.c: New test.
      
      From-SVN: r235765
      Jakub Jelinek committed
    • re PR rtl-optimization/70467 (Useless "and [esp],-1" emitted on AND with uint64_t variable) · d40790c8
      	PR rtl-optimization/70467
      	* ipa-pure-const.c (check_call): Handle internal calls even in
      	ipa mode like in local mode.
      
      From-SVN: r235764
      Jakub Jelinek committed
    • configure.ac (mpfr): Remove pre-3.1.0 mpfr compatibility code. · 00f35794
      2016-05-02  Bernd Edlinger  <bernd.edlinger@hotmail.de>
      
              * configure.ac (mpfr): Remove pre-3.1.0 mpfr compatibility code.
              * configure: Regenerated.
              * Makefile.def (gmp): Explicitly disable assembler.
              (mpfr): Adjust lib_path.
              (mpc): Likewise.
              * Makefile.in: Regenerated.
      
      gcc/
      2016-05-02  Bernd Edlinger  <bernd.edlinger@hotmail.de>
      
              * doc/install.texi: Document supported in-tree gmp/mpfr/mpc versions.
      
      contrib/
      2016-05-02  Bernd Edlinger  <bernd.edlinger@hotmail.de>
      
              * download_prerequisites: Adjust gmp/mpfr/mpc versions.
      
      From-SVN: r235763
      Bernd Edlinger committed
    • spec-options.c: Run the test on all targets. · 72407e00
      2016-05-02  Bernd Edlinger  <bernd.edlinger@hotmail.de>
      
              * gcc.dg/spec-options.c: Run the test on all targets.
              * gcc.dg/foo.specs: Use cpp_unique_options.
      
      From-SVN: r235762
      Bernd Edlinger committed
    • Canonicalize X u< X to UNORDERED_EXPR · dd53d197
      2016-05-02  Marc Glisse  <marc.glisse@inria.fr>
      
      gcc/
      	* match.pd (X u< X, X u> X): New transformations.
      
      gcc/testsuite/
      	* gcc.dg/tree-ssa/unord.c: New testcase.
      
      From-SVN: r235761
      Marc Glisse committed
    • Move "X +- C1 CMP C2 to X CMP C2 -+ C1" to match.pd · a8b85ce9
      2016-05-02  Marc Glisse  <marc.glisse@inria.fr>
      
      gcc/
      	* flag-types.h (enum warn_strict_overflow_code): Move ...
      	* coretypes.h: ... here.
      	* fold-const.h (fold_overflow_warning): Declare.
      	* fold-const.c (fold_overflow_warning): Make non-static.
      	(fold_comparison): Move the transformation of X +- C1 CMP C2
      	into X CMP C2 -+ C1 ...
      	* match.pd: ... here.
      	* gimple-fold.c (fold_stmt_1): Protect with
      	fold_defer_overflow_warnings.
      
      gcc/testsuite/
      	* gcc.dg/tree-ssa/20040305-1.c: Adjust.
      
      From-SVN: r235760
      Marc Glisse committed
    • omp-low.c (struct oacc_loop): Add 'inner' field. · 5b37e866
      	gcc/
      	* omp-low.c (struct oacc_loop): Add 'inner' field.
      	(new_oacc_loop_raw): Initialize it to zero.
      	(oacc_loop_fixed_partitions): Initialize it.
      	(oacc_loop_auto_partitions): Partition outermost loop to outermost
      	available partitioning.
      
      	gcc/testsuite/
      	* c-c++-common/goacc/loop-auto-1.c: Adjust expected warnings.
      
      	libgomp/
      	* testsuite/libgomp.oacc-c-c++-common/loop-auto-1.c: Adjust
      	expected partitioning.
      
      From-SVN: r235756
      Nathan Sidwell committed
    • Fix make install-gcc-specs with empty GCC_SPEC_FILES · 87cdf04b
      	* gcc-interface/Makefile.in (install-gcc-specs): Use foreach.
      	Honor DESTDIR.
      
      From-SVN: r235754
      Rainer Orth committed
    • re PR c/70851 (internal compiler error: in create_tmp_var, at gimple-expr.c:473) · 7176a4a0
      	PR c/70851
      	* c-decl.c (grokdeclarator): Diagnose when array's size has an
      	incomplete type.
      
      	* gcc.dg/enum-incomplete-3.c: New test.
      
      From-SVN: r235750
      Marek Polacek committed
    • [ARC] Various instruction pattern fixes · b5a5ade8
      gcc/
      2016-05-02  Claudiu Zissulescu  <claziss@synopsys.com>
      
      	* config/arc/arc.md (mulsidi3): Change operand 0 predicate to
      	register_operand.
      	(umulsidi3): Likewise.
      	(indirect_jump): Fix jump instruction assembly patterns.
      
      From-SVN: r235749
      Claudiu Zissulescu committed
    • [PR target/70860] [nvptx] Handle NULL cfun in nvptx_libcall_value · e91cacae
      	gcc/
      	PR target/70860
      	* config/nvptx/nvptx.c (nvptx_libcall_value): Handle NULL cfun.
      	(nvptx_function_value): Assert non-NULL cfun.
      
      From-SVN: r235748
      Thomas Schwinge committed
    • Minor reformatting. · c408fb34
      From-SVN: r235747
      Arnaud Charlet committed
    • [multiple changes] · a56886e9
      2016-05-02  Tristan Gingold  <gingold@adacore.com>
      
      	* fname.adb (Is_Predefined_File_Name): Also consider non-krunched
      	i-* names.
      
      2016-05-02  Ed Schonberg  <schonberg@adacore.com>
      
      	* sem_util.adb (Aggregate_Constraint_Checks): Separate
      	accessibility checks and non-null checks for aggregate components,
      	to prevent spurious accessibility errors.
      
      2016-05-02  Ed Schonberg  <schonberg@adacore.com>
      
      	* sem_ch3.adb (OK_For_Limited_Init): A type conversion is not
      	always legal in the in-place initialization of a limited entity
      	(e.g. an allocator).
      	* sem_res.adb (Resolve_Allocator): Improve error message with RM
      	reference  when allocator expression is illegal.
      
      From-SVN: r235746
      Arnaud Charlet committed