David Edelsohn [Mon, 28 Nov 2016 19:57:50 +0000 (14:57 -0500)]
Fix typo.
From-SVN: r242931
Jakub Jelinek [Mon, 28 Nov 2016 19:20:02 +0000 (20:20 +0100)]
re PR c++/72808 (ICE on valid c++ code in verify_type (gcc/tree.c:14047))
PR c++/72808
* decl.c (finish_enum_value_list): Call fixup_type_variants on
current_class_type after
insert_late_enum_def_into_classtype_sorted_fields.
* g++.dg/debug/pr72808.C: New test.
Co-Authored-By: Jason Merrill <jason@redhat.com>
From-SVN: r242930
Jakub Jelinek [Mon, 28 Nov 2016 19:15:51 +0000 (20:15 +0100)]
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
Markus Trippelsdorf [Mon, 28 Nov 2016 18:33:19 +0000 (18:33 +0000)]
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
Jakub Jelinek [Mon, 28 Nov 2016 17:31:37 +0000 (18:31 +0100)]
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
Uros Bizjak [Mon, 28 Nov 2016 16:53:17 +0000 (17:53 +0100)]
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
Jakub Jelinek [Mon, 28 Nov 2016 15:21:53 +0000 (16:21 +0100)]
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
Nathan Sidwell [Mon, 28 Nov 2016 15:18:45 +0000 (15:18 +0000)]
* MAINTAINERS (nvptx): Remove self.
From-SVN: r242923
David Edelsohn [Mon, 28 Nov 2016 15:11:27 +0000 (15:11 +0000)]
* gcc.dg/torture/pr78515.c: Ignore ABI extension warning.
From-SVN: r242922
Richard Biener [Mon, 28 Nov 2016 15:04:45 +0000 (15:04 +0000)]
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 [Mon, 28 Nov 2016 15:03:55 +0000 (15:03 +0000)]
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
Alexander Monakov [Mon, 28 Nov 2016 13:50:23 +0000 (16:50 +0300)]
libgomp: remove config/nvptx/critical.c
* config/nvptx/critical.c: Delete to use generic implementation.
From-SVN: r242919
Jonas Hahnfeld [Mon, 28 Nov 2016 13:42:50 +0000 (13:42 +0000)]
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
Paolo Bonzini [Mon, 28 Nov 2016 13:21:02 +0000 (13:21 +0000)]
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
Tamar Christina [Mon, 28 Nov 2016 12:47:02 +0000 (12:47 +0000)]
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
Tamar Christina [Mon, 28 Nov 2016 12:41:03 +0000 (12:41 +0000)]
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
Tamar Christina [Mon, 28 Nov 2016 12:36:07 +0000 (12:36 +0000)]
arm_neon.h (vget_lane_p64): New.
* config/arm/arm_neon.h (vget_lane_p64): New.
From-SVN: r242914
Richard Biener [Mon, 28 Nov 2016 10:49:12 +0000 (10:49 +0000)]
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
Iain Sandoe [Mon, 28 Nov 2016 10:29:19 +0000 (10:29 +0000)]
[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
Jakub Jelinek [Mon, 28 Nov 2016 10:01:30 +0000 (11:01 +0100)]
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
Jakub Jelinek [Mon, 28 Nov 2016 10:00:43 +0000 (11:00 +0100)]
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
Georg-Johann Lay [Mon, 28 Nov 2016 09:28:45 +0000 (09:28 +0000)]
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
Bernd Schmidt [Mon, 28 Nov 2016 08:59:01 +0000 (08:59 +0000)]
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
Georg-Johann Lay [Mon, 28 Nov 2016 08:40:11 +0000 (08:40 +0000)]
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
Jason Merrill [Mon, 28 Nov 2016 04:00:36 +0000 (23:00 -0500)]
PR c++/77907 - static init and PMF
* constexpr.c (cxx_eval_constant_expression): Use cp_fold_convert.
From-SVN: r242906
GCC Administrator [Mon, 28 Nov 2016 00:16:19 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r242905
Eric Botcazou [Sun, 27 Nov 2016 22:04:13 +0000 (22:04 +0000)]
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
Eric Botcazou [Sun, 27 Nov 2016 20:23:31 +0000 (20:23 +0000)]
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
Paul Thomas [Sun, 27 Nov 2016 19:00:00 +0000 (19:00 +0000)]
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
John David Anglin [Sun, 27 Nov 2016 17:40:53 +0000 (17:40 +0000)]
pr65655.C: Use dg-timeout-factor 2.
* g++.dg/torture/pr65655.C: Use dg-timeout-factor 2.
From-SVN: r242899
Iain Sandoe [Sun, 27 Nov 2016 15:07:22 +0000 (15:07 +0000)]
[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
Iain Sandoe [Sun, 27 Nov 2016 14:50:58 +0000 (14:50 +0000)]
[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
Dominique d'Humieres [Sun, 27 Nov 2016 14:41:22 +0000 (15:41 +0100)]
[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
Iain Sandoe [Sun, 27 Nov 2016 14:34:54 +0000 (14:34 +0000)]
[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
Iain Sandoe [Sun, 27 Nov 2016 14:29:36 +0000 (14:29 +0000)]
[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
Iain Sandoe [Sun, 27 Nov 2016 14:21:51 +0000 (14:21 +0000)]
[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
Tim Shen [Sun, 27 Nov 2016 00:32:04 +0000 (00:32 +0000)]
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
GCC Administrator [Sun, 27 Nov 2016 00:16:21 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r242891
Prathamesh Kulkarni [Sat, 26 Nov 2016 10:41:55 +0000 (10:41 +0000)]
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
GCC Administrator [Sat, 26 Nov 2016 00:16:18 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r242887
Janne Blomqvist [Fri, 25 Nov 2016 20:06:24 +0000 (22:06 +0200)]
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
Jakub Jelinek [Fri, 25 Nov 2016 19:24:22 +0000 (20:24 +0100)]
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
Jakub Jelinek [Fri, 25 Nov 2016 18:56:50 +0000 (19:56 +0100)]
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
Vladimir Makarov [Fri, 25 Nov 2016 17:42:21 +0000 (17:42 +0000)]
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
Janus Weil [Fri, 25 Nov 2016 17:22:37 +0000 (18:22 +0100)]
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
Jakub Jelinek [Fri, 25 Nov 2016 17:12:29 +0000 (18:12 +0100)]
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
Martin Liska [Fri, 25 Nov 2016 14:23:54 +0000 (15:23 +0100)]
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
Martin Liska [Fri, 25 Nov 2016 14:23:25 +0000 (15:23 +0100)]
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
Richard Biener [Fri, 25 Nov 2016 14:05:04 +0000 (14:05 +0000)]
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
Paul Thomas [Fri, 25 Nov 2016 12:23:43 +0000 (12:23 +0000)]
[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
Bin Cheng [Fri, 25 Nov 2016 11:45:43 +0000 (11:45 +0000)]
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
Richard Biener [Fri, 25 Nov 2016 11:40:30 +0000 (11:40 +0000)]
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
Richard Biener [Fri, 25 Nov 2016 10:22:57 +0000 (10:22 +0000)]
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
Eric Botcazou [Fri, 25 Nov 2016 10:04:20 +0000 (10:04 +0000)]
Remove conflict marker
From-SVN: r242871
Thomas Preud'homme [Fri, 25 Nov 2016 10:03:46 +0000 (10:03 +0000)]
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
Thomas Preud'homme [Fri, 25 Nov 2016 10:03:38 +0000 (10:03 +0000)]
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
Eric Botcazou [Fri, 25 Nov 2016 09:59:45 +0000 (09:59 +0000)]
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
Martin Jambor [Fri, 25 Nov 2016 09:49:19 +0000 (10:49 +0100)]
[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
James Greenhalgh [Fri, 25 Nov 2016 09:25:31 +0000 (09:25 +0000)]
[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
Richard Biener [Fri, 25 Nov 2016 08:59:28 +0000 (08:59 +0000)]
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
Jakub Jelinek [Fri, 25 Nov 2016 08:51:38 +0000 (09:51 +0100)]
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
Richard Sandiford [Fri, 25 Nov 2016 08:23:08 +0000 (08:23 +0000)]
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
Richard Sandiford [Fri, 25 Nov 2016 08:20:40 +0000 (08:20 +0000)]
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
Richard Sandiford [Fri, 25 Nov 2016 08:18:26 +0000 (08:18 +0000)]
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
Richard Sandiford [Fri, 25 Nov 2016 08:17:46 +0000 (08:17 +0000)]
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
Senthil Kumar Selvaraj [Fri, 25 Nov 2016 08:15:42 +0000 (08:15 +0000)]
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
Jakub Jelinek [Fri, 25 Nov 2016 08:03:51 +0000 (09:03 +0100)]
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
GCC Administrator [Fri, 25 Nov 2016 00:16:13 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r242857
Martin Sebor [Thu, 24 Nov 2016 22:45:18 +0000 (15:45 -0700)]
PR tree-optimization/78476 - snprintf(0, 0, ...) with known arguments not optimized away
gcc/testsuite/ChangeLog:
PR tree-optimization/78476
* gcc.dg/tree-ssa/builtin-sprintf-5.c: New test.
gcc/ChangeLog:
PR tree-optimization/78476
* gimple-ssa-sprintf.c (struct pass_sprintf_length::call_info):
Add a member.
(handle_gimple_call): Adjust signature.
(try_substitute_return_value): Remove calls to bounded functions
with zero buffer size whose result is known.
(pass_sprintf_length::execute): Adjust call to handle_gimple_call.
From-SVN: r242854
Rainer Orth [Thu, 24 Nov 2016 22:30:54 +0000 (22:30 +0000)]
Fix bootstrap with !ASM_OUTPUT_MAX_SKIP_ALIGN
* varasm.c (assemble_start_function): Wrap align_log definition in
ASM_OUTPUT_MAX_SKIP_ALIGN.
From-SVN: r242853
Uros Bizjak [Thu, 24 Nov 2016 21:48:13 +0000 (22:48 +0100)]
i386.md (wide AND insn to QImode splitter): Use explicit mode macros.
* config/i386/i386.md (wide AND insn to QImode splitter): Use
explicit mode macros.
(wide OR insn to QImode splitter): Ditto.
From-SVN: r242852
Ben Elliston [Thu, 24 Nov 2016 21:38:27 +0000 (08:38 +1100)]
config.guess: Import latest version.
* config.guess: Import latest version.
* config.sub: Likewise.
From-SVN: r242851
Uros Bizjak [Thu, 24 Nov 2016 21:12:19 +0000 (22:12 +0100)]
* config/i386/i386.md: Move some more patterns around.
From-SVN: r242850
Vladimir Makarov [Thu, 24 Nov 2016 19:54:27 +0000 (19:54 +0000)]
re PR rtl-optimization/77541 (wrong code with 512bit vectors of int128 @ -O1)
2016-11-24 Vladimir Makarov <vmakarov@redhat.com>
PR rtl-optimization/77541
* lra-constraints.c (struct input_reload): Add field match_p.
(get_reload_reg): Check modes of input reloads to generate unique
value reload pseudo.
(match_reload): Add input reload pseudo for the current insn.
2016-11-24 Vladimir Makarov <vmakarov@redhat.com>
PR rtl-optimization/77541
* gcc.target/i386/pr77541.c: New.
From-SVN: r242848
Steven G. Kargl [Thu, 24 Nov 2016 18:27:58 +0000 (18:27 +0000)]
re PR fortran/78500 (ICE in gfc_check_vardef_context, at fortran/expr.c:5289)
2016-11-24 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/78500
* expr.c (gfc_check_vardef_contextm): Fix NULL pointer dereference.
* interface.c (matching_typebound_op): Ditto.
2016-11-24 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/78500
* gfortran.dg/class_result_4.f90: New test.
From-SVN: r242846
James Greenhalgh [Thu, 24 Nov 2016 18:19:29 +0000 (18:19 +0000)]
[Patch AArch64 13/17] Enable _Float16 for AArch64
gcc/
* config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins): Update
__FLT_EVAL_METHOD__ and __FLT_EVAL_METHOD_C99__ when we switch
architecture levels.
* config/aarch64/aarch64.c (aarch64_promoted_type): Only promote
the aarch64_fp16_type_node, not all HFmode types.
(aarch64_libgcc_floating_mode_supported_p): Support HFmode.
(aarch64_scalar_mode_supported_p): Likewise.
(aarch64_excess_precision): New.
(TARGET_LIBGCC_FLOATING_MODE_SUPPORTED_P): Define.
(TARGET_SCALAR_MODE_SUPPORTED_P): Likewise.
(TARGET_C_EXCESS_PRECISION): Likewise.
gcc/testsuite/
* gcc.target/aarch64/_Float16_1.c: New.
* gcc.target/aarch64/_Float16_2.c: Likewise.
* gcc.target/aarch64/_Float16_3.c: Likewise.
From-SVN: r242845
James Greenhalgh [Thu, 24 Nov 2016 18:16:55 +0000 (18:16 +0000)]
[Patch libgcc AArch64 12/17] Enable hfmode soft-float conversions and truncations
gcc/
* config/aarch64/aarch64-c.c (aarch64_scalar_mode_supported_p): New.
(TARGET_SCALAR_MODE_SUPPORTED_P): Define.
libgcc/
* config/aarch64/sfp-machine.h (_FP_NANFRAC_H): Define.
(_FP_NANSIGN_H): Likewise.
* config/aarch64/t-softfp (softfp_extensions): Add hftf.
(softfp_truncations): Add tfhf.
(softfp_extras): Add required conversion functions.
From-SVN: r242844
James Greenhalgh [Thu, 24 Nov 2016 18:14:36 +0000 (18:14 +0000)]
[Patch AArch64 11/17] Add floatdihf2 and floatunsdihf2 patterns
gcc/
* config/aarch64/aarch64.md (<optab>sihf2): Convert to expand.
(<optab>dihf2): Likewise.
(aarch64_fp16_<optab><mode>hf2): New.
gcc/testsuite/
* gcc.target/aarch64/floatdihf2_1.c: New.
From-SVN: r242843
Alexander Monakov [Thu, 24 Nov 2016 18:10:42 +0000 (21:10 +0300)]
Allow -fopenmp in NVPTX mkoffload
PR target/67822
* config/nvptx/mkoffload.c (main): Allow -fopenmp.
From-SVN: r242842
Eric Botcazou [Thu, 24 Nov 2016 15:30:17 +0000 (15:30 +0000)]
sparc-common.c (sparc_option_optimization_table): Enable REE at -O2 and higher.
* common/config/sparc/sparc-common.c (sparc_option_optimization_table):
Enable REE at -O2 and higher.
* config/sparc/sparc.c (sparc_option_override): Disable it by default
in 32-bit mode.
From-SVN: r242841
Kyrylo Tkachov [Thu, 24 Nov 2016 15:22:34 +0000 (15:22 +0000)]
[TER] PR target/48863 : Don't replace expressions across local register variable definitions
PR target/48863
PR inline-asm/70184
* tree-ssa-ter.c (temp_expr_table): Add reg_vars_cnt field.
(new_temp_expr_table): Initialise reg_vars_cnt.
(free_temp_expr_table): Release reg_vars_cnt.
(process_replaceable): Add reg_vars_cnt argument, set reg_vars_cnt
field of TAB.
(find_replaceable_in_bb): Use the above to record register variable
write occurrences and cancel replacement across them.
* gcc.target/arm/pr48863.c: New test.
From-SVN: r242840
Eric Botcazou [Thu, 24 Nov 2016 15:01:32 +0000 (15:01 +0000)]
re PR rtl-optimization/78437 (invalid sign-extend conversion in REE pass)
PR rtl-optimization/78437
* ree.c (get_uses): New function.
(combine_reaching_defs): When a copy is needed, return false if any
reaching use of the source register reads it in a mode larger than
the mode it is set in and WORD_REGISTER_OPERATIONS is true.
From-SVN: r242839
Martin Liska [Thu, 24 Nov 2016 12:58:45 +0000 (13:58 +0100)]
Dump probability for edges a frequency for BBs
* gimple-pretty-print.c (dump_edge_probability): New function.
(dump_gimple_switch): Dump label edge probabilities.
(dump_gimple_cond): Likewise.
(dump_gimple_label): Dump
(dump_gimple_bb_header): Dump basic block frequency.
(pp_cfg_jump): Replace e->dest argument with e.
(dump_implicit_edges): Likewise.
* tree-ssa-loop-ivopts.c (get_scaled_computation_cost_at):
Use gimple_bb (at) instead of at->bb.
* gcc.dg/builtin-unreachable-6.c: Update test to not to scan
parts for frequencies/probabilities.
* gcc.dg/pr34027-1.c: Likewise.
* gcc.dg/strict-overflow-2.c: Likewise.
* gcc.dg/tree-ssa/
20040703-1.c: Likewise.
* gcc.dg/tree-ssa/builtin-sprintf-2.c: Likewise.
* gcc.dg/tree-ssa/pr32044.c: Likewise.
* gcc.dg/tree-ssa/vector-3.c: Likewise.
* gcc.dg/tree-ssa/vrp101.c: Likewise.
* gcc.dg/tree-ssa/dump-2.c: New test.
From-SVN: r242837
Bernd Schmidt [Thu, 24 Nov 2016 12:54:56 +0000 (12:54 +0000)]
common.opt (flimit-function-alignment): New.
gcc/
* common.opt (flimit-function-alignment): New.
* doc/invoke.texi (-flimit-function-alignment): Document.
* emit-rtl.h (struct rtl_data): Add max_insn_address field.
* final.c (shorten_branches): Set it.
* varasm.c (assemble_start_function): Limit alignment if
requested.
gcc/testsuite/
* gcc.target/i386/align-limit.c: New test.
From-SVN: r242836
Richard Biener [Thu, 24 Nov 2016 12:25:22 +0000 (12:25 +0000)]
re PR tree-optimization/71595 (ICE on valid code at -O2 and -O3 on x86_64-linux-gnu: in check_loop_closed_ssa_use, at tree-ssa-loop-manip.c:704)
2016-11-24 Richard Biener <rguenther@suse.de>
PR tree-optimization/71595
* cfgloopmanip.h (remove_path): Add irred_invalidated and
loop_closed_ssa_invalidated parameters, defaulted to NULL.
* cfgloopmanip.c (remove_path): Likewise, pass them along to
called functions. Only fix irred flags if the caller didn't
request state.
* tree-ssa-loop-ivcanon.c (unloop_loops): Use add_bb_to_loop.
(unloop_loops): Pass irred_invalidated and loop_closed_ssa_invalidated
to remove_path.
* gcc.dg/torture/pr71595.c: New testcase.
From-SVN: r242835
Bernd Schmidt [Thu, 24 Nov 2016 12:22:16 +0000 (12:22 +0000)]
re PR rtl-optimization/78120 (If conversion no longer performed)
PR rtl-optimization/78120
* ifcvt.c (noce_conversion_profitable_p): Check original cost in all
cases, and additionally test against max_seq_cost for speed
optimization.
(noce_process_if_block): Compute an estimate for the original cost when
optimizing for speed, using the minimum of then and else block costs.
testsuite/
PR rtl-optimization/78120
* gcc.target/i386/pr78120.c: New test.
From-SVN: r242834
Bernd Schmidt [Thu, 24 Nov 2016 12:17:52 +0000 (12:17 +0000)]
re PR rtl-optimization/78120 (If conversion no longer performed)
PR rtl-optimization/78120
* rtlanal.c (insn_rtx_cost): Use set_rtx_cost.
From-SVN: r242833
Bernd Schmidt [Thu, 24 Nov 2016 12:16:47 +0000 (12:16 +0000)]
re PR rtl-optimization/78120 (If conversion no longer performed)
PR rtl-optimization/78120
* config/i386/i386.c (ix86_rtx_costs): Fully handle SETs.
From-SVN: r242832
Bin Cheng [Thu, 24 Nov 2016 12:09:19 +0000 (12:09 +0000)]
match.pd: Refine type conversion in result expr for below pattern: (cond (cmp (convert1?
* match.pd: Refine type conversion in result expr for below pattern:
(cond (cmp (convert1? x) c1) (convert2? x) c2) -> (minmax (x c)).
From-SVN: r242831
Eric Botcazou [Thu, 24 Nov 2016 12:02:53 +0000 (12:02 +0000)]
re PR middle-end/78429 (ICE in set_value_range, at tree-vrp.c on non-standard boolean)
PR middle-end/78429
* tree.h (wi::fits_to_boolean_p): New predicate.
(wi::fits_to_tree_p): Use it for boolean types.
* tree.c (int_fits_type_p): Likewise.
From-SVN: r242829
Martin Liska [Thu, 24 Nov 2016 11:26:12 +0000 (11:26 +0000)]
cp_parser_range_for: use safe_push instead of quick_push (PR
PR bootstrap/78493
* parser.c (cp_parser_range_for): Use safe_push instead of quick_push.
PR bootstrap/78493
* g++.dg/cpp1z/decomp18.C: New test.
From-SVN: r242828
Naveen H.S [Thu, 24 Nov 2016 10:24:15 +0000 (10:24 +0000)]
ldp_stp_1.c: Add -mcpu=generic.
2016-11-23 Naveen H.S <Naveen.Hurugalawadi@caviumnetworks.com>
* gcc.target/aarch64/ldp_stp_1.c : Add -mcpu=generic.
* gcc.target/aarch64/store-pair-1.c : Likewise.
From-SVN: r242827
Richard Biener [Thu, 24 Nov 2016 09:45:01 +0000 (09:45 +0000)]
re PR middle-end/71762 (~X & Y to X < Y doesn't work for uninitialized values)
2016-11-23 Richard Biener <rguenther@suse.de>
PR middle-end/71762
* match.pd ((~X & Y) -> X < Y, (X & ~Y) -> Y < X,
(~X | Y) -> X <= Y, (X | ~Y) -> Y <= X): Remove.
* gcc.dg/torture/pr71762-1.c: New testcase.
* gcc.dg/torture/pr71762-2.c: Likewise.
* gcc.dg/torture/pr71762-3.c: Likewise.
* gcc.dg/tree-ssa/forwprop-28.c: XFAIL.
From-SVN: r242822
Naveen H.S [Thu, 24 Nov 2016 09:42:36 +0000 (09:42 +0000)]
fmaxmin.c: Add -fno-vect-cost-model.
2016-11-23 Naveen H.S <Naveen.Hurugalawadi@caviumnetworks.com>
* gcc.target/aarch64/fmaxmin.c : Add -fno-vect-cost-model.
* gcc.target/aarch64/fmul_fcvt_2.c : Likewise.
* gcc.target/aarch64/vect-abs-compile.c : Likewise.
* gcc.target/aarch64/vect-clz.c : Likewise.
* gcc.target/aarch64/vect-fcm-eq-d.c : Likewise.
* gcc.target/aarch64/vect-fcm-ge-d.c : Likewise.
* gcc.target/aarch64/vect-fcm-gt-d.c : Likewise.
* gcc.target/aarch64/vect-fmovd-zero.c : Likewise.
* gcc.target/aarch64/vect-fmovd.c : Likewise.
* gcc.target/aarch64/vect-fmovf-zero.c : Likewise.
* gcc.target/aarch64/vect-fmovf.c : Likewise.
* gcc.target/aarch64/vect_ctz_1.c : Likewise.
From-SVN: r242821
Martin Liska [Thu, 24 Nov 2016 09:42:18 +0000 (10:42 +0100)]
Fix print_node for CONSTRUCTORs
* print-tree.c (struct bucket): Remove.
(print_node): Add new argument which drives whether a tree node
is printed briefly or not.
(debug_tree): Replace a custom hash table with hash_set<T>.
* print-tree.h (print_node): Add the argument.
From-SVN: r242820
Chung-Lin Tang [Thu, 24 Nov 2016 09:28:02 +0000 (09:28 +0000)]
nios2.c (nios2_init_libfuncs): Add ATTRIBUTE_UNUSED.
2016-11-24 Chung-Lin Tang <cltang@codesourcery.com>
* config/nios2/nios2.c (nios2_init_libfuncs): Add ATTRIBUTE_UNUSED.
From-SVN: r242819
Peter Bergner [Thu, 24 Nov 2016 02:07:51 +0000 (20:07 -0600)]
re PR target/78458 (LRA ICE building libgcc for powerpc-linux-gnuspe e500v2)
gcc/
PR target/78458
* config/rs6000/rs6000.h (HARD_REGNO_CALLER_SAVE_MODE): Return MODE
if it is at least NREGS wide.
gcc/testsuite/
PR target/78458
* gcc.target/powerpc/pr78458.c: New.
From-SVN: r242818
GCC Administrator [Thu, 24 Nov 2016 00:16:15 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r242817
Joseph Myers [Wed, 23 Nov 2016 23:34:05 +0000 (23:34 +0000)]
Fix e500 offset handling for TImode.
Given my previous fix for a missing insn pattern for e500, building
glibc runs into an assembler error "Error: operand out of range (256
is not between 0 and 248)". This comes from an insn:
(insn 115 1209 1210 (set (reg:DF 27 27 [orig:294 _129 ] [294])
(subreg:DF (mem/c:TI (plus:SI (reg/f:SI 1 1)
(const_int 256 [0x100])) [14 %sfp+256 S16 A128]) 0)) 1909 {*frob_df_ti}
(nil))
This patch adjusts the offset handling for TImode - and TDmode and
PTImode in case such subregs can arise for them - to be the same as
for TFmode, so that proper SPE offset checks are made in the
TARGET_E500_DOUBLE case.
This allows the glibc build to complete. Testing shows 372 FAILs
across the gcc, g++ and libstdc++ testsuites; more cleanup is
certainly needed, but this gets to the point where the toolchain at
least builds so it's possible to compare test results when fixing
bugs.
* config/rs6000/rs6000.c (rs6000_legitimate_offset_address_p): For
TARGET_E500_DOUBLE. handle TDmode, TImode and PTImode the same as
TFmode, IFmode and KFmode.
From-SVN: r242814
Joseph Myers [Wed, 23 Nov 2016 23:32:54 +0000 (23:32 +0000)]
Add another e500 subreg pattern.
Building glibc for powerpc-linux-gnuspe --enable-e500-double, given
the patch <https://gcc.gnu.org/ml/gcc-patches/2016-11/msg02404.html>
applied, fails with errors such as:
../sysdeps/ieee754/ldbl-128ibm/s_modfl.c: In function '__modfl':
../sysdeps/ieee754/ldbl-128ibm/s_modfl.c:91:1: error: unrecognizable insn:
}
^
(insn 31 30 32 2 (set (reg:DF 203)
(subreg:DF (reg:TI 202) 8)) "../sysdeps/ieee754/ldbl-128ibm/s_modfl.c":44 -1
(nil))
../sysdeps/ieee754/ldbl-128ibm/s_modfl.c:91:1: internal compiler error: in extract_insn, at recog.c:2311
This patch adds an insn pattern similar to various patterns already
present to handle extracting such a subreg. This allows the glibc
build to get further, until it runs into an assembler error for which
I have another patch.
gcc:
* config/rs6000/spe.md (*frob_<SPE64:mode>_ti_8): New insn
pattern.
gcc/testsuite:
* gcc.c-torture/compile/
20161123-1.c: New test.
From-SVN: r242813