1. 28 Nov, 2016 24 commits
    • re PR rtl-optimization/78546 (wrong code at -O2 and above) · d0570047
      	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
      Jakub Jelinek committed
    • Fix PR78556 - left shift of negative values · 82979abd
      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
      Markus Trippelsdorf committed
    • re PR fortran/78298 (ICE in lookup_decl_in_outer_ctx, bei omp-low.c:4115) · 80cf1b8b
      	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
      Jakub Jelinek committed
    • i386.md (UNSPEC_KMASKOP): New. · bf9e8b6b
      	* 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
      Uros Bizjak committed
    • re PR c++/77591 (decltype(auto) and ternary operator allow returning local… · f4bb5c17
      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
      Jakub Jelinek committed
    • * MAINTAINERS (nvptx): Remove self. · 21b0f96a
      From-SVN: r242923
      Nathan Sidwell committed
    • * gcc.dg/torture/pr78515.c: Ignore ABI extension warning. · 54856e4f
      From-SVN: r242922
      David Edelsohn committed
    • tree-vrp.c (vrp_visit_assignment_or_call): Handle simplifications to SSA names… · 1c3099cc
      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
      Richard Biener committed
    • re PR tree-optimization/78542 (wrong code at -Og results in endless loop) · 6522add2
      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
      Richard Biener committed
    • libgomp: remove config/nvptx/critical.c · 6a6951b1
      	* config/nvptx/critical.c: Delete to use generic implementation.
      
      From-SVN: r242919
      Alexander Monakov committed
    • libgomp: fix OpenMP offloading to NVPTX and correct location of generic affinity.c · c7ac071f
      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
      Jonas Hahnfeld committed
    • combine.c (simplify_if_then_else): Simplify IF_THEN_ELSE that isolates a single bit... · 51a07549
      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
      Paolo Bonzini committed
    • 2016-11-28 Tamar Christina <tamar.christina@arm.com> · 6383ff9f
      	* 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
      Tamar Christina committed
    • aarch64-builtins.c (TYPES_SETREGP): Added poly type. · 159b8724
      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
      Tamar Christina committed
    • arm_neon.h (vget_lane_p64): New. · f76f4b23
      	* config/arm/arm_neon.h (vget_lane_p64): New.
      
      From-SVN: r242914
      Tamar Christina committed
    • re PR tree-optimization/78343 (Loop is not eliminated) · b7ce4fe2
      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
      Richard Biener committed
    • [Darwin, config] Fix version number extraction to portable method · c6d01ef8
      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
      Iain Sandoe committed
    • gimple-ssa-sprintf.c (build_intmax_type_nodes): Look at UINTMAX_TYPE rather than SIZE_TYPE. · 42aa1173
      	* 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
      Jakub Jelinek committed
    • re PR lto/78211 (-fcompare-debug failure with -flto -fno-use-linker-plugin) · df8391b4
      	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
      Jakub Jelinek committed
    • avr.c (out_movhi_r_mr): Only SBIW if X is not unused after. · 19327363
      	* config/avr/avr.c (out_movhi_r_mr) [REG_X + PLUS]: Only SBIW if
      	X is not unused after.
      
      From-SVN: r242909
      Georg-Johann Lay committed
    • re PR rtl-optimization/78120 (If conversion no longer performed) · 03612f25
      	PR rtl-optimization/78120
      	* rtlanal.c (insn_rtx_cost): Revert previous change.
      
      From-SVN: r242908
      Bernd Schmidt committed
    • re PR target/41076 ([avr] pessimal code for logical OR of 8-bit fields) · 43c05816
      	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
      Georg-Johann Lay committed
    • PR c++/77907 - static init and PMF · f9438bbb
      	* constexpr.c (cxx_eval_constant_expression): Use cp_fold_convert.
      
      From-SVN: r242906
      Jason Merrill committed
    • Daily bump. · c190974f
      From-SVN: r242905
      GCC Administrator committed
  2. 27 Nov, 2016 12 commits
    • re PR ada/78524 (failure of ACATS c41104a at -O0) · 6724cebe
      	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
      Eric Botcazou committed
    • re PR ada/78531 (bootstrap broken with _FORTIFY_SOURCE enabled) · 18e5eb77
      	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
      Eric Botcazou committed
    • re PR fortran/78474 ([F08] gfortran accepts invalid submodule syntax) · e578b767
      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
      Paul Thomas committed
    • pr65655.C: Use dg-timeout-factor 2. · ae829c95
      	* g++.dg/torture/pr65655.C: Use dg-timeout-factor 2.
      
      From-SVN: r242899
      John David Anglin committed
    • [Darwin] fix PR67710 by updating 'as' specs to handle newer assembler versions. · b410cf1d
      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
      Iain Sandoe committed
    • [Darwin] Fix PR57438 by avoiding empty function bodies and trailing labels. · 03f82a6a
      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
      Iain Sandoe committed
    • [Testsuite] pr71767 Changes. · 987395fd
       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
      Dominique d'Humieres committed
    • [Darwin] Fix PR71767 - adjust the sections used where necessary. · 794fa8a6
       (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
      Iain Sandoe committed
    • [Darwin, config] Arrange for ld64 to be detected as Darwin's linker. · eb89c82f
       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
      Iain Sandoe committed
    • [Darwin, ld64] Make PIC indirections and constant labels linker-visible. · 7881b63f
      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
      Iain Sandoe committed
    • re PR libstdc++/78441 ([variant] variant_alternative doesn't allow cv qualifiers) · 3203ed5f
      	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
      Tim Shen committed
    • Daily bump. · 216c1ee8
      From-SVN: r242891
      GCC Administrator committed
  3. 26 Nov, 2016 2 commits
  4. 25 Nov, 2016 2 commits