- 18 Jan, 2018 13 commits
-
-
2018-01-18 Christophe Lyon <christophe.lyon@linaro.org> * gcc.target/arm/xor-and.c: Fix dg-options and dg-add-options order. From-SVN: r256845
Christophe Lyon committed -
From-SVN: r256844
Boris Kolpackov committed -
https://gcc.gnu.org/ml/gcc-patches/2018-01/msg01638.html PR c++/83160 * cp-tree.h (mark_use): Declare. * expr.c (mark_use): Make extern. * call.c (direct_reference_binding): Set inner conv's rvaluedness_matches_p, if it is an identity. (convert_like_real): Mark lvalue or rvalue use for identity as rvaledness_matches_p demands. PR c++/83160 * g++.dg/cpp0x/pr83160.C: New. From-SVN: r256842
Nathan Sidwell committed -
re PR tree-optimization/83887 ([graphite] ICE in verify_dominators, at dominance.c:1184 (error: dominator of 3 should be 21, not 18)) 2018-01-18 Richard Biener <rguenther@suse.de> PR tree-optimization/83887 * graphite-scop-detection.c (scop_detection::get_nearest_dom_with_single_entry): Remove. (scop_detection::get_nearest_pdom_with_single_exit): Likewise. (scop_detection::merge_sese): Re-implement with a flood-fill algorithm that properly finds a SESE region if it exists. * gcc.dg/graphite/pr83887.c: New testcase. * gfortran.dg/graphite/pr83887.f90: Likewise. * gfortran.dg/graphite/pr83887.f: Likewise. From-SVN: r256841
Richard Biener committed -
The builtin-bswap-1.c and builtin-bswap16-1.c are pretty annoying at the moment. They force an explicit armv6 option that is a thumb1 target, so if you're testing a toolchain configured with something like --with-cpu=cortex-a15 --with-float=hard --with-mode=thumb you'll get those pesky errors about Thumb1 hard-float not being implemented, even though the tests don't relate to floating-point functionality at all. I *think* this is also due to the wrong order of dg-options and dg-require-effective-target directives that might end up not doing a proper effective target check. The solution in this patch is to commonise the code and create a couple of tests for each. One tests an armv6t2 target. This allows us to test an ARM or a Thumb2 target. The second one sets an armv6-m target, which is a Thumb1 target. The dg-add-options machinery for arm_arch_v6m knows how to add the right -mfloat-abi=soft option. With this patch we end up testing all of ARM, Thumb1, Thumb2 codegen whereas before we only ever tried testing Thumb1, if the multilib options happened to line up just right, and would give an ugly error otherwise. Now, if the multilib options don't allow the test it should just appear as UNSUPPORTED. PR target/65578 * gcc.target/arm/builtin-bswap.x: New file. * gcc.target/arm/builtin-bswap-1.c: Include the above. Add checks and options for armv6t2. * gcc.target/arm/builtin-bswap-2.c: Include the above. Add checks and options for Thumb1. * gcc.target/arm/builtin-bswap16.x: New file. * gcc.target/arm/builtin-bswap16-1.c: Include the above. Add checks and options for armv6t2. * gcc.target/arm/builtin-bswap16-2.c: Include the above. Add checks and options for Thumb1. From-SVN: r256840
Kyrylo Tkachov committed -
2018-01-18 Christophe Lyon <christophe.lyon@linaro.org> * gcc.target/arm/pr40887.c: Fix dg-options and dg-add-options order. From-SVN: r256839
Christophe Lyon committed -
PR c/61240 * match.pd ((P + A) - P, P - (P + A), (P + A) - (P + B)): For pointer_diff optimizations use view_convert instead of convert. * gcc.dg/pr61240.c: New test. From-SVN: r256838
Jakub Jelinek committed -
2018-01-17 Harald Anlauf <anlauf@gmx.de> PR fortran/83864 * expr.c (add_init_expr_to_sym): Do not dereference NULL pointer. 2018-01-17 Harald Anlauf <anlauf@gmx.de> PR fortran/83864 * gfortran.dg/pr83864.f90: New test. From-SVN: r256837
Harald Anlauf committed -
* MAINTAINERS (write after approval): Add myself. From-SVN: r256836
Siddhesh Poyarekar committed -
PR go/83787 compiler: pass int to makechan, call makechan64 when appropriate The update to 1.10beta1 changed makechan to take int instead of int64, and added a makechan64 call for large values. Since the size is the last argument to makechan, the old compiler which always passed a 64-bit int worked fine on 64-bit systems and little-endian 32-bit systems, but broke on big-endian 32-bit systems. This CL fixes the compiler to use the appropriate types. This fixes GCC PR 83787. Reviewed-on: https://go-review.googlesource.com/88077 From-SVN: r256835
Ian Lance Taylor committed -
re PR testsuite/83883 (FAIL: gcc.dg/tree-ssa/ssa-dse-26.c scan-tree-dump-times dse1 "Deleted dead store" 2 (found 4 times)) PR testsuite/83883 * gcc.dg/tree-ssa/ssa-dse-26.c: Tighten expected output. From-SVN: r256833
Jeff Law committed -
rs6000.md (*call_indirect_nonlocal_sysv<mode>): Generate different code for -mno-speculate-indirect-jumps. [gcc] 2018-01-17 Bill Schmidt <wschmidt@linux.vnet.ibm.com> * config/rs6000/rs6000.md (*call_indirect_nonlocal_sysv<mode>): Generate different code for -mno-speculate-indirect-jumps. (*call_value_indirect_nonlocal_sysv<mode>): Likewise. (*call_indirect_aix<mode>): Disable for -mno-speculate-indirect-jumps. (*call_indirect_aix<mode>_nospec): New define_insn. (*call_value_indirect_aix<mode>): Disable for -mno-speculate-indirect-jumps. (*call_value_indirect_aix<mode>_nospec): New define_insn. (*sibcall_nonlocal_sysv<mode>): Generate different code for -mno-speculate-indirect-jumps. (*sibcall_value_nonlocal_sysv<mode>): Likewise. [gcc/testsuite] 2018-01-17 Bill Schmidt <wschmidt@linux.vnet.ibm.com> * gcc.target/powerpc/safe-indirect-jump-1.c: Remove endian restriction, but still restrict to 64-bit. * gcc.target/powerpc/safe-indirect-jump-7.c: New file. * gcc.target/powerpc/safe-indirect-jump-8.c: New file. From-SVN: r256831
Bill Schmidt committed -
From-SVN: r256827
GCC Administrator committed
-
- 17 Jan, 2018 27 commits
-
-
2018-01-17 Harald Anlauf <anlauf@gmx.de> PR fortran/83874 * decl.c (add_init_expr_to_sym): Do not dereference NULL pointer. 2018-01-17 Harald Anlauf <anlauf@gmx.de> PR fortran/83874 * gfortran.dg/pr83874.f90: New test. From-SVN: r256824
Harald Anlauf committed -
PR c++/83824 * parser.c (attr_chainon): New function. (cp_parser_label_for_labeled_statement, cp_parser_decl_specifier_seq, cp_parser_namespace_definition, cp_parser_init_declarator, cp_parser_type_specifier_seq, cp_parser_parameter_declaration, cp_parser_gnu_attributes_opt): Use it. (cp_parser_member_declaration, cp_parser_objc_class_ivars, cp_parser_objc_struct_declaration): Likewise. Don't reset prefix_attributes if attributes is error_mark_node. * g++.dg/cpp0x/pr83824.C: New test. From-SVN: r256823
Jakub Jelinek committed -
[gcc] 2018-01-17 Michael Meissner <meissner@linux.vnet.ibm.com> * config/rs6000/rs6000.c (rs6000_emit_move): If we load or store a long double type, set the flags for noting the default long double type, even if we don't pass or return a long double type. [gcc/testsuite] 2018-01-17 Michael Meissner <meissner@linux.vnet.ibm.com> * gcc.target/powerpc/gnuattr1.c: New test to make sure we set the appropriate .gnu_attribute for the long double type, if we use the long double type, but do not generate any calls. * gcc.target/powerpc/gnuattr2.c: Likewise. * gcc.target/powerpc/gnuattr3.c: Likewise. From-SVN: r256822
Michael Meissner committed -
re PR c++/78344 (ICE on invalid c++ code on x86_64-linux-gnu (internal compiler error: tree check: expected tree_list, have error_mark in cp_check_const_attributes, at cp/decl2.c:1347)) /cp 2018-01-17 Paolo Carlini <paolo.carlini@oracle.com> PR c++/78344 * decl.c (grokdeclarator): Do not append the error_mark_node due to an erroneous optional attribute-specifier-seq. /testsuite 2018-01-17 Paolo Carlini <paolo.carlini@oracle.com> PR c++/78344 * g++.dg/cpp0x/alignas13.C: New. From-SVN: r256821
Paolo Carlini committed -
The runtime package was hard-coded non-escape, and the escape analysis was not run for the runtime package. This CL removes the hard-code, and lets the escape analysis decide. It is not allowed for local variables and closures in the runtime to be heap allocated. This CL adds the check that make sure that they indeed do not escape. The escape analysis is always run when compiling the runtime now. Fixes golang/go#17431 Reviewed-on: https://go-review.googlesource.com/86246 From-SVN: r256820
Ian Lance Taylor committed -
PR c++/83897 * cp-gimplify.c (cp_maybe_instrument_return): Handle CLEANUP_POINT_EXPR. * g++.dg/cpp0x/pr83897.C: New test. From-SVN: r256819
Jakub Jelinek committed -
PR ipa/83051 * ipa-inline.c (flatten_function): Do not overwrite final inlining failure. * gcc.c-torture/compile/pr83051-2.c: New testcase. From-SVN: r256818
Jan Hubicka committed -
/cp 2018-01-17 Paolo Carlini <paolo.carlini@oracle.com> PR c++/81054 * constexpr.c (ensure_literal_type_for_constexpr_object): Return error_mark_node when we give an error. * decl.c (cp_finish_decl): Use the latter. /testsuite 2018-01-17 Paolo Carlini <paolo.carlini@oracle.com> PR c++/81054 * g++.dg/cpp0x/constexpr-ice19.C: New. From-SVN: r256817
Paolo Carlini committed -
/cp 2018-01-17 Paolo Carlini <paolo.carlini@oracle.com> PR c++/81054 * constexpr.c (ensure_literal_type_for_constexpr_object): Return error_mark_node when we give an error. * decl.c (cp_finish_decl): Use the latter. /testsuite 2018-01-17 Paolo Carlini <paolo.carlini@oracle.com> PR c++/81054 * g++.dg/cpp0x/constexpr-ice19.C: New. From-SVN: r256816
Paolo Carlini committed -
[testsuite] 2018-01-17 Will Schmidt <will_schmidt@vnet.ibm.com> * gcc.target/powerpc/fold-vec-mergehl-char.c: New. * gcc.target/powerpc/fold-vec-mergehl-double.c: New. * gcc.target/powerpc/fold-vec-mergehl-float.c: New. * gcc.target/powerpc/fold-vec-mergehl-int.c: New. * gcc.target/powerpc/fold-vec-mergehl-longlong.c: New. * gcc.target/powerpc/fold-vec-mergehl-pixel.c: New. * gcc.target/powerpc/fold-vec-mergehl-short.c: New. * gcc.target/powerpc/builtins-1-be-folded.c: New. * gcc.target/powerpc/builtins-1-le-folded.c: New. * gcc.target/powerpc/builtins-1.fold.h: New. From-SVN: r256815
Will Schmidt committed -
[gcc] 2018-01-17 Will Schmidt <will_schmidt@vnet.ibm.com> * config/rs6000/rs6000.c (rs6000_gimple_builtin): Add gimple folding support for merge[hl]. (fold_mergehl_helper): New helper function. (tree-vector-builder.h): New #include for tree_vector_builder usage. * config/rs6000/altivec.md (altivec_vmrghw_direct): Add xxmrghw insn. (altivec_vmrglw_direct): Add xxmrglw insn. [testsuite] 2018-01-17 Will Schmidt <will_schmidt@vnet.ibm.com> * gcc.target/powerpc/fold-vec-mergehl-char.c: New. * gcc.target/powerpc/fold-vec-mergehl-double.c: New. * gcc.target/powerpc/fold-vec-mergehl-float.c: New. * gcc.target/powerpc/fold-vec-mergehl-int.c: New. * gcc.target/powerpc/fold-vec-mergehl-longlong.c: New. * gcc.target/powerpc/fold-vec-mergehl-pixel.c: New. * gcc.target/powerpc/fold-vec-mergehl-short.c: New. * gcc.target/powerpc/builtins-1-be.c: Disable gimple-folding. * gcc.target/powerpc/builtins-1-le.c: Disable gimple-folding. * gcc.target/powerpc/builtins-1-be-folded.c: New. * gcc.target/powerpc/builtins-1-le-folded.c: New. * gcc.target/powerpc/builtins-1.fold.h: New. From-SVN: r256814
Will Schmidt committed -
PR sanitizer/82825 * sanitizer_common/sanitizer_internal_defs.h: Cherry-pick upstream r??????. From-SVN: r256813
Rainer Orth committed -
These -mcpu=xscale tests are ARM-only tests and they go to great pains to reject explicit overriding options, but they're missing the -marm in their dg-options, which means they will still give that nasty Thumb1 hard-float error when testing an implicit --with-mode=thumb toolchain (--with-cpu=cortex-a15 --with-fpu=neon-vfpv4 --with-float=hard --with-mode=thumb, for example). This patch adds the missing -marm and all is good again. * gcc.target/arm/g2.c: Add -marm to dg-options. * gcc.target/arm/scd42-2.c: Likewise. From-SVN: r256812
Kyrylo Tkachov committed -
2018-01-17 Andrew Waterman <andrew@sifive.com> gcc/ * config/riscv/riscv.c (riscv_conditional_register_usage): If UNITS_PER_FP_ARG is 0, set call_used_regs to 1 for all FP regs. From-SVN: r256811
Andrew Waterman committed -
Reviewed-on: https://go-review.googlesource.com/87198 From-SVN: r256810
Ian Lance Taylor committed -
https://gcc.gnu.org/ml/gcc-patches/2018-01/msg01580.html PR c++/83287 * init.c (build_raw_new_expr): Scan list for lookups to keep. PR c++/83287 * g++.dg/lookup/pr83287-2.C: New. From-SVN: r256809
Nathan Sidwell committed -
gcc/c-family/ChangeLog: PR c++/83814 * c-common.c (fold_for_warn): Move to c/c-fold.c and cp/expr.c. gcc/c/ChangeLog: PR c++/83814 * c-fold.c (fold_for_warn): Move from c-common.c, reducing to just the C part. gcc/cp/ChangeLog: PR c++/83814 * expr.c (fold_for_warn): Move from c-common.c, reducing to just the C++ part. If processing a template, call fold_non_dependent_expr rather than fully folding. gcc/testsuite/ChangeLog: PR c++/83814 PR c++/83902 * g++.dg/wrappers/pr83814.C: New test case. * g++.dg/wrappers/pr83902.C: New test case. From-SVN: r256804
David Malcolm committed -
* call.c (convert_like_real): Restore null_node handling. From-SVN: r256803
Jason Merrill committed -
PR c++/72801 * pt.c (unify_pack_expansion): Don't try to deduce enclosing template args. From-SVN: r256802
Jason Merrill committed -
PR lto/83121 reports an ICE deep inside the linemap code when -Wodr reports on a type mismatch. The root cause is that the warning can access the DECL_SOURCE_LOCATION of a streamed-in decl before the lto_location_cache has been applied. lto_location_cache::input_location stores RESERVED_LOCATION_COUNT (==2) as a poison value until the cache is applied: 250 /* Keep value RESERVED_LOCATION_COUNT in *loc as linemap lookups will 251 ICE on it. */ The fix is relatively simple: apply the cache before reading the DECL_SOURCE_LOCATION. Triggering the ICE was fiddly: it seems to be affected by many things, including the order of files, and (I think) by filenames. My theory is that it's affected by the ordering of the tree nodes in the LTO stream: for the ICE to occur, the types in question need to be compared before some other operation flushes the lto_location_cache. This ordering is affected by the hash-based ordering in DFS in lto-streamer-out.c, which might explain why r255066 seemed to trigger the bug; the only relevant change to LTO there seemed to be: * lto-streamer-out.c (hash_tree): Hash TYPE_EMPTY_P and DECL_PADDING_P. If so, then the bug was presumably already present, but hidden. The patch also adds regression test coverage for the ICE, which is more involved - as far as I can tell, we don't have an existing way to verify diagnostics emitted during link-time optimization. Hence the patch adds some machinery to lib/lto.exp to support two new directives: dg-lto-warning and dg-lto-message, corresponding to dg-warning and dg-message respectively, where the diagnostics are expected to be emitted at link-time. The test case includes examples of LTO warnings and notes in both the primary and secondary source files Doing so required reusing the logic from DejaGnu for handling diagnostics. Unfortunately the pertinent code is a 50 line loop within a ~200 line Tcl function in dg.exp (dg-test), so I had to copy it from DejaGnu, making various changes as necessary (see lto_handle_diagnostics_for_file in the patch; for example the LTO version supports multiple source files, identifying which source file emitted a diagnostic). For non-LTO diagnostics we currently ignore surplus "note" diagnostics. This patch updates lto_prune_warns to follow this behavior (since otherwise we'd need numerous dg-lto-message directives for the motivating test case). The patch adds these PASS results to g++.sum: PASS: g++.dg/lto/pr83121 cp_lto_pr83121_0.o assemble, -O0 -flto PASS: g++.dg/lto/pr83121 cp_lto_pr83121_1.o assemble, -O0 -flto PASS: g++.dg/lto/pr83121 (test for LTO warnings, pr83121_0.C line 6) PASS: g++.dg/lto/pr83121 (test for LTO warnings, pr83121_0.C line 8) PASS: g++.dg/lto/pr83121 (test for LTO warnings, pr83121_1.C line 2) PASS: g++.dg/lto/pr83121 (test for LTO warnings, pr83121_1.C line 3) PASS: g++.dg/lto/pr83121 cp_lto_pr83121_0.o-cp_lto_pr83121_1.o link, -O0 -flto The output for dg-lto-message above refers to "warnings", rather than "messages" but that's the same as for the non-LTO case, where dg-message also refers to "warnings". gcc/ChangeLog: PR lto/83121 * ipa-devirt.c (add_type_duplicate): When comparing memory layout, call the lto_location_cache before reading the DECL_SOURCE_LOCATION of the types. gcc/testsuite/ChangeLog: PR lto/83121 * g++.dg/lto/pr83121_0.C: New test case. * g++.dg/lto/pr83121_1.C: New test case. * lib/lto.exp (lto_handle_diagnostics_for_file): New procedure, adapted from DejaGnu's dg-test. (lto_handle_diagnostics): New procedure. (lto_prune_warns): Ignore informational notes. (lto-link-and-maybe-run): Add "messages_by_file" param. Call lto_handle_diagnostics. Avoid issuing "unresolved" for "execute" when "link" fails if "execute" was not specified. (lto-can-handle-directive): New procedure. (lto-get-options-main): Call lto-can-handle-directive. Add a dg-messages local, using it to set the caller's dg-messages-by-file for the given source file. (lto-get-options): Likewise. (lto-execute): Add dg-messages-by-file local, and pass it to lto-link-and-maybe-run. From-SVN: r256801
David Malcolm committed -
This fixes PR82964 which reports ICEs for some CONST_WIDE_INT immediates. It turns out decimal floating point CONST_DOUBLE get changed into CONST_WIDE_INT without checking the constraint on the operand, which results in failures. Avoid this by only allowing SF/DF/TF mode floating point constants in aarch64_legitimate_constant_p. A similar issue can occur with 128-bit immediates which may be emitted even when disallowed in aarch64_legitimate_constant_p, and the constraints in movti_aarch64 don't match. Fix this with a new constraint and allowing valid immediates in aarch64_legitimate_constant_p. Rather than allowing all 128-bit immediates and expanding in up to 8 MOV/MOVK instructions, limit them to 4 instructions and use a literal load for other cases. Improve a few TImode tests to use a literal and ensure they are skipped with -fpic. This fixes all reported failures. gcc/ PR target/82964 * config/aarch64/aarch64.md (movti_aarch64): Use Uti constraint. * config/aarch64/aarch64.c (aarch64_mov128_immediate): New function. (aarch64_legitimate_constant_p): Just support CONST_DOUBLE SF/DF/TF mode to avoid creating illegal CONST_WIDE_INT immediates. * config/aarch64/aarch64-protos.h (aarch64_mov128_immediate): Add declaration. * config/aarch64/constraints.md (aarch64_movti_operand): Limit immediates. * config/aarch64/predicates.md (Uti): Add new constraint. gcc/testsuite/ PR target/79041 PR target/82964 * gcc.target/aarch64/pr79041-2.c: Improve test, disable with fpic. * gcc.target/aarch64/pr78733.c: Improve test, disable with fpic. Co-Authored-By: Richard Sandiford <richard.sandiford@linaro.org> From-SVN: r256800
Wilco Dijkstra committed -
There is a typo in the armv8.1-a and armv8.2-a effective target check generators. They are not actually used anywhere in the testsuite as far as I can tell, but the fix is obvious. * lib/target-supports.exp: Fix -march arguments in arm arch effective target check autogenerator for armv8.1-a and armv8.2-a. From-SVN: r256799
Kyrylo Tkachov committed -
gcc/ChangeLog: 2018-01-17 Carl Love <cel@us.ibm.com> * config/rs6000/vsx.md (define_expand xl_len_r, define_expand stxvl, define_expand *stxvl): Add match_dup argument. (define_insn): Add, match_dup 1 argument to define_insn stxvll and lxvll. (define_expand, define_insn): Move the shift left from the define_insn to the define_expand for lxvl and stxvl instructions. * config/rs6000/rs6000-builtin.def (BU_P9V_64BIT_VSX_2): Change LXVL and XL_LEN_R definitions to PURE. gcc/testsuite/ChangeLog: 2018-01-17 Carl Love <cel@us.ibm.com> * gcc.target/powerpc/builtins-6-p9-runnable.c: Add additional tests. Add debug print statements. * gcc.target/powerpc/builtins-5-p9-runnable.c: Add test to do 16 byte vector load followed by a partial vector load. From-SVN: r256798
Carl Love committed -
* config/i386/i386.c (indirect_thunk_name): Declare regno as unsigned int. Compare regno with INVALID_REGNUM. (output_indirect_thunk): Ditto. (output_indirect_thunk_function): Ditto. (ix86_code_end): Declare regno as unsigned int. Use INVALID_REGNUM in the call to output_indirect_thunk_function. From-SVN: r256797
Uros Bizjak committed -
PR c++/83799 reports a failure building LLVM due to a bogus "no matching function for call to" error at a callsite like this: TLI->getTypeLegalizationCost(DL); where "DL" is from: using TargetTransformInfoImplBase::DL; The root cause is that type_dependent_expression_p on a USING_DECL should return true when processing a template, but after r256448 the the argument at the callsite is a location wrapper around the USING_DECL, and type_dependent_expression_p erroneously returns false for it, as it is comparing tree codes, and failing a match, then looking at types. This prevents cp_parser_postfix_expression from using the "build_min_nt_call_vec" path for handling the call, instead erroneously handling it via build_new_method_call (which fails for this case). This patch fixes the problem by stripping any location wrappers before the various tree code tests in type_dependent_expression_p. It fixes the reduced test case, and the full BasicTargetTransformInfo.ii; after this patch, the assembly generated for that latter case is identical to that generated before r256448. gcc/cp/ChangeLog: PR c++/83799 * pt.c (type_dependent_expression_p): Strip any location wrapper before testing tree codes. (selftest::test_type_dependent_expression_p): New function. (selftest::cp_pt_c_tests): Call it. gcc/testsuite/ChangeLog: PR c++/83799 * g++.dg/wrappers/pr83799.C: New test case. From-SVN: r256796
David Malcolm committed -
https://gcc.gnu.org/ml/gcc-patches/2018-01/msg01554.html PR c++/83739 * pt.c (tsubst_expr) <case RANGE_FOR_STMT>: Rebuild a range_for if this not a final instantiation. PR c++/83739 * g++.dg/cpp1y/pr83739.C: New. From-SVN: r256795
Nathan Sidwell committed -
Reviewed-on: https://go-review.googlesource.com/87897 From-SVN: r256794
Ian Lance Taylor committed
-