aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2018-01-18Small retpoline clean-up.Martin Liska12-10/+32
2018-01-18 Martin Liska <mliska@suse.cz> * config/i386/i386.c (indirect_thunk_name): Document that also lfence is emitted. (output_indirect_thunk): Document why both instructions (pause and lfence) are generated. 2018-01-18 Martin Liska <mliska@suse.cz> * gcc.target/i386/indirect-thunk-3.c: Remove duplicate options. * gcc.target/i386/indirect-thunk-4.c: Likewise. * gcc.target/i386/indirect-thunk-6.c: Likewise. * gcc.target/i386/indirect-thunk-bnd-4.c: Likewise. * gcc.target/i386/ret-thunk-10.c: Likewise. * gcc.target/i386/ret-thunk-11.c: Likewise. * gcc.target/i386/ret-thunk-12.c: Likewise. * gcc.target/i386/ret-thunk-15.c: Likewise. * gcc.target/i386/ret-thunk-9.c: Likewise. From-SVN: r256846
2018-01-18[arm] Fix gcc.target/arm/xor-and.cChristophe Lyon2-1/+6
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
2018-01-18Add Boris Kolpackov <boris@codesynthesis.com> to MAINTAINERSBoris Kolpackov2-0/+5
From-SVN: r256844
2018-01-18PR c++/83160] local ref to captureNathan Sidwell6-3/+62
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
2018-01-18re PR tree-optimization/83887 ([graphite] ICE in verify_dominators, at ↵Richard Biener6-148/+184
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
2018-01-18[arm] PR target/65578: Fix builtin-bswap16-1.c and builtin-bswap-1.cKyrylo Tkachov7-81/+116
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
2018-01-18[arm] Fix gcc.target/arm/pr40887.c directivesChristophe Lyon2-1/+6
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
2018-01-18re PR c/61240 (Incorrect warning "integer overflow in expression" on ↵Jakub Jelinek4-3/+44
pointer-pointer subtraction) 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
2018-01-18re PR fortran/83864 (ICE in gfc_apply_init, at fortran/expr.c:4271)Harald Anlauf4-1/+24
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
2018-01-18Add myself to the MAINTAINERS fileSiddhesh Poyarekar2-0/+5
* MAINTAINERS (write after approval): Add myself. From-SVN: r256836
2018-01-18re PR go/83787 (Many 32-bit Solaris/SPARC Go tests FAIL after Go1.10beta1 ↵Ian Lance Taylor5-3/+12
update) 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
2018-01-17re PR testsuite/83883 (FAIL: gcc.dg/tree-ssa/ssa-dse-26.c ↵Jeff Law2-1/+8
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
2018-01-18rs6000.md (*call_indirect_nonlocal_sysv<mode>): Generate different code for ↵Bill Schmidt6-13/+191
-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
2018-01-18Daily bump.GCC Administrator1-1/+1
From-SVN: r256827
2018-01-17re PR fortran/83874 (ICE initializing character array from derived type)Harald Anlauf4-1/+30
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
2018-01-18re PR c++/83824 (ICE on invalid C++ code with alignas: in chainon, at ↵Jakub Jelinek4-32/+77
tree.c:3037) 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
2018-01-17rs6000.c (rs6000_emit_move): If we load or store a long double type...Michael Meissner6-0/+78
[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
2018-01-17re PR c++/78344 (ICE on invalid c++ code on x86_64-linux-gnu (internal ↵Paolo Carlini4-3/+25
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
2018-01-17compiler: enable escape analysis for runtimeIan Lance Taylor5-88/+114
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
2018-01-17re PR c++/83897 (Useless __builtin_unreachable () emitted by the C++ FE)Jakub Jelinek4-0/+25
PR c++/83897 * cp-gimplify.c (cp_maybe_instrument_return): Handle CLEANUP_POINT_EXPR. * g++.dg/cpp0x/pr83897.C: New test. From-SVN: r256819
2018-01-17re PR ipa/83051 (ICE on valid code at -O3: in edge_badness, at ↵Jan Hubicka4-1/+25
ipa-inline.c:1024) 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
2018-01-17re PR c++/81054 (ICE with volatile variable in constexpr function)Paolo Carlini1-0/+6
/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
2018-01-17re PR c++/81054 (ICE with volatile variable in constexpr function)Paolo Carlini4-4/+30
/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
2018-01-17fold-vec-mergehl-char.c: New.Will Schmidt11-3/+533
[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
2018-01-17rs6000.c (rs6000_gimple_builtin): Add gimple folding support for merge[hl].Will Schmidt6-18/+103
[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
2018-01-17Guard against undefined weak symbols before Mac OS X 10.9 (PR sanitizer/82825)Rainer Orth2-1/+13
PR sanitizer/82825 * sanitizer_common/sanitizer_internal_defs.h: Cherry-pick upstream r??????. From-SVN: r256813
2018-01-17[arm] Fix gcc.target/arm/g2.c and scd42-2.c for --with-mode=thumb hardfloat ↵Kyrylo Tkachov3-2/+7
targets 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
2018-01-17RISC-V: Mark fsX as call clobbered when soft-float.Andrew Waterman2-0/+12
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
2018-01-17archive/tar: support stat and device numbers on AIXIan Lance Taylor3-3/+13
Reviewed-on: https://go-review.googlesource.com/87198 From-SVN: r256810
2018-01-17[C++/83287] Another overload lookup iceNathan Sidwell4-1/+36
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
2018-01-17C++: Fix crash in warn_for_memset within templates (PR c++/83814)David Malcolm9-13/+129
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
2018-01-17PR c++/81067 - redundant NULL warning.Jason Merrill2-0/+11
* call.c (convert_like_real): Restore null_node handling. From-SVN: r256803
2018-01-17PR c++/81843 - ICE with variadic member template.Jason Merrill3-0/+22
PR c++/72801 * pt.c (unify_pack_expansion): Don't try to deduce enclosing template args. From-SVN: r256802
2018-01-17lto, testsuite: Fix ICE in -Wodr (PR lto/83121)David Malcolm6-6/+249
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
2018-01-17[AArch64] PR82964: Fix 128-bit immediate ICEsWilco Dijkstra9-17/+66
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
2018-01-17[arm][testsuite] Fix -march tests in effective target checks auto-generationKyrylo Tkachov2-2/+7
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
2018-01-17vsx.md (define_expand xl_len_r, [...]): Add match_dup argument.Carl Love7-725/+1230
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
2018-01-17i386.c (indirect_thunk_name): Declare regno as unsigned int.Uros Bizjak2-16/+25
* 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
2018-01-17Fix failure building LLVM with location wrapper nodes (PR c++/83799)David Malcolm4-0/+69
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
2018-01-17[C++/83739] bogus error tsubsting range for in generic lambdaNathan Sidwell4-11/+52
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
2018-01-17libgo: update to Go1.10beta2 releaseIan Lance Taylor139-5029/+6561
Reviewed-on: https://go-review.googlesource.com/87897 From-SVN: r256794
2018-01-17overflow8.c: Pass -fno-if-conversion.Eric Botcazou4-3/+9
* gcc.target/visium/overflow8.c: Pass -fno-if-conversion. * gcc.target/visium/overflow16.c: Likewise. * gcc.target/visium/overflow32.c: Likewise. From-SVN: r256793
2018-01-17* gcc.dg/ipa/inlinehint-4.c: Also pass --param inline-unit-growth=20.Eric Botcazou2-1/+5
From-SVN: r256787
2018-01-17[arm] Convert gcc.target/arm/stl-cond.c into an RTL testKyrylo Tkachov3-19/+66
This is an awkward testsuite failure. The original bug was that we were failing to put out the conditional code in the conditional form of the STL instruction (oops!). So we wanted to output STLNE, but instead output STL. The testacase relies on if-conversion to conditionalise the insn for STL. However, ever since r251643 the expansion of a non-relaxed atomic store always includes a compiler barrier. That blocks if-conversion in all cases. So there's no easy way to get to a conditional STL instruction from a C program. But we do want to test for the original bug fix that if the RTL insn for STL is conditionalised it should output the conditional code. The solution in this patch is to convert the test into an RTL test with the COND_EXEC form of the STL insn and scan the assembly output there. This seems to work fine, and gives us an opportunity to create a gcc.dg/rtl/arm directory in the RTL tests. This now makes the gcc.target/arm/stl-cond.c disappear (as the test is deleted) and the new test in gcc.dg/rtl/arm/stl-cond.c passes. * gcc.dg/rtl/arm/stl-cond.c: New test. * gcc.target/arm/stl-cond.c: Delete. From-SVN: r256785
2018-01-17[arm] Fix gcc.target/arm/pr40887.c directivesKyrylo Tkachov2-2/+10
This patch converts gcc.target/arm/pr40887.c to use the proper effective target check and dg-add-options for armv5te so that we avoid situations where we end up trying to compile the test with a Thumb1 hard-float ABI, which makes the compiler complain. This allows the test to pass gracefully for me for my compiler configured with: --with-cpu=cortex-a15 --with-fpu=neon-vfpv4 --with-float=hard --with-mode=thumb * gcc.target/arm/pr40887.c: Add armv5te effective target checks and directives. From-SVN: r256784
2018-01-17re PR tree-optimization/83843 (wrong code at -O2)Jakub Jelinek3-1/+64
PR tree-optimization/83843 * gcc.dg/store_merging_18.c: Don't expect "Merging successful" on arm. * gcc.dg/store_merging_19.c: New test. From-SVN: r256783
2018-01-17[arm] Fix gcc.target/arm/xor-and.cKyrylo Tkachov2-2/+8
This test is naughty because it doesn't use the proper effective target checks and add-options mechanisms for setting a Thumb1 target, which leads to Thumb1 hard-float errors when testing a toolchain configured with --with-cpu=cortex-a15 --with-fpu=neon-vfpv4 --with-float=hard --with-mode=thumb. This patch fixes that in the obvious way. * gcc.target/arm/xor-and.c: Fix armv6 effective target checks and options. From-SVN: r256782
2018-01-17re PR rtl-optimization/83771 (ICE: verify_flow_info failed (error: non-cold ↵Jakub Jelinek2-0/+24
basic block 3 reachable only by paths crossing the cold partition)) PR rtl-optimization/83771 * gcc.dg/pr83771.c: New test. From-SVN: r256781
2018-01-17re PR tree-optimization/81184 (gcc.dg/pr21643.c and ↵Eric Botcazou3-3/+13
gcc.dg/tree-ssa/phi-opt-11.c fail starting with r249450) PR tree-optimization/81184 * gcc.dg/pr21643.c: Adjust dg-final line for logical_op_short_circuit targets. * gcc.dg/tree-ssa/phi-opt-11.c: Likewise. From-SVN: r256780
2018-01-17VIEW_CONVERT_EXPR slots for strict-align targets (PR 83884)Richard Sandiford2-4/+11
This PR is about a case in which we VIEW_CONVERT a variable-sized unaligned record: <record_type 0x7ffff6d92888 check_displace_generation__T245b sizes-gimplified type_7 BLK size <var_decl 0x7ffff6846510 D.3499 ...> unit-size <var_decl 0x7ffff68465a0 D.3500 ...> align:8 ...> to an aligned 32-bit integer. The strict-alignment handling of this case creates an aligned temporary slot, moves the operand into the slot in the operand's original mode, then accesses the slot in the more-aligned result mode. Previously the size of the temporary slot was calculated using: HOST_WIDE_INT temp_size = MAX (int_size_in_bytes (inner_type), (HOST_WIDE_INT) GET_MODE_SIZE (mode)); int_size_in_bytes would return -1 for the variable-length type, so we'd use the size of the result mode for the slot. r256152 replaced int_size_in_bytes with tree_to_poly_uint64, which triggered an ICE. If op0 has BLKmode we do a block copy of GET_MODE_SIZE (mode) bytes and then convert the slot to "mode": poly_uint64 mode_size = GET_MODE_SIZE (mode); ... if (GET_MODE (op0) == BLKmode) { rtx size_rtx = gen_int_mode (mode_size, Pmode); emit_block_move (new_with_op0_mode, op0, size_rtx, (modifier == EXPAND_STACK_PARM ? BLOCK_OP_CALL_PARM : BLOCK_OP_NORMAL)); } else ... op0 = new_rtx; } } op0 = adjust_address (op0, mode, 0); so I think in that case just the size of "mode" is enough, even if op0 is a fixed-size type. For non-BLKmode op0 we first move in op0's mode and then convert the slot to "mode": emit_move_insn (new_with_op0_mode, op0); op0 = new_rtx; } } op0 = adjust_address (op0, mode, 0); so I think we want the maximum of the two mode sizes in that case. 2018-01-17 Richard Sandiford <richard.sandiford@linaro.org> gcc/ PR middle-end/83884 * expr.c (expand_expr_real_1): Use the size of GET_MODE (op0) rather than the size of inner_type to determine the stack slot size when handling VIEW_CONVERT_EXPRs on strict-alignment targets. From-SVN: r256779