Commit Graph

150184 Commits

Author SHA1 Message Date
Jakub Jelinek
d057004733 re PR rtl-optimization/78546 (wrong code at -O2 and above)
PR rtl-optimization/78546
	* simplify-rtx.c (neg_const_int): When negating most negative
	number in mode wider than HOST_BITS_PER_WIDE_INT, use
	simplify_const_unary_operation to produce CONST_DOUBLE or
	CONST_WIDE_INT.
	(simplify_plus_minus): Hanlde the case where neg_const_int
	doesn't return a CONST_INT.

	* gcc.dg/torture/pr78546-1.c: New test.
	* gcc.dg/torture/pr78546-2.c: New test.

From-SVN: r242929
2016-11-28 20:15:51 +01:00
Markus Trippelsdorf
82979abd86 Fix PR78556 - left shift of negative values
Running bootstrap-ubsan on ppc64le shows many instances of e.g.:
 config/rs6000/rs6000.c:6217:36: runtime error: left shift of negative value -12301

        PR target/78556
	* config/rs6000/rs6000.c (vspltis_constant): Add casts to avoid
	left shifting of negative values.

From-SVN: r242928
2016-11-28 18:33:19 +00:00
Jakub Jelinek
80cf1b8b60 re PR fortran/78298 (ICE in lookup_decl_in_outer_ctx, bei omp-low.c:4115)
PR fortran/78298
	* tree-nested.c (convert_local_reference_stmt): After adding
	shared (FRAME.NN) clause to omp parallel, task or target,
	add it also to all outer omp parallel, task or target constructs.

	* gfortran.dg/gomp/pr78298.f90: New test.

From-SVN: r242926
2016-11-28 18:31:37 +01:00
Uros Bizjak
bf9e8b6b50 i386.md (UNSPEC_KMASKOP): New.
* config/i386/i386.md (UNSPEC_KMASKOP): New.
	(UNSPEC_KMOV): Remove.
	(kmovw): Expand to plain HImode move.
	(k<any_logic:code><mode>): Rename from *k<logic><mode>. Use
	register_operand predicates.  Tag pattern with UNSPEC_KMASKOP.
	Remove corresponding clobber-removing splitter.
	(*anddi_1): Remove mask register alternatives.
	(*andsi_1): Ditto.
	(*andhi_1): Ditto.
	(*andqi_1): Ditto.
	(*<any_or:code><mode>_1): Ditto.
	(*<any_or:code>qi_1): Ditto.
	(kandn<mode>): Use SWI1248_AVX512BW mode iterator.  Remove
	general register alternatives.  Tag pattern with UNSPEC_KMASKOP.
	Remove corresponding splitter to operation with general registers.
	(*andn<SWI38:mode>): Rename from *bmi_andn_<mode>.
	(*andn<SWI12:mode>): New pattern.
	(*kxnor<mode>): Remove general register alternatives.  Tag pattern
	with UNSPEC_KMASKOP.  Remove corresponding splitter to operation
	with general registers.
	(knot<mode>): New insn pattern.
	(*one_cmpl<mode>2_1): Remove mask register alternatives.
	(one_cmplqi2_1): Ditto.
	(*k<any_lshift:code><mode>): Rename from *k<mshift><mode>3.
	Tag pattern with UNSPEC_KMASKOP. Add mode attribute.
	* config/i386/predicates.md (mask_reg_operand): Remove predicate.
	* config/i386/sse.md (vec_unpacks_hi_hi): Update pattern
	to generate kmaskop shift.
	(vec_unpacks_hi_<mode>): Ditto.
	* config/i386/i386-builtin.def (__builtin_ia32_kandhi):
	Use CODE_FOR_kandhi.
	(__builtin_ia32_knothi): Use CODE_FOR_knothi.
	(__builtin_ia32_korhi): Use CODE_FOR_kiorhi.
	(__builtin_ia32_kxorhi): Use CODE_FOR_kxorhi.

testsuite/ChangeLog:

	* gcc.target/i386/bmi-andn-1a.c (dg-final): Update scan string.
	* gcc.target/i386/bmi-andn-2a.c (dg-final): Ditto.

From-SVN: r242925
2016-11-28 17:53:17 +01:00
Jakub Jelinek
f4bb5c171e re PR c++/77591 (decltype(auto) and ternary operator allow returning local reference without a warning)
PR c++/77591
	* typeck.c (maybe_warn_about_returning_address_of_local): Optimize
	whats_returned through fold_for_warn.

	* g++.dg/cpp1y/pr77591.C: New test.

From-SVN: r242924
2016-11-28 16:21:53 +01:00
Nathan Sidwell
21b0f96a82 * MAINTAINERS (nvptx): Remove self.
From-SVN: r242923
2016-11-28 15:18:45 +00:00
David Edelsohn
54856e4f6d * gcc.dg/torture/pr78515.c: Ignore ABI extension warning.
From-SVN: r242922
2016-11-28 10:11:27 -05:00
Richard Biener
1c3099cca5 tree-vrp.c (vrp_visit_assignment_or_call): Handle simplifications to SSA names via extract_range_from_ssa_name if allowed.
2016-11-28  Richard Biener  <rguenther@suse.de>

	* tree-vrp.c (vrp_visit_assignment_or_call): Handle
	simplifications to SSA names via extract_range_from_ssa_name
	if allowed.

From-SVN: r242921
2016-11-28 15:04:45 +00:00
Richard Biener
6522add29b re PR tree-optimization/78542 (wrong code at -Og results in endless loop)
2016-11-28  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/78542
	* tree-ssa-ccp.c (evaluate_stmt): Only valueize simplification
	if allowed.

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

From-SVN: r242920
2016-11-28 15:03:55 +00:00
Alexander Monakov
6a6951b1bf libgomp: remove config/nvptx/critical.c
* config/nvptx/critical.c: Delete to use generic implementation.

From-SVN: r242919
2016-11-28 16:50:23 +03:00
Jonas Hahnfeld
c7ac071fd0 libgomp: fix OpenMP offloading to NVPTX and correct location of generic affinity.c
2016-11-28  Jonas Hahnfeld  <Hahnfeld@itc.rwth-aachen.de>

	* config/linux/affinity.c [!HAVE_PTHREAD_AFFINITY_NP]: Include
	../../affinity.c as fallback.
	* config/nvptx/affinity.c: Delete to use fallback implementation.

From-SVN: r242918
2016-11-28 16:42:50 +03:00
Paolo Bonzini
51a07549a9 combine.c (simplify_if_then_else): Simplify IF_THEN_ELSE that isolates a single bit...
gcc:
* combine.c (simplify_if_then_else): Simplify IF_THEN_ELSE
that isolates a single bit, even if the condition involves
subregs.

From-SVN: r242917
2016-11-28 13:21:02 +00:00
Tamar Christina
6383ff9f9e 2016-11-28 Tamar Christina <tamar.christina@arm.com>
* config/aarch64/aarch64-simd-builtins.def
	(BSL_P): Added di and v2di mode.
	* config/aarch64/arm_neon.h
	(vsriq_n_p64, vsri_n_p64): Added poly type.
	(vextq_p64, vext_p64): Likewise.
	(vceq_p64, vbslq_p64, vbsl_p64): Likewise.

From-SVN: r242916
2016-11-28 12:47:02 +00:00
Tamar Christina
159b872453 aarch64-builtins.c (TYPES_SETREGP): Added poly type.
2016-11-28  Tamar Christina  <tamar.christina@arm.com>

	* config/aarch64/aarch64-builtins.c (TYPES_SETREGP): Added poly type.
	(TYPES_GETREGP): Likewise.
	(TYPES_SHIFTINSERTP): Likewise.
	(TYPES_COMBINEP): Likewise.
	(TYPES_STORE1P): Likewise.
	* config/aarch64/aarch64-simd-builtins.def
	(combine): Added poly generator.
	(get_dregoi): Likewise.
	(get_dregci): Likewise.
	(get_dregxi): Likewise.
	(ssli_n): Likewise.
	(ld1): Likewise.
	(st1): Likewise.
	* config/aarch64/arm_neon.h
	(poly64x1x2_t, poly64x1x3_t): New.
	(poly64x1x4_t, poly64x2x2_t): Likewise.
	(poly64x2x3_t, poly64x2x4_t): Likewise.
	(poly64x1_t): Likewise.
	(vcreate_p64, vcombine_p64): Likewise.
	(vdup_n_p64, vdupq_n_p64): Likewise.
	(vld2_p64, vld2q_p64): Likewise.
	(vld3_p64, vld3q_p64): Likewise.
	(vld4_p64, vld4q_p64): Likewise.
	(vld2_dup_p64, vld3_dup_p64): Likewise.
	(vld4_dup_p64, vsli_n_p64): Likewise.
	(vsliq_n_p64, vst1_p64): Likewise.
	(vst1q_p64, vst2_p64): Likewise.
	(vst3_p64, vst4_p64): Likewise.
	(__aarch64_vdup_lane_p64, __aarch64_vdup_laneq_p64): Likewise.
	(__aarch64_vdupq_lane_p64, __aarch64_vdupq_laneq_p64): Likewise.
	(vget_lane_p64, vgetq_lane_p64): Likewise.
	(vreinterpret_p8_p64, vreinterpretq_p8_p64): Likewise.
	(vreinterpret_p16_p64, vreinterpretq_p16_p64): Likewise.
	(vreinterpret_p64_f16, vreinterpret_p64_f64): Likewise.
	(vreinterpret_p64_s8, vreinterpret_p64_s16): Likewise.
	(vreinterpret_p64_s32, vreinterpret_p64_s64): Likewise.
	(vreinterpret_p64_f32, vreinterpret_p64_u8): Likewise.
	(vreinterpret_p64_u16, vreinterpret_p64_u32): Likewise.
	(vreinterpret_p64_u64, vreinterpret_p64_p8): Likewise.
	(vreinterpretq_p64_f64, vreinterpretq_p64_s8): Likewise.
	(vreinterpretq_p64_s16, vreinterpretq_p64_s32): Likewise.
	(vreinterpretq_p64_s64, vreinterpretq_p64_f16): Likewise.
	(vreinterpretq_p64_f32, vreinterpretq_p64_u8): Likewise.
	(vreinterpretq_p64_u16, vreinterpretq_p64_u32): Likewise.
	(vreinterpretq_p64_u64, vreinterpretq_p64_p8): Likewise.
	(vreinterpret_f16_p64, vreinterpretq_f16_p64): Likewise.
	(vreinterpret_f32_p64, vreinterpretq_f32_p64): Likewise.
	(vreinterpret_f64_p64, vreinterpretq_f64_p64): Likewise.
	(vreinterpret_s64_p64, vreinterpretq_s64_p64): Likewise.
	(vreinterpret_u64_p64, vreinterpretq_u64_p64): Likewise.
	(vreinterpret_s8_p64, vreinterpretq_s8_p64): Likewise.
	(vreinterpret_s16_p64, vreinterpret_s32_p64): Likewise.
	(vreinterpretq_s32_p64, vreinterpret_u8_p64): Likewise.
	(vreinterpret_u16_p64, vreinterpretq_u16_p64): Likewise.
	(vreinterpret_u32_p64, vreinterpretq_u32_p64): Likewise.
	(vset_lane_p64, vsetq_lane_p64): Likewise.
	(vget_low_p64, vget_high_p64): Likewise.
	(vcombine_p64, vst2_lane_p64): Likewise.
	(vst3_lane_p64, vst4_lane_p64): Likewise.
	(vst2q_lane_p64, vst3q_lane_p64): Likewise.
	(vst4q_lane_p64, vget_lane_p64): Likewise.
	(vget_laneq_p64, vset_lane_p64): Likewise.
	(vset_laneq_p64, vcopy_lane_p64): Likewise.
	(vcopy_laneq_p64, vdup_n_p64): Likewise.
	(vdupq_n_p64, vdup_lane_p64): Likewise.
	(vdup_laneq_p64, vld1_p64): Likewise.
	(vld1q_p64, vld1_dup_p64): Likewise.
	(vld1q_dup_p64, vld1q_dup_p64): Likewise.
	(vmov_n_p64, vmovq_n_p64): Likewise.
	(vst3q_p64, vst4q_p64): Likewise.
	(vld1_lane_p64, vld1q_lane_p64): Likewise.
	(vst1_lane_p64, vst1q_lane_p64): Likewise.
	(vcopy_laneq_p64, vcopyq_laneq_p64): Likewise.
	(vdupq_laneq_p64): Likewise.

From-SVN: r242915
2016-11-28 12:41:03 +00:00
Tamar Christina
f76f4b23a4 arm_neon.h (vget_lane_p64): New.
* config/arm/arm_neon.h (vget_lane_p64): New.

From-SVN: r242914
2016-11-28 12:36:07 +00:00
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