Commit Graph

150219 Commits

Author SHA1 Message Date
Richard Biener
b7ce4fe292 re PR tree-optimization/78343 (Loop is not eliminated)
2016-11-28  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/78343
	* gcc.dg/tree-ssa/20030808-1.c: Fix dump to generate.
	* gcc.dg/tree-ssa/20040305-1.c: Likewise.

From-SVN: r242913
2016-11-28 10:49:12 +00:00
Iain Sandoe
c6d01ef8ca [Darwin, config] Fix version number extraction to portable method
The method used in the applied patch caused configuration errors on freeBSD and hppa.

2016-11-28  Iain Sandoe  <iain@codesourcery.com>

	PR target/71767
	* configure.ac (with_ld64): Use portable method to extract the
	major part of the version number.
	* configure: Regenerated.

From-SVN: r242912
2016-11-28 10:29:19 +00:00
Jakub Jelinek
42aa1173f2 gimple-ssa-sprintf.c (build_intmax_type_nodes): Look at UINTMAX_TYPE rather than SIZE_TYPE.
* gimple-ssa-sprintf.c (build_intmax_type_nodes): Look at
	UINTMAX_TYPE rather than SIZE_TYPE.  Add gcc_unreachable if
	intmax_t couldn't be determined.
	(format_integer): Make {,u}intmax_type_node no longer static,
	initialize them only when needed.  For z and t use
	signed_or_unsigned_type_for instead of assuming size_t and
	ptrdiff_t have the same precision.

From-SVN: r242911
2016-11-28 11:01:30 +01:00
Jakub Jelinek
df8391b4f5 re PR lto/78211 (-fcompare-debug failure with -flto -fno-use-linker-plugin)
PR lto/78211
	* ipa-icf.h (sem_item_optimizer): Add m_classes_vec member.
	* ipa-icf.c (sem_item_optimizer::sem_item_optimizer): Initialize
	it.
	(sem_item_optimizer::~sem_item_optimizer): Traverse m_classes_vec
	vector instead of traversing m_classes hash table.  Release
	m_classes_vec.
	(sem_item_optimizer::read_section, sem_item_optimizer::add_class):
	Formatting fixes.
	(sem_item_optimizer::get_group_by_hash): When inserting a new group,
	add it also to m_classes_vec vector.
	(sem_item_optimizer::remove_symtab_node,
	sem_item_optimizer::build_hash_based_classes,
	sem_item_optimizer::parse_nonsingleton_classes): Formatting fixes.
	(sem_item_optimizer::subdivide_classes_by_equality,
	sem_item_optimizer::subdivide_classes_by_sensitive_refs,
	sem_item_optimizer::verify_classes): Traverse m_classes_vec vector
	instead of traversing m_classes hash table.  Formatting fixes.
	(sem_item_optimizer::traverse_congruence_split,
	sem_item_optimizer::do_congruence_step_for_index,
	sem_item_optimizer::do_congruence_step): Formatting fixes.
	(sem_item_optimizer::process_cong_reduction): Traverse m_classes_vec
	vector instead of traversing m_classes hash table.
	(sem_item_optimizer::dump_cong_classes): Likewise.  Formatting fixes.
	(sem_item_optimizer::merge_classes): Traverse m_classes_vec vector
	instead of traversing m_classes hash table.

	* g++.dg/ipa/pr78211.C: New test.

From-SVN: r242910
2016-11-28 11:00:43 +01:00
Georg-Johann Lay
193273638f avr.c (out_movhi_r_mr): Only SBIW if X is not unused after.
* config/avr/avr.c (out_movhi_r_mr) [REG_X + PLUS]: Only SBIW if
	X is not unused after.

From-SVN: r242909
2016-11-28 09:28:45 +00:00
Bernd Schmidt
03612f2527 re PR rtl-optimization/78120 (If conversion no longer performed)
PR rtl-optimization/78120
	* rtlanal.c (insn_rtx_cost): Revert previous change.

From-SVN: r242908
2016-11-28 08:59:01 +00:00
Georg-Johann Lay
43c058162f re PR target/41076 ([avr] pessimal code for logical OR of 8-bit fields)
PR 41076
	* config/avr/avr.md (SPLIT34): New mode iterator.
	(bitop): New code iterator.
	(*iorhi3.ashift8-*). New insn-and-split patterns.
	(*movhi): Post-reload split reg = 0.
	[!MOVW]: Post-reload split reg = reg.
	(*mov<mode>) [SI,SF,PSI,SQ,USQ,SA,USA]: Post-reload split reg = reg.
	(andhi3, andpsi3, andsi3): Post-reload split reg-reg operations.
	(iorhi3, iorpsi3, iorsi3): Same.
	(xorhi3, xorpsi3, xorsi3): Same.
	* config/avr/avr.c (avr_rtx_costs_1) [IOR && HImode]: Adjust rtx
	costs to *iorhi3.ashift8-* patterns.

From-SVN: r242907
2016-11-28 08:40:11 +00:00
Jason Merrill
f9438bbb2e PR c++/77907 - static init and PMF
* constexpr.c (cxx_eval_constant_expression): Use cp_fold_convert.

From-SVN: r242906
2016-11-27 23:00:36 -05:00
GCC Administrator
c190974fe5 Daily bump.
From-SVN: r242905
2016-11-28 00:16:19 +00:00
Eric Botcazou
6724cebe76 re PR ada/78524 (failure of ACATS c41104a at -O0)
PR ada/78524
	* gcc-interface/utils.c (max_size) <tcc_reference>: Add missing
	conversion to original type in the PLACEHOLDER_EXPR case.

From-SVN: r242902
2016-11-27 22:04:13 +00:00
Eric Botcazou
18e5eb77b7 re PR ada/78531 (bootstrap broken with _FORTIFY_SOURCE enabled)
PR ada/78531
	* namet.h (Max_Line_Length): Define.
	(struct Bounded_String): Declare Chars with exact size.
	(namet__get_decoded_name_string): Delete.
	(Get_Decoded_Name_String): Likewise.
	(casing__set_all_upper_case): Likewise.

From-SVN: r242901
2016-11-27 20:23:31 +00:00
Paul Thomas
e578b767c5 re PR fortran/78474 ([F08] gfortran accepts invalid submodule syntax)
2016-11-27  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/78474
	* module.c (gfc_match_submodule): If there is more than one
	colon, it is a syntax error.

	PR fortran/78331
	* module.c (gfc_use_module): If an smod file does not exist it
	is either because the module does not have a module procedure
	interface or there is an error in the module.

2016-11-27  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/78474
	* gfortran.dg/submodule_22.f08: New test.

	PR fortran/78331
	* gfortran.dg/submodule_21.f08: New test.

From-SVN: r242900
2016-11-27 19:00:00 +00:00
John David Anglin
ae829c9503 pr65655.C: Use dg-timeout-factor 2.
* g++.dg/torture/pr65655.C: Use dg-timeout-factor 2.

From-SVN: r242899
2016-11-27 17:40:53 +00:00
Iain Sandoe
b410cf1dc0 [Darwin] fix PR67710 by updating 'as' specs to handle newer assembler versions.
A/ Newer versions of ld64 check the min_version command, and newer versions of
   the system assembler inserts this in response to "-mmacosx-version-min=" on
   the assembler line. Unless one makes sensible versions, some object is bound
   to conflict.

B/ Additionally, there's a difference in behaviour between "as" and "ld" when
   presented with xx.yy.zz (ld truncates to xx.yy, as doesn't); net result is
   that one needs to pass a truncated version to "as".

So (if the assembler supports minversion commands)
(a) provide a truncated minversion (as asm_macosx_version_min, which is a
    driver-only var).
(b) pass this to "as"
(c) Update tests to determine 'HAVE_AS_MMACOSX_VERSION_MIN_OPTION'
    (Rainer's patch)
(d) For some reason the testcases are "run" (it's not obvious they need to be,
    they are checking compile-time issues)
  - anyway, to preserve the status quo, I've left them as exec.  However, the
    minimum version that can be code-gened for is target-dependent (there are no
    released x86 versions before 10.4, for example).  To avoid conflicts where
    the "as" is assuming some minimum, I've set the testversion to 10.5 (which
    is supported by all the archs we have)
(e) We need to ensure that libgcc and crts are generated with a sufficiently
    old minversion not to conflict.

gcc/

2016-11-27  Iain Sandoe  <iain@codesourcery.com>
	    Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>

	PR target/67710
	* config.in: Regenerate
	* config/darwin-driver.c (darwin_driver_init): Emit a version string
	for the assembler.
	* config/darwin.h(ASM_MMACOSX_VERSION_MIN_SPEC): New, new tests.
	* config/darwin.opt(asm_macosx_version_min): New.
	* config/i386/darwin.h: Handle ASM_MMACOSX_VERSION_MIN_SPEC.
	* configure: Regenerate
	* configure.ac: Check for mmacosx-version-min handling.

gcc/testsuite/

2016-11-27  Iain Sandoe  <iain@codesourcery.com>
	    Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
	    Dominique d'Humieres  <dominiq@lps.ens.fr>

	PR target/67710
	*  gcc.dg/darwin-minversion-1.c: Update min version check.
	*  gcc.dg/darwin-minversion-2.c: Likewise.
	*  gcc.dg/darwin-minversion-3.c: Likewise.

libgcc/

2016-11-27  Iain Sandoe  <iain@codesourcery.com>
	    Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>

	PR target/67710
	*  config/t-darwin: Default builds to 10.5 codegen.


Co-Authored-By: Dominique d'Humieres <dominiq@lps.ens.fr>
Co-Authored-By: Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>

From-SVN: r242898
2016-11-27 15:07:22 +00:00
Iain Sandoe
03f82a6a63 [Darwin] Fix PR57438 by avoiding empty function bodies and trailing labels.
A.
Empty function bodies causes two problems for Darwin's linker (i) zero-length
FDEs and (ii) coincident label addresses that might point to items of
differing weakness.

B.
Trailing local labels can be problematic when they end a function because
similarly they might apparently point to a following weak function, leading
to the linker concluding that there's a pointer-diff to a weak symbol
(which is not allowed).

Both conditions arise from __builtin_unreachable() lowering to a barrier.

The solution for both is to emit some finite amount of code; in the case of A
a trap is emitted, in the case of B a nop.

gcc/

2016-11-27  Iain Sandoe  <iain@codesourcery.com>

	PR target/57438
	* config/i386/i386.c (ix86_code_end): Note that we emitted code
	where the function might otherwise appear empty for picbase thunks.
	(ix86_output_function_epilogue): If we find a zero-sized function
	assume that reaching it is UB and trap.  If we find a trailing label
	append a nop.
	* config/rs6000/rs6000.c (rs6000_output_function_epilogue): If we
	find a zero-sized function assume that reaching it is UB and trap.
	If we find a trailing label, append a nop.

gcc/testsuite/

2016-11-27  Iain Sandoe  <iain@codesourcery.com>

	PR target/57438
	* gcc.dg/pr57438-1.c: New Test.
	* gcc.dg/pr57438-2.c: New Test.

From-SVN: r242897
2016-11-27 14:50:58 +00:00
Dominique d'Humieres
987395fd65 [Testsuite] pr71767 Changes.
Update Darwin tests to reflect the differences in symbol names and section
 usage.

gcc/testsuite/

2016-11-27  Dominique d'Humieres  <dominiq@lps.ens.fr>
	    Iain Sandoe  <iain@codesourcery.com>

	PR target/71767
	* g++.dg/abi/key2.C: Adjust for changed Darwin sections and
	linker-visible symbols.
	* g++.dg/torture/darwin-cfstring-3.C: Likewise.
	* gcc.dg/const-uniq-1.c: Likewise.
	* gcc.dg/torture/darwin-cfstring-3.c: Likewise.
	* gcc.target/i386/pr70799-1.c: Likewise.


Co-Authored-By: Iain Sandoe <iain@codesourcery.com>

From-SVN: r242896
2016-11-27 14:41:22 +00:00
Iain Sandoe
794fa8a6ab [Darwin] Fix PR71767 - adjust the sections used where necessary.
(much) Older Darwin linkers needed separate sections marked "coalesce" to
 allow for weak symbol coalescing.  This has not been needed for some time
 and is now deprecated, newer assemblers warn if the old coalesced sections
 are used.
 
 
gcc/

2016-11-27  Iain Sandoe  <iain@codesourcery.com>

	PR target/71767
	* config/darwin-sections.def (picbase_thunk_section): New.
	* config/darwin.c (darwin_init_sections): Set up picbase thunk
	section. (darwin_rodata_section, darwin_objc2_section,
	machopic_select_section, darwin_asm_declare_constant_name,
	darwin_emit_weak_or_comdat, darwin_function_section): Don’t use
	coalesced with newer linkers.
	(darwin_override_options): Decide on usage of coalesed sections
	on the basis of the target linker version.
	* config/darwin.h (MIN_LD64_NO_COAL_SECTS): New.
	* config/darwin.opt  (mtarget-linker): New.
	* config/i386/i386.c (ix86_code_end): Do not force the thunks into
	a coalesced section, instead use a thunks section.

From-SVN: r242895
2016-11-27 14:34:54 +00:00
Iain Sandoe
eb89c82f46 [Darwin, config] Arrange for ld64 to be detected as Darwin's linker.
This is an initial patch in a series that converts Darwin's configury
 to detect ld64 features, rather than the current process of hard-coding
 them on target system version.

 A ld64-compatible linker is currently required and assumed by Darwin.
 If a DEFAULT_LINKER is set via --with-ld= then this will be tested to
 see if it is ld64.

 The ld64 version is determined for the chosen ld and this is exported for
 use in setting a default value for -mtarget-linker (needed for run-time
 code-gen changes to section choices).
 The support for -rdynamic is converted to be detected at config time, or
 by the ld64 version if that is found.

gcc/

2016-11-27  Iain Sandoe  <iain@codesourcery.com>

	PR target/71767
	* configure.ac (with-ld64): New var, set for Darwin, set on
	detection of ld64, gcc_cv_ld64_export_dynamic: New, New test.
	* config/darwin.h: Use LD64_HAS_DYNAMIC export. DEF_LD64: New,
	define.
	* config/darwin10.h(DEF_LD64): Update for this target version.
	* config/darwin12.h(LINK_GCC_C_SEQUENCE_SPEC): Remove rdynamic
	test.  (DEF_LD64): Update for this target version.
	* configure: Regenerated.
	* config.in: Regenerated.

From-SVN: r242894
2016-11-27 14:29:36 +00:00
Iain Sandoe
7881b63fef [Darwin, ld64] Make PIC indirections and constant labels linker-visible.
Indirections:

  If we have a situation like:

global_weak_symbol:
  ....
Lnon_weak_local:
  ....

  ld64 will be unable to split this into two atoms (because the "L" makes
  the second symbol 'invisible').  This means that legitimate direct accesses
  to the second symbol will appear to be non-allowed direct accesses to an
  atom of type weak, global which are not allowed.

  To avoid this, we make the indirections have a leading 'l' (lower-case L)
  which has a special meaning: linker can see this and use it to determine
  atoms, but it is not placed into the final symbol table.

  The implementation here is somewhat heavy-handed in that it will also mark
  indirections to the __IMPORT,__pointers section the same way which is
  really unnecessary, since ld64 _can_ split those into atoms as they are
  fixed size.  FIXME: determine if this is a penalty worth extra code to
  fix.

Similarly, with:

  .const
weak_global_constant:
  ....

LCxx:
  ...

 ld64 can't split the second, causing a warning when it's directly
accessed.

gcc/

2016-11-27  Iain Sandoe  <iain@codesourcery.com>

	PR target/71767
	* config/darwin.c (imachopic_indirection_name): Make data
	section indirections linker-visible.
	* config/darwin.h (ASM_GENERATE_INTERNAL_LABEL): Make local
	constant labels linker-visible.

From-SVN: r242893
2016-11-27 14:21:51 +00:00
Tim Shen
3203ed5f01 re PR libstdc++/78441 ([variant] variant_alternative doesn't allow cv qualifiers)
PR libstdc++/78441
	* include/std/variant: Propagate cv qualifications to types returned
	by variant_alternative.
	* testsuite/20_util/variant/compile.cc: Tests.

From-SVN: r242892
2016-11-27 00:32:04 +00:00
GCC Administrator
216c1ee838 Daily bump.
From-SVN: r242891
2016-11-27 00:16:21 +00:00
Prathamesh Kulkarni
7fa6a96535 tree.c (build_common_tree_nodes): Initialize ptrdiff_type_node.
2016-11-26  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>

	* tree.c (build_common_tree_nodes): Initialize ptrdiff_type_node.
	(free_lang_data): Remove assignment to ptrdiff_type_node.
c-family/
	* c-common.c (c_common_nodes_and_builtins): Remove initialization of
	ptrdiff_type_node.
lto/
	* lto-lang.c (lto_init): Remove initialization of ptrdiff_type_node.

From-SVN: r242888
2016-11-26 10:41:55 +00:00
GCC Administrator
55ab8dbf4d Daily bump.
From-SVN: r242887
2016-11-26 00:16:18 +00:00
Janne Blomqvist
bec1f1aacf For typo in documentation wrt. C_PTRDIFF_T constant
2016-11-25  Janne Blomqvist  <jb@gcc.gnu.org>

       * intrinsic.texi: Fix ptrdiff_t typo in ISO_C_BINDING constants
       table.

From-SVN: r242884
2016-11-25 22:06:24 +02:00
Jakub Jelinek
8382457c0f re PR rtl-optimization/78438 (incorrect comparison optimization)
PR rtl-optimization/78438
	PR rtl-optimization/78477
	* gcc.c-torture/execute/pr78438.c: New test.
	* gcc.c-torture/execute/pr78477.c: New test.

From-SVN: r242883
2016-11-25 20:24:22 +01:00
Jakub Jelinek
ad7a69db52 re PR rtl-optimization/78526 (ICE: in decompose, at rtl.h:2117 with -g -mavx512bw)
PR rtl-optimization/78526
	* simplify-rtx.c (simplify_immed_subreg): Don't use wi::extract_uhwi
	beyond val's precision.

	* gcc.dg/pr78526.c: New test.

From-SVN: r242882
2016-11-25 19:56:50 +01:00
Vladimir Makarov
c620cf89a8 re PR rtl-optimization/77541 (wrong code with 512bit vectors of int128 @ -O1)
2016-11-25  Vladimir Makarov  <vmakarov@redhat.com>

	PR rtl-optimization/77541
	* gcc.target/i386/pr77541.c: Change target to int128.

From-SVN: r242881
2016-11-25 17:42:21 +00:00
Janus Weil
f76c4d97ae re PR fortran/60853 ([OOP] Failure to disambiguate generic with unlimited polymorphic)
2016-11-25  Janus Weil  <janus@gcc.gnu.org>

	PR fortran/60853
	* interface.c (gfc_compare_interfaces): Remove bad special case for
	unlimited polymorphism. Refactor for loop.

2016-11-25  Janus Weil  <janus@gcc.gnu.org>

	PR fortran/60853
	* gfortran.dg/typebound_assignment_8.f90: New test case.

From-SVN: r242880
2016-11-25 18:22:37 +01:00
Jakub Jelinek
27d0862e62 re PR rtl-optimization/78527 (ice on valid C code at -O3 in both 32-bit and 64-bit modes on x86_64-linux-gnu (internal compiler error: in smallest_mode_for_size, at stor-layout.c:364))
PR rtl-optimization/78527
	* combine.c (make_compound_operation_int): Ignore LSHIFTRT with
	out of bounds shift count.

	* gcc.c-torture/compile/pr78527.c: New test.

From-SVN: r242879
2016-11-25 18:12:29 +01:00
Martin Liska
be40f3cd82 Fix documentation reference (PR web/71666)
PR web/71666
	* doc/invoke.texi (-fprofile-use): Fix reference to a section
	where -fprofile-generate is documented.

From-SVN: r242878
2016-11-25 14:23:54 +00:00
Martin Liska
78681a7b92 Don't use priority {cd}tors if not supported by a target (PR
PR gcov-profile/78086
	* g++.dg/gcov/pr16855.C: Clean up the test case.
	* g++.dg/gcov/pr16855-priority.C: New test.
	* coverage.c (build_init_ctor): Don't use priority {cd}tors if
	not supported by a target.  Set priority to 100 if possible.
	(build_gcov_exit_decl): Likewise.

From-SVN: r242877
2016-11-25 14:23:25 +00:00
Richard Biener
a77af1829f re PR ipa/78515 (ICE: in fold_binary_loc, at fold-const.c:8999 with -Os -mavx512bw)
2016-11-25  Richard Biener  <rguenther@suse.de>

	PR ipa/78515
	* ipa-prop.c (compute_complex_assign_jump_func): Properly identify
	unary, binary and single RHSs.
	* tree.def (BIT_INSERT_EXPR): Adjust tree code name.

	* gcc.dg/torture/pr78515.c: New testcase.

From-SVN: r242876
2016-11-25 14:05:04 +00:00
Paul Thomas
3cae214f76 [multiple changes]
2016-11-25  Andre Vehreschild  <vehre@gcc.gnu.org>
	Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/78293
	* trans-expr.c (gfc_conv_procedure_call): Prepend deallocation
	of alloctable components to post, rather than adding to
	se->post.
	* trans-stmt.c (gfc_trans_allocate): Move deallocation of expr3
	allocatable components so that all expr3s are visited.

2016-11-25  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/78293
	* gfortran.dg/allocatable_function_10.f90: New test.
	* gfortran.dg/class_array_15.f03: Increase builtin_free count
	from 11 to 12.

From-SVN: r242875
2016-11-25 12:23:43 +00:00
Bin Cheng
ae22bc5d4a re PR middle-end/78507 (ICE: tree check: expected integer_type or enumeral_type or boolean_type or real_type or fixed_point_type, have pointer_type in int_fits_type_p, at tree.c:9153)
PR middle-end/78507
	PR middle-end/78510
	PR middle-end/78517
	* match.pd ((cond (cmp (convert1? @1) @3) (convert2? @1) @2)): Use
	cmp directly, rather than cmp_code.  Initialize code to ERROR_MARK
	and set it to result code if transformation is valid.  Use code EQ
	directly in last simplification case.

	gcc/testsuite
	PR middle-end/78507
	PR middle-end/78510
	PR middle-end/78517
	* g++.dg/torture/pr78507.C: New test.
	* gcc.dg/torture/pr78510.c: New test.
	* gcc.dg/torture/pr78517.c: New test.

From-SVN: r242874
2016-11-25 11:45:43 +00:00
Richard Biener
1af928db7c gimple-fold.c (fold_stmt_1): Check may_propagate_copy before valueizing return stmts.
2016-11-25  Richard Biener  <rguenther@suse.de>

	* gimple-fold.c (fold_stmt_1): Check may_propagate_copy
	before valueizing return stmts.

From-SVN: r242873
2016-11-25 11:40:30 +00:00
Richard Biener
59ec925b11 re PR tree-optimization/78343 (Loop is not eliminated)
2016-11-24  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/78343
	* passes.def: Add CD-DCE pass after loop splitting.
	* tree-ssa-dce.c (find_obviously_necessary_stmts): Move
	SCEV init/finalize ...
	(perform_tree_ssa_dce): ... here.  Deal with being
	executed inside the loop pipeline in aggressive mode.

	* gcc.dg/tree-ssa/sccp-2.c: New testcase.
	* gcc.dg/autopar/uns-outer-6.c: Adjust.
	* gcc.dg/tree-ssa/20030808-1.c: Likewise.
	* gcc.dg/tree-ssa/20040305-1.c: Likewise.
	* gcc.dg/vect/pr38529.c: Likewise.

From-SVN: r242872
2016-11-25 10:22:57 +00:00
Eric Botcazou
4741b062d6 Remove conflict marker
From-SVN: r242871
2016-11-25 10:04:20 +00:00
Thomas Preud'homme
d8cc3d06f8 Improve comment for struct symbolic_number in bswap pass
2016-11-25  Thomas Preud'homme  <thomas.preudhomme@arm.com>

    gcc/
    * tree-ssa-math-opts.c (struct symbolic_number): Improve comment.

From-SVN: r242870
2016-11-25 10:03:46 +00:00
Thomas Preud'homme
83624b6040 Fix PR77673: bswap loads passed end of object
2016-11-25  Thomas Preud'homme  <thomas.preudhomme@arm.com>

    gcc/
    PR tree-optimization/77673
    * tree-ssa-math-opts.c (struct symbolic_number): Add new src field.
    (init_symbolic_number): Initialize src field from src parameter.
    (perform_symbolic_merge): Select most dominated statement as the
    source statement.  Set src field of resulting n structure from the
    input src with the lowest address.
    (find_bswap_or_nop): Rename source_stmt into ins_stmt.
    (bswap_replace): Rename src_stmt into ins_stmt.  Initially get source
    of load from src field rather than insertion statement.  Cancel
    optimization if statement analyzed is not dominated by the insertion
    statement.
    (pass_optimize_bswap::execute): Rename src_stmt to ins_stmt.  Compute
    dominance information.

    gcc/testsuite/
    PR tree-optimization/77673
    * gcc.dg/pr77673.c: New test.

From-SVN: r242869
2016-11-25 10:03:38 +00:00
Eric Botcazou
605040b41a re PR ada/67205 (eliminate No_Implicit_Dynamic_Code restriction violations)
PR ada/67205
	* config/mips/mips.c (TARGET_CUSTOM_FUNCTION_DESCRIPTORS): Define.

From-SVN: r242868
2016-11-25 09:59:45 +00:00
Martin Jambor
54e606f0b1 [PR 70965] Schedule extra rebuild_cgraph_edges
2016-11-25  Martin Jambor  <mjambor@suse.cz>

	PR tree-optimization/70965
	* passes.def (pass_build_ssa_passes): Add pass_rebuild_cgraph_edges.

gcc/testsuite/
	* g++.dg/pr70965.C: New test.

From-SVN: r242867
2016-11-25 10:49:19 +01:00
James Greenhalgh
2dbe91cff1 [Patch i386] PR78509 - TARGET_C_EXCESS_PRECISION should not return
"unpredictable" for EXCESS_PRECISION_TYPE_STANDARD

gcc/

	PR target/78509
	* config/i386/i386.c (i386_excess_precision): Do not return
	FLT_EVAL_METHOD_UNPREDICTABLE when "type" is
	EXCESS_PRECISION_TYPE_STANDARD.
	* target.def (excess_precision): Document that targets should
	not return FLT_EVAL_METHOD_UNPREDICTABLE when "type" is
	EXCESS_PRECISION_TYPE_STANDARD or EXCESS_PRECISION_TYPE_FAST.
	Fix typo in first sentence.
	* doc/tm.texi: Regenerate.

From-SVN: r242866
2016-11-25 09:25:31 +00:00
Richard Biener
5bcfb22cf6 re PR tree-optimization/78396 (gcc.dg/vect/bb-slp-cond-1.c FAILs after fix for PR77848)
2016-11-25  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/78396
	* tree-vectorizer.c (vectorize_loops): When the if-converted
	body contains masked loads or stores do not attempt to
	basic-block-vectorize it.

From-SVN: r242865
2016-11-25 08:59:28 +00:00
Jakub Jelinek
758dcf83e3 re PR gcov-profile/78467 (gcc.dg/tree-prof/comp-goto-1.c FAILs)
PR gcov-profile/78467
	* gcc.dg/tree-prof/comp-goto-1.c (insn_t): Change offset to
	signed int.

Co-Authored-By: Andreas Schwab <schwab@linux-m68k.org>

From-SVN: r242864
2016-11-25 09:51:38 +01:00
Richard Sandiford
83d0488b79 Tweak LRA handling of shared spill slots
The previous code processed the users of a stack slot in order of
decreasing size and allocated the slot based on the first user.
This seems a bit dangerous, since the ordering is based on the
mode of the biggest reference while the allocation is based also
on the size of the register itself (which I think could be larger).

That scheme doesn't scale well to polynomial sizes, since there's
no guarantee that the order of the sizes is known at compile time.
This patch instead records an upper bound on the size required
by all users of a slot.  It also records the maximum alignment
requirement.

gcc/
2016-11-15  Richard Sandiford  <richard.sandiford@arm.com>
	    Alan Hayward  <alan.hayward@arm.com>
	    David Sherwood  <david.sherwood@arm.com>

	* function.h (spill_slot_alignment): Declare.
	* function.c (spill_slot_alignment): New function.
	* lra-spills.c (slot): Add align and size fields.
	(assign_mem_slot): Use them in the call to assign_stack_local.
	(add_pseudo_to_slot): Update the fields.
	(assign_stack_slot_num_and_sort_pseudos): Initialise the fields.

Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
Co-Authored-By: David Sherwood <david.sherwood@arm.com>

From-SVN: r242863
2016-11-25 08:23:08 +00:00
Richard Sandiford
664e69688d Set mode of decimal floats before calling layout_type
Previously decimal floating-point types were created and laid
out as binary floating-point types, then the caller changed
the mode to a decimal mode later.  The problem with that
approach is that not all targets support an equivalent binary
floating-point mode.  When they didn't, we would give the
type BLKmode and lay it out as a zero-sized type.

This probably had no effect in practice.  If a target doesn't
support a binary mode then it's unlikely to support the decimal
equivalent either.  However, with the stricter mode checking
added by later patches, we would assert if a scalar floating-
point type didn't have a scalar floating-point mode.

gcc/
2016-11-16  Richard Sandiford  <richard.sandiford@arm.com>
	    Alan Hayward  <alan.hayward@arm.com>
	    David Sherwood  <david.sherwood@arm.com>

	* stor-layout.c (layout_type): Allow the caller to set the mode of
	a float type.  Only choose one here if the mode is still VOIDmode.
	* tree.c (build_common_tree_nodes): Set the type mode of decimal
	floats before calling layout_type.
	* config/rs6000/rs6000.c (rs6000_init_builtins): Likewise.

Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
Co-Authored-By: David Sherwood <david.sherwood@arm.com>

From-SVN: r242862
2016-11-25 08:20:40 +00:00
Richard Sandiford
84db1406e6 Add run tests for recent sibcall patches
gcc/testsuite/
	* gcc.dg/tree-ssa/tailcall-7-run.c: New test.
	* gcc.dg/tree-ssa/tailcall-8-run.c: Likewise.

From-SVN: r242861
2016-11-25 08:18:26 +00:00
Richard Sandiford
2c28c3e499 Tighten check for whether sibcall references local variables
This loop:

      /* Make sure the tail invocation of this function does not refer
         to local variables.  */
      FOR_EACH_LOCAL_DECL (cfun, idx, var)
        {
          if (TREE_CODE (var) != PARM_DECL
              && auto_var_in_fn_p (var, cfun->decl)
              && (ref_maybe_used_by_stmt_p (call, var)
                  || call_may_clobber_ref_p (call, var)))
            return;
        }

triggered even for local variables that are passed by value.
This meant that we didn't allow local aggregates to be passed
to a sibling call but did (for example) allow global aggregates
to be passed.

I think the loop is really checking for indirect references,
so should be able to skip any variables that never have their
address taken.

gcc/
	* tree-tailcall.c (find_tail_calls): Allow calls to reference
	local variables if all references are known to be direct.

gcc/testsuite/
	* gcc.dg/tree-ssa/tailcall-8.c: New test.

From-SVN: r242860
2016-11-25 08:17:46 +00:00
Senthil Kumar Selvaraj
4ae35e6988 Fix bogus pr64277.c failure for avr
The smaller int size for the avr target breaks the test's
expectation on the number of iterations. The failure goes
away if 32 bit ints are used in place of a plain int.

Fix by conditionally typedef int32_t to __INT32_TYPE__ for targets
with int size < 4,  and then use int32_t everywhere.

gcc/testsuite
016-11-25  Senthil Kumar Selvaraj  <senthil_kumar.selvaraj@atmel.com>

	* gcc.dg/pr64277.c: Use __INT32_TYPE__ for targets
	with sizeof(int) < 4.

From-SVN: r242859
2016-11-25 08:15:42 +00:00
Jakub Jelinek
2131e489c9 re PR middle-end/78501 (SEGV in vrp_val_max)
2016-11-25  Jakub Jelinek  <jakub@redhat.com>
	    Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>

	PR middle-end/78501
	* tree-vrp.c (extract_range_basic): Check for ptrdiff_type_node to be
	non null and it's precision matches precision of lhs's type.

Co-Authored-By: Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>

From-SVN: r242858
2016-11-25 08:03:51 +00:00