- 23 Jan, 2020 28 commits
-
-
Padding in mbstate_t objects may get the memcmp to fail. Attempt to avoid the failure with zero initialization. for libstdc++-v3/ChangeLog * testsuite/27_io/fpos/mbstate_t/1.cc: Zero-init mbstate_t.
Alexandre Oliva committed -
The following testcase is miscompiled, because the postreload pass changes: -(insn 14 13 23 2 (parallel [ - (set (reg:DI 1 dx [94]) - (plus:DI (reg:DI 1 dx [95]) - (reg:DI 5 di [92]))) - (clobber (reg:CC 17 flags)) - ]) "pr93402.c":8:30 186 {*adddi_1} - (expr_list:REG_EQUAL (plus:DI (reg:DI 5 di [92]) - (const_int 111111111111 [0x19debd01c7])) - (nil))) -(insn 23 14 25 2 (set (reg:SI 0 ax) +(insn 23 13 25 2 (set (reg:SI 0 ax) (const_int 0 [0])) "pr93402.c":10:1 67 {*movsi_internal} (nil)) (insn 25 23 26 2 (use (reg:SI 0 ax)) "pr93402.c":10:1 -1 (nil)) -(insn 26 25 35 2 (use (reg:DI 1 dx)) "pr93402.c":10:1 -1 +(insn 26 25 35 2 (use (plus:DI (reg:DI 1 dx [95]) + (reg:DI 5 di [92]))) "pr93402.c":10:1 -1 (nil)) A USE insn is not a normal insn and verify_changes called from apply_change_group is happy about any changes into it. The following patch avoids this optimization if we were to change the USE operand (this routine only changes a reg into (plus reg reg2)). 2020-01-23 Jakub Jelinek <jakub@redhat.com> PR rtl-optimization/93402 * postreload.c (reload_combine_recognize_pattern): Don't try to adjust USE insns. * gcc.c-torture/execute/pr93402.c: New test.
Jakub Jelinek committed -
A rather simple ICE where we failed to properly check for concept-ids uses in nested-name-specifiers. Tested x86_64-linux. /cp PR c++/92804 * parser.c (cp_parser_nested_name_specifier_opt): Properly diagnose concept-ids. /testsuite PR c++/92804 * g++.dg/concepts/pr92804-1.C: New. * g++.dg/concepts/pr92804-2.C: New.
Paolo Carlini committed -
If we can't change the argument to &"...", use the original arg instead of the partially munged one. PR c++/93331 - ICE with __builtin_strchr. * constexpr.c (cxx_eval_builtin_function_call): Use the original argument if we didn't manage to extract a STRING_CST.
Jason Merrill committed -
In a template we don't instantiate a deferred noexcept-spec, and we don't need it because we aren't going to do anything with the value of throwing_cleanup in a template anyway. PR c++/93345 - ICE with defaulted dtor and template. PR c++/33799 * decl.c (cxx_maybe_build_cleanup): Don't try to set throwing_cleanup in a template.
Jason Merrill committed -
PR analyzer/93375 reports an ICE under certain circumstances involving a call where the number of arguments at the callsite is less than the parameter count of the callee, Specifically, the ICE occurs when pruning a checker_path for a diagnostic, when attempting to maintain which expression is of interest through such a call. The root cause is an assumption that there were enough arguments at the callsite, within callgraph_superedge's methods for mapping expressions between callee and caller. This patch adds checks for this to the relevant methods, fixing the ICE. gcc/analyzer/ChangeLog: PR analyzer/93375 * supergraph.cc (callgraph_superedge::get_arg_for_parm): Fail gracefully is the number of parameters at the callee exceeds the number of arguments at the call stmt. (callgraph_superedge::get_parm_for_arg): Likewise. gcc/testsuite/ChangeLog: PR analyzer/93375 * gcc.dg/analyzer/pr93375.c: New test.
David Malcolm committed -
My last patch didn't fix all the failures on unsignd char targets. We were missing one warning because by suppressing -Wsign-conversion for the second operand of + we missed an overflow that we want to warn about, and we properly don't warn about unsigned / or %. PR testsuite/93391 - PR 40752 test fails with unsigned plain char. * c-warn.c (conversion_warning): Change -Wsign-conversion handling. * lib/target-supports.exp (check_effective_target_unsigned_char): New.
Jason Merrill committed -
libgcc/ChangeLog: 2020-01-23 Dragan Mladjenovic <dmladjenovic@wavecomp.com> * config/mips/gnustack.h: Check for TARGET_LIBC_GNUSTACK also. gcc/ChangeLog: 2020-01-23 Dragan Mladjenovic <dmladjenovic@wavecomp.com> * config.in: Regenerated. * config/mips/linux.h (NEED_INDICATE_EXEC_STACK): Define to 1 for TARGET_LIBC_GNUSTACK. * configure: Regenerated. * configure.ac: Define TARGET_LIBC_GNUSTACK if glibc version is found to be 2.31 or greater.
Dragan Mladjenovic committed -
gcc/ChangeLog: 2020-01-23 Dragan Mladjenovic <dmladjenovic@wavecomp.com> * config/mips/linux.h (NEED_INDICATE_EXEC_STACK): Define to TARGET_SOFT_FLOAT. * config/mips/mips.c (TARGET_ASM_FILE_END): Define to ... (mips_asm_file_end): New function. Delegate to file_end_indicate_exec_stack if NEED_INDICATE_EXEC_STACK is true. * config/mips/mips.h (NEED_INDICATE_EXEC_STACK): Define to 0. libgcc/ChangeLog: 2020-01-23 Dragan Mladjenovic <dmladjenovic@wavecomp.com> * config/mips/gnustack.h: New file. * config/mips/crti.S: Include gnustack.h. * config/mips/crtn.S: Likewise. * config/mips/mips16.S: Likewise. * config/mips/vr4120-div.S: Likewise.
Dragan Mladjenovic committed -
The following testcase ICEs, because during try_combine of i3: (insn 18 17 19 2 (parallel [ (set (reg:CCO 17 flags) (eq:CCO (plus:OI (sign_extend:OI (reg:TI 96)) (const_int 1 [0x1])) (sign_extend:OI (plus:TI (reg:TI 96) (const_int 1 [0x1]))))) (set (reg:TI 98) (plus:TI (reg:TI 96) (const_int 1 [0x1]))) ]) "pr93376.c":8:10 223 {*addvti4_doubleword_1} (expr_list:REG_UNUSED (reg:TI 98) (expr_list:REG_DEAD (reg:TI 96) (nil)))) and i2: (insn 17 37 18 2 (set (reg:TI 96) (const_wide_int 0x7fffffffffffffffffffffffffffffff)) "pr93376.c":8:10 65 {*movti_internal} (nil)) the eq in there gets simplified into: (eq:CCO (const_wide_int 0x080000000000000000000000000000000) (const_wide_int 0x80000000000000000000000000000000)) and simplify-rtx.c tries to simplify it by simplifying MINUS of the two operands. Now, i386 defines MAX_BITSIZE_MODE_ANY_INT to 128, because OImode and XImode are used mainly as a placeholder for the vector modes; these new signed overflow patterns are an exception to that, but what they really need is just TImode precision + 1 (maybe 2 worst case) bits at any time. wide-int.h defines WIDE_INT_MAX_ELTS in a way that it contains one more HWI above number of HWIs to cover WIDE_INT_MAX_ELTS, so on i386 that is 3 HWIs, meaning that TImode precision + 1/2 bits is still representable in there. Unfortunately, the way wi::sub_large is implemented, it needs not just those 3 HWIs, but one HWI above the maximum of the lengths of both operands, which means it buffer overflows, overwrites the following precision in wide_int_storage and ICEs later on. The need for 4 HWIs is only temporary, because canonize immediately after it canonicalizes it back to 3 HWIs only. The patch is something suggested by Richard S., avoid using OImode for this and instead use a partial int mode that is smaller. 2020-01-23 Jakub Jelinek <jakub@redhat.com> PR target/93376 * config/i386/i386-modes.def (POImode): New mode. (MAX_BITSIZE_MODE_ANY_INT): Change from 128 to 160. * config/i386/i386.md (DPWI): New mode attribute. (addv<mode>4, subv<mode>4): Use <DPWI> instead of <DWI>. (QWI): Rename to... (QPWI): ... this. Use POI instead of OI for TImode. (*addv<dwi>4_doubleword, *addv<dwi>4_doubleword_1, *subv<dwi>4_doubleword, *subv<dwi>4_doubleword_1): Use <QPWI> instead of <QWI>. * gcc.dg/pr93376.c: New test.
Jakub Jelinek committed -
The previous rule could leave an incomplete file if the build was interrupted, which would then not be remade if make was run again. This makes the rule more robust by writing to a temporary file and only moving it into place as the final step. It also simplifies the rule so that only the essential macro definitions are written to the file, not the explanatory comments and commented out #undef lines. Also, the macro for enabling LFS on Mac OS X 10.5 is now set unconditionally, which is a bug fix from upstream autoconf. PR libstdc++/91947 * include/Makefile.am (${host_builddir}/largefile-config.h): Simplify rule. * include/Makefile.in: Regenerate.
Jonathan Wakely committed -
We can't yet represent the inverse of all conditions in rtl (see g:865257c4), triggering an ICE in the pass that handles -mtrack-speculation. Since we don't expect these insns to be optimised in any way, the easiest fix seemed to be to add an insn that reverses the condition internally. 2020-01-23 Richard Sandiford <richard.sandiford@arm.com> gcc/ PR target/93341 * config/aarch64/aarch64.md (UNSPEC_SPECULATION_TRACKER_REV): New unspec. (speculation_tracker_rev): New pattern. * config/aarch64/aarch64-speculation.cc (aarch64_do_track_speculation): Use speculation_tracker_rev to track the inverse condition. gcc/testsuite/ PR target/93341 * gcc.target/aarch64/pr93341.c: New test.
Richard Sandiford committed -
gcc/testsuite/ChangeLog: * gcc.dg/analyzer/data-model-3.c: Remove hardcoded "-O2" and move to torture/conftest-1.c. * gcc.dg/analyzer/torture/analyzer-torture.exp: New. * gcc.dg/analyzer/torture/conftest-1.c: Move here from analyzer/data-model-3.c. * gcc.dg/analyzer/torture/poc.c: New test.
David Malcolm committed -
* libgcov-driver.c (prune_topn_counter): Remove check for -1 as we only prune run-time counters that do not generate an invalid state.
Martin Liska committed -
2020-01-23 Andrew Stubbs <ams@codesourcery.com> libgomp/ * plugin/plugin-gcn.c (parse_target_attributes): Use correct mask for the device id.
Andrew Stubbs committed -
This fixes tracking of the alias-set of partial defs for use by redundant store removal. 2020-01-23 Richard Biener <rguenther@suse.de> PR tree-optimization/93381 * tree-ssa-sccvn.c (vn_walk_cb_data::push_partial_def): Take alias-set of the def as argument and record the first one. (vn_walk_cb_data::first_set): New member. (vn_reference_lookup_3): Pass the alias-set of the current def to push_partial_def. Fix alias-set used in the aggregate copy case. (vn_reference_lookup): Consistently set *last_vuse_ptr. * real.c (clear_significand_below): Fix out-of-bound access. * gcc.dg/torture/pr93354.c: New testcase.
Richard Biener committed -
The bzhi patterns are quite complicated because they need to accurately describe the behavior of the instruction for all input values. The following patterns are simple and make bzhi recognizable even for cases where not all input values are valid, because the user used a shift, in which case the low 8 bit of the last operand need to be in between 0 and precision-1. 2020-01-23 Jakub Jelinek <jakub@redhat.com> PR target/93346 * config/i386/i386.md (*bmi2_bzhi_<mode>3_2, *bmi2_bzhi_<mode>3_3): New define_insn patterns. * gcc.target/i386/pr93346.c: New test.
Jakub Jelinek committed -
gcc/c-family/ChangeLog: PR c/84919 * c-common.c (check_function_arguments): Avoid overlap checking of sprintf functions. gcc/testsuite/ChangeLog: PR c/84919 * gcc.dg/Wrestrict-20.c: New test.
Martin Sebor committed -
The definitions of the integer types for ILP32 newlib make the resolution of some of the bool-related tests ambiguous. 2020-01-23 Richard Sandiford <richard.sandiford@arm.com> gcc/testsuite/ * g++.target/aarch64/sve/acle/general-c++/whilele_1.C: Skip for ILP32.
Richard Sandiford committed -
The load, store, prefetch and alias-check test functions require extra zero extends for ILP32, so they don't match the expected function bodies. This patch therefore skips those parts of the tests for ILP32, but keeps the compile/assemble parts. 2020-01-23 Richard Sandiford <richard.sandiford@arm.com> gcc/testsuite/ * gcc.target/aarch64/sve/acle/asm/ld1_f16.c: Skip check-function-bodies test for ILP32. * gcc.target/aarch64/sve/acle/asm/ld1_f32.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ld1_f64.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ld1_gather_f32.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ld1_gather_f64.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ld1_gather_s32.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ld1_gather_s64.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ld1_gather_u32.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ld1_gather_u64.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ld1_s16.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ld1_s32.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ld1_s64.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ld1_s8.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ld1_u16.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ld1_u32.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ld1_u64.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ld1_u8.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ld1ro_f16.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ld1ro_f32.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ld1ro_f64.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ld1ro_s16.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ld1ro_s32.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ld1ro_s64.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ld1ro_s8.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ld1ro_u16.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ld1ro_u32.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ld1ro_u64.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ld1ro_u8.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ld1rq_f16.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ld1rq_f32.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ld1rq_f64.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ld1rq_s16.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ld1rq_s32.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ld1rq_s64.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ld1rq_s8.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ld1rq_u16.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ld1rq_u32.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ld1rq_u64.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ld1rq_u8.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ld1sb_gather_s32.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ld1sb_gather_s64.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ld1sb_gather_u32.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ld1sb_gather_u64.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ld1sb_s16.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ld1sb_s32.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ld1sb_s64.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ld1sb_u16.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ld1sb_u32.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ld1sb_u64.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ld1sh_gather_s32.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ld1sh_gather_s64.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ld1sh_gather_u32.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ld1sh_gather_u64.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ld1sh_s32.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ld1sh_s64.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ld1sh_u32.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ld1sh_u64.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ld1sw_gather_s64.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ld1sw_gather_u64.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ld1sw_s64.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ld1sw_u64.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ld1ub_gather_s32.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ld1ub_gather_s64.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ld1ub_gather_u32.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ld1ub_gather_u64.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ld1ub_s16.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ld1ub_s32.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ld1ub_s64.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ld1ub_u16.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ld1ub_u32.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ld1ub_u64.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ld1uh_gather_s32.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ld1uh_gather_s64.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ld1uh_gather_u32.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ld1uh_gather_u64.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ld1uh_s32.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ld1uh_s64.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ld1uh_u32.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ld1uh_u64.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ld1uw_gather_s64.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ld1uw_gather_u64.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ld1uw_s64.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ld1uw_u64.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ld2_f16.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ld2_f32.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ld2_f64.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ld2_s16.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ld2_s32.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ld2_s64.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ld2_s8.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ld2_u16.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ld2_u32.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ld2_u64.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ld2_u8.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ld3_f16.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ld3_f32.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ld3_f64.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ld3_s16.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ld3_s32.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ld3_s64.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ld3_s8.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ld3_u16.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ld3_u32.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ld3_u64.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ld3_u8.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ld4_f16.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ld4_f32.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ld4_f64.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ld4_s16.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ld4_s32.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ld4_s64.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ld4_s8.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ld4_u16.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ld4_u32.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ld4_u64.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ld4_u8.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ldff1_f16.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ldff1_f32.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ldff1_f64.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ldff1_gather_f32.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ldff1_gather_f64.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ldff1_gather_s32.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ldff1_gather_s64.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ldff1_gather_u32.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ldff1_gather_u64.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ldff1_s16.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ldff1_s32.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ldff1_s64.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ldff1_s8.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ldff1_u16.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ldff1_u32.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ldff1_u64.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ldff1_u8.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ldff1sb_gather_s32.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ldff1sb_gather_s64.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ldff1sb_gather_u32.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ldff1sb_gather_u64.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ldff1sb_s16.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ldff1sb_s32.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ldff1sb_s64.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ldff1sb_u16.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ldff1sb_u32.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ldff1sb_u64.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ldff1sh_gather_s32.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ldff1sh_gather_s64.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ldff1sh_gather_u32.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ldff1sh_gather_u64.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ldff1sh_s32.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ldff1sh_s64.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ldff1sh_u32.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ldff1sh_u64.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ldff1sw_gather_s64.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ldff1sw_gather_u64.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ldff1sw_s64.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ldff1sw_u64.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ldff1ub_gather_s32.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ldff1ub_gather_s64.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ldff1ub_gather_u32.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ldff1ub_gather_u64.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ldff1ub_s16.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ldff1ub_s32.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ldff1ub_s64.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ldff1ub_u16.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ldff1ub_u32.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ldff1ub_u64.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ldff1uh_gather_s32.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ldff1uh_gather_s64.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ldff1uh_gather_u32.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ldff1uh_gather_u64.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ldff1uh_s32.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ldff1uh_s64.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ldff1uh_u32.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ldff1uh_u64.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ldff1uw_gather_s64.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ldff1uw_gather_u64.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ldff1uw_s64.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ldff1uw_u64.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ldnf1_f16.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ldnf1_f32.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ldnf1_f64.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ldnf1_s16.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ldnf1_s32.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ldnf1_s64.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ldnf1_s8.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ldnf1_u16.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ldnf1_u32.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ldnf1_u64.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ldnf1_u8.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ldnf1sb_s16.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ldnf1sb_s32.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ldnf1sb_s64.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ldnf1sb_u16.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ldnf1sb_u32.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ldnf1sb_u64.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ldnf1sh_s32.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ldnf1sh_s64.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ldnf1sh_u32.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ldnf1sh_u64.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ldnf1sw_s64.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ldnf1sw_u64.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ldnf1ub_s16.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ldnf1ub_s32.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ldnf1ub_s64.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ldnf1ub_u16.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ldnf1ub_u32.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ldnf1ub_u64.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ldnf1uh_s32.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ldnf1uh_s64.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ldnf1uh_u32.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ldnf1uh_u64.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ldnf1uw_s64.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ldnf1uw_u64.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ldnt1_f16.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ldnt1_f32.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ldnt1_f64.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ldnt1_s16.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ldnt1_s32.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ldnt1_s64.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ldnt1_s8.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ldnt1_u16.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ldnt1_u32.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ldnt1_u64.c: Likewise. * gcc.target/aarch64/sve/acle/asm/ldnt1_u8.c: Likewise. * gcc.target/aarch64/sve/acle/asm/prfb.c: Likewise. * gcc.target/aarch64/sve/acle/asm/prfb_gather.c: Likewise. * gcc.target/aarch64/sve/acle/asm/prfd.c: Likewise. * gcc.target/aarch64/sve/acle/asm/prfd_gather.c: Likewise. * gcc.target/aarch64/sve/acle/asm/prfh.c: Likewise. * gcc.target/aarch64/sve/acle/asm/prfh_gather.c: Likewise. * gcc.target/aarch64/sve/acle/asm/prfw.c: Likewise. * gcc.target/aarch64/sve/acle/asm/prfw_gather.c: Likewise. * gcc.target/aarch64/sve/acle/asm/st1_f16.c: Likewise. * gcc.target/aarch64/sve/acle/asm/st1_f32.c: Likewise. * gcc.target/aarch64/sve/acle/asm/st1_f64.c: Likewise. * gcc.target/aarch64/sve/acle/asm/st1_s16.c: Likewise. * gcc.target/aarch64/sve/acle/asm/st1_s32.c: Likewise. * gcc.target/aarch64/sve/acle/asm/st1_s64.c: Likewise. * gcc.target/aarch64/sve/acle/asm/st1_s8.c: Likewise. * gcc.target/aarch64/sve/acle/asm/st1_scatter_f32.c: Likewise. * gcc.target/aarch64/sve/acle/asm/st1_scatter_f64.c: Likewise. * gcc.target/aarch64/sve/acle/asm/st1_scatter_s32.c: Likewise. * gcc.target/aarch64/sve/acle/asm/st1_scatter_s64.c: Likewise. * gcc.target/aarch64/sve/acle/asm/st1_scatter_u32.c: Likewise. * gcc.target/aarch64/sve/acle/asm/st1_scatter_u64.c: Likewise. * gcc.target/aarch64/sve/acle/asm/st1_u16.c: Likewise. * gcc.target/aarch64/sve/acle/asm/st1_u32.c: Likewise. * gcc.target/aarch64/sve/acle/asm/st1_u64.c: Likewise. * gcc.target/aarch64/sve/acle/asm/st1_u8.c: Likewise. * gcc.target/aarch64/sve/acle/asm/st1b_s16.c: Likewise. * gcc.target/aarch64/sve/acle/asm/st1b_s32.c: Likewise. * gcc.target/aarch64/sve/acle/asm/st1b_s64.c: Likewise. * gcc.target/aarch64/sve/acle/asm/st1b_scatter_s32.c: Likewise. * gcc.target/aarch64/sve/acle/asm/st1b_scatter_s64.c: Likewise. * gcc.target/aarch64/sve/acle/asm/st1b_scatter_u32.c: Likewise. * gcc.target/aarch64/sve/acle/asm/st1b_scatter_u64.c: Likewise. * gcc.target/aarch64/sve/acle/asm/st1b_u16.c: Likewise. * gcc.target/aarch64/sve/acle/asm/st1b_u32.c: Likewise. * gcc.target/aarch64/sve/acle/asm/st1b_u64.c: Likewise. * gcc.target/aarch64/sve/acle/asm/st1h_s32.c: Likewise. * gcc.target/aarch64/sve/acle/asm/st1h_s64.c: Likewise. * gcc.target/aarch64/sve/acle/asm/st1h_scatter_s32.c: Likewise. * gcc.target/aarch64/sve/acle/asm/st1h_scatter_s64.c: Likewise. * gcc.target/aarch64/sve/acle/asm/st1h_scatter_u32.c: Likewise. * gcc.target/aarch64/sve/acle/asm/st1h_scatter_u64.c: Likewise. * gcc.target/aarch64/sve/acle/asm/st1h_u32.c: Likewise. * gcc.target/aarch64/sve/acle/asm/st1h_u64.c: Likewise. * gcc.target/aarch64/sve/acle/asm/st1w_s64.c: Likewise. * gcc.target/aarch64/sve/acle/asm/st1w_scatter_s64.c: Likewise. * gcc.target/aarch64/sve/acle/asm/st1w_scatter_u64.c: Likewise. * gcc.target/aarch64/sve/acle/asm/st1w_u64.c: Likewise. * gcc.target/aarch64/sve/acle/asm/st2_f16.c: Likewise. * gcc.target/aarch64/sve/acle/asm/st2_f32.c: Likewise. * gcc.target/aarch64/sve/acle/asm/st2_f64.c: Likewise. * gcc.target/aarch64/sve/acle/asm/st2_s16.c: Likewise. * gcc.target/aarch64/sve/acle/asm/st2_s32.c: Likewise. * gcc.target/aarch64/sve/acle/asm/st2_s64.c: Likewise. * gcc.target/aarch64/sve/acle/asm/st2_s8.c: Likewise. * gcc.target/aarch64/sve/acle/asm/st2_u16.c: Likewise. * gcc.target/aarch64/sve/acle/asm/st2_u32.c: Likewise. * gcc.target/aarch64/sve/acle/asm/st2_u64.c: Likewise. * gcc.target/aarch64/sve/acle/asm/st2_u8.c: Likewise. * gcc.target/aarch64/sve/acle/asm/st3_f16.c: Likewise. * gcc.target/aarch64/sve/acle/asm/st3_f32.c: Likewise. * gcc.target/aarch64/sve/acle/asm/st3_f64.c: Likewise. * gcc.target/aarch64/sve/acle/asm/st3_s16.c: Likewise. * gcc.target/aarch64/sve/acle/asm/st3_s32.c: Likewise. * gcc.target/aarch64/sve/acle/asm/st3_s64.c: Likewise. * gcc.target/aarch64/sve/acle/asm/st3_s8.c: Likewise. * gcc.target/aarch64/sve/acle/asm/st3_u16.c: Likewise. * gcc.target/aarch64/sve/acle/asm/st3_u32.c: Likewise. * gcc.target/aarch64/sve/acle/asm/st3_u64.c: Likewise. * gcc.target/aarch64/sve/acle/asm/st3_u8.c: Likewise. * gcc.target/aarch64/sve/acle/asm/st4_f16.c: Likewise. * gcc.target/aarch64/sve/acle/asm/st4_f32.c: Likewise. * gcc.target/aarch64/sve/acle/asm/st4_f64.c: Likewise. * gcc.target/aarch64/sve/acle/asm/st4_s16.c: Likewise. * gcc.target/aarch64/sve/acle/asm/st4_s32.c: Likewise. * gcc.target/aarch64/sve/acle/asm/st4_s64.c: Likewise. * gcc.target/aarch64/sve/acle/asm/st4_s8.c: Likewise. * gcc.target/aarch64/sve/acle/asm/st4_u16.c: Likewise. * gcc.target/aarch64/sve/acle/asm/st4_u32.c: Likewise. * gcc.target/aarch64/sve/acle/asm/st4_u64.c: Likewise. * gcc.target/aarch64/sve/acle/asm/st4_u8.c: Likewise. * gcc.target/aarch64/sve/acle/asm/stnt1_f16.c: Likewise. * gcc.target/aarch64/sve/acle/asm/stnt1_f32.c: Likewise. * gcc.target/aarch64/sve/acle/asm/stnt1_f64.c: Likewise. * gcc.target/aarch64/sve/acle/asm/stnt1_s16.c: Likewise. * gcc.target/aarch64/sve/acle/asm/stnt1_s32.c: Likewise. * gcc.target/aarch64/sve/acle/asm/stnt1_s64.c: Likewise. * gcc.target/aarch64/sve/acle/asm/stnt1_s8.c: Likewise. * gcc.target/aarch64/sve/acle/asm/stnt1_u16.c: Likewise. * gcc.target/aarch64/sve/acle/asm/stnt1_u32.c: Likewise. * gcc.target/aarch64/sve/acle/asm/stnt1_u64.c: Likewise. * gcc.target/aarch64/sve/acle/asm/stnt1_u8.c: Likewise. * gcc.target/aarch64/sve/acle/general/temporaries_1.c: Likewise. * gcc.target/aarch64/sve2/acle/asm/ldnt1_gather_f32.c: Likewise. * gcc.target/aarch64/sve2/acle/asm/ldnt1_gather_f64.c: Likewise. * gcc.target/aarch64/sve2/acle/asm/ldnt1_gather_s32.c: Likewise. * gcc.target/aarch64/sve2/acle/asm/ldnt1_gather_s64.c: Likewise. * gcc.target/aarch64/sve2/acle/asm/ldnt1_gather_u32.c: Likewise. * gcc.target/aarch64/sve2/acle/asm/ldnt1_gather_u64.c: Likewise. * gcc.target/aarch64/sve2/acle/asm/ldnt1sb_gather_s32.c: Likewise. * gcc.target/aarch64/sve2/acle/asm/ldnt1sb_gather_s64.c: Likewise. * gcc.target/aarch64/sve2/acle/asm/ldnt1sb_gather_u32.c: Likewise. * gcc.target/aarch64/sve2/acle/asm/ldnt1sb_gather_u64.c: Likewise. * gcc.target/aarch64/sve2/acle/asm/ldnt1sh_gather_s32.c: Likewise. * gcc.target/aarch64/sve2/acle/asm/ldnt1sh_gather_s64.c: Likewise. * gcc.target/aarch64/sve2/acle/asm/ldnt1sh_gather_u32.c: Likewise. * gcc.target/aarch64/sve2/acle/asm/ldnt1sh_gather_u64.c: Likewise. * gcc.target/aarch64/sve2/acle/asm/ldnt1sw_gather_s64.c: Likewise. * gcc.target/aarch64/sve2/acle/asm/ldnt1sw_gather_u64.c: Likewise. * gcc.target/aarch64/sve2/acle/asm/ldnt1ub_gather_s32.c: Likewise. * gcc.target/aarch64/sve2/acle/asm/ldnt1ub_gather_s64.c: Likewise. * gcc.target/aarch64/sve2/acle/asm/ldnt1ub_gather_u32.c: Likewise. * gcc.target/aarch64/sve2/acle/asm/ldnt1ub_gather_u64.c: Likewise. * gcc.target/aarch64/sve2/acle/asm/ldnt1uh_gather_s32.c: Likewise. * gcc.target/aarch64/sve2/acle/asm/ldnt1uh_gather_s64.c: Likewise. * gcc.target/aarch64/sve2/acle/asm/ldnt1uh_gather_u32.c: Likewise. * gcc.target/aarch64/sve2/acle/asm/ldnt1uh_gather_u64.c: Likewise. * gcc.target/aarch64/sve2/acle/asm/ldnt1uw_gather_s64.c: Likewise. * gcc.target/aarch64/sve2/acle/asm/ldnt1uw_gather_u64.c: Likewise. * gcc.target/aarch64/sve2/acle/asm/stnt1_scatter_f32.c: Likewise. * gcc.target/aarch64/sve2/acle/asm/stnt1_scatter_f64.c: Likewise. * gcc.target/aarch64/sve2/acle/asm/stnt1_scatter_s32.c: Likewise. * gcc.target/aarch64/sve2/acle/asm/stnt1_scatter_s64.c: Likewise. * gcc.target/aarch64/sve2/acle/asm/stnt1_scatter_u32.c: Likewise. * gcc.target/aarch64/sve2/acle/asm/stnt1_scatter_u64.c: Likewise. * gcc.target/aarch64/sve2/acle/asm/stnt1b_scatter_s32.c: Likewise. * gcc.target/aarch64/sve2/acle/asm/stnt1b_scatter_s64.c: Likewise. * gcc.target/aarch64/sve2/acle/asm/stnt1b_scatter_u32.c: Likewise. * gcc.target/aarch64/sve2/acle/asm/stnt1b_scatter_u64.c: Likewise. * gcc.target/aarch64/sve2/acle/asm/stnt1h_scatter_s32.c: Likewise. * gcc.target/aarch64/sve2/acle/asm/stnt1h_scatter_s64.c: Likewise. * gcc.target/aarch64/sve2/acle/asm/stnt1h_scatter_u32.c: Likewise. * gcc.target/aarch64/sve2/acle/asm/stnt1h_scatter_u64.c: Likewise. * gcc.target/aarch64/sve2/acle/asm/stnt1w_scatter_s64.c: Likewise. * gcc.target/aarch64/sve2/acle/asm/stnt1w_scatter_u64.c: Likewise. * gcc.target/aarch64/sve2/acle/asm/whilerw_f16.c: Likewise. * gcc.target/aarch64/sve2/acle/asm/whilerw_f32.c: Likewise. * gcc.target/aarch64/sve2/acle/asm/whilerw_f64.c: Likewise. * gcc.target/aarch64/sve2/acle/asm/whilerw_s16.c: Likewise. * gcc.target/aarch64/sve2/acle/asm/whilerw_s32.c: Likewise. * gcc.target/aarch64/sve2/acle/asm/whilerw_s64.c: Likewise. * gcc.target/aarch64/sve2/acle/asm/whilerw_s8.c: Likewise. * gcc.target/aarch64/sve2/acle/asm/whilerw_u16.c: Likewise. * gcc.target/aarch64/sve2/acle/asm/whilerw_u32.c: Likewise. * gcc.target/aarch64/sve2/acle/asm/whilerw_u64.c: Likewise. * gcc.target/aarch64/sve2/acle/asm/whilerw_u8.c: Likewise. * gcc.target/aarch64/sve2/acle/asm/whilewr_f16.c: Likewise. * gcc.target/aarch64/sve2/acle/asm/whilewr_f32.c: Likewise. * gcc.target/aarch64/sve2/acle/asm/whilewr_f64.c: Likewise. * gcc.target/aarch64/sve2/acle/asm/whilewr_s16.c: Likewise. * gcc.target/aarch64/sve2/acle/asm/whilewr_s32.c: Likewise. * gcc.target/aarch64/sve2/acle/asm/whilewr_s64.c: Likewise. * gcc.target/aarch64/sve2/acle/asm/whilewr_s8.c: Likewise. * gcc.target/aarch64/sve2/acle/asm/whilewr_u16.c: Likewise. * gcc.target/aarch64/sve2/acle/asm/whilewr_u32.c: Likewise. * gcc.target/aarch64/sve2/acle/asm/whilewr_u64.c: Likewise. * gcc.target/aarch64/sve2/acle/asm/whilewr_u8.c: Likewise.
Richard Sandiford committed -
check-function-bodies allows individual function tests to be annotated with target/xfail selectors, but sometimes it's useful to have the same selector for all functions. 2020-01-23 Richard Sandiford <richard.sandiford@arm.com> gcc/ * doc/sourcebuild.texi (check-function-bodies): Add an optional target/xfail selector. gcc/testsuite/ * lib/scanasm.exp (check-function-bodies): Add an optional target/xfail selector.
Richard Sandiford committed -
In this PR, auto-inc-dec was trying to turn: (set (reg X) (plus (reg X) (const_int N))) (clobber (mem (reg X))) into: (clobber (mem (pre_modify (reg X) ...))) But bare clobber insns are just there to describe dataflow. They're not supposed to generate any code. 2020-01-23 Richard Sandiford <richard.sandiford@arm.com> gcc/ PR rtl-optimization/93124 * auto-inc-dec.c (merge_in_block): Don't add auto inc/decs to bare USE and CLOBBER insns. gcc/testsuite/ * gcc.dg/torture/pr93124.c: New test.
Richard Sandiford committed -
Type descriptors are normally weak and nm will report them as V, so we will skip them when collecting the list of symbols. But when not using GNU nm, they may be reported as D, so also skip them in symstogo. This fixes go/doc/check on Solaris. Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/215900
Ian Lance Taylor committed -
The ICE in PR analyzer/93382 is a validation error. The global variable "idx" acquires a "tainted" state from local array n1[0]. When the frame is popped, the svalue for n1[0] is purged, but the "taint" sm_state_map's entry for "idx" has a svalue_id referencing the now-purged svalue. This is caught by program_state::validate as an assertion failure. This patch fixes the issue by resetting the origin id within sm_state_map entries for the case where the origin id has been purged. gcc/analyzer/ChangeLog: PR analyzer/93382 * program-state.cc (sm_state_map::on_svalue_purge): If the entry survives, but the origin is being purged, then reset the origin to null. gcc/testsuite/ChangeLog: PR analyzer/93382 * gcc.dg/analyzer/pr93382.c: New test.
David Malcolm committed -
When adding namespaces to the analyzer in r10-6151-g75038aa6 I messed up the nesting of the #endif for #if CHECKING_P and the closing of namespace ana. This patch fixes it. gcc/analyzer/ChangeLog: * sm-signal.cc: Fix nesting of CHECKING_P and namespace ana.
David Malcolm committed -
The problem here is arc looks at current_output_insn unconditional but sometimes current_output_insn is NULL. With patchable-function-entry, it will be. This is similar to how the nios2, handles "%.". Committed as obvious after a simple test with -fpatchable-function-entry=1. ChangeLog: * config/arc/arc.c (output_short_suffix): Check insn for nullness.
Andrew Pinski committed -
This reverts commit 9085381f as it was causing default dg-do to be set incorrectly on most targets. Instead move testcases that are vect related testcase that use "dg-require-effective-target vect_*" to the vect test area. ChangeLog: * gcc.dg/tree-ssa/pr88497-1.c: Move to ... * gcc.dg/vect/pr88497-1.c: This. * gcc.dg/tree-ssa/pr88497-2.c: Move to ... * gcc.dg/vect/pr88497-2.c: This. * gcc.dg/tree-ssa/pr88497-3.c: Move to ... * gcc.dg/vect/pr88497-3.c: This. * gcc.dg/tree-ssa/pr88497-4.c: Move to ... * gcc.dg/vect/pr88497-4.c: This. * gcc.dg/tree-ssa/pr88497-5.c: Move to ... * gcc.dg/vect/pr88497-5.c: This. * gcc.dg/tree-ssa/pr88497-6.c: Move to ... * gcc.dg/vect/pr88497-6.c: This. * gcc.dg/tree-ssa/pr88497-7.c: Move to ... * gcc.dg/vect/pr88497-7.c: This. Revert: * tree-ssa.exp: Set DEFAULT_VECTCFLAGS and DEFAULT_VECTCFLAGS. Call check_vect_support_and_set_flags also.
Andrew Pinski committed -
GCC Administrator committed
-
- 22 Jan, 2020 12 commits
-
-
Fixes a build breakage introduced in the 1.14beta1 upgrade. Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/215857
Ian Lance Taylor committed -
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/215342
Andrew Pinski committed -
blender in SPEC is built with -funsigned-char, which is also the default on PPC, and exposed -Wsign-conversion issues that weren't seen by the x86_64 testsuite. In blender we were complaining about operands to an expression that we didn't't previously complain about as a whole. So only check operands after we check the whole expression. Also, to fix the PR 40752 testcases on -funsigned-char targets, don't consider -Wsign-conversion for the second operand of PLUS_EXPR, especially since fold changes "x - 5" to "x + (-5)". And don't use SCHAR_MAX with plain char. PR testsuite/93391 - PR 40752 test fails with unsigned plain char. PR c++/40752 * c-warn.c (conversion_warning): Check operands only after checking the whole expression. Don't check second operand of + for sign.
Jason Merrill committed -
My earlier change removed the warning calls from this function, so the location is no longer useful. * c-common.c (unsafe_conversion_p): Remove location parm.
Jason Merrill committed -
tree-ssa testcases sometimes check autovect effective target but does not set it up. On MIPS, those testcases fail with some TCL error messages. This fixes the issue by calling check_vect_support_and_set_flags inside tree-ssa.exp. There might be other .exp files which need to be done this way too but I have not checked all of them. Tested on x86_64-linux-gnu and a cross to mips64-octeon-linux-gnu. Both full run of the testsuite and running tree-ssa.exp by itself. testsuite/ChangeLog: * tree-ssa.exp: Set DEFAULT_VECTCFLAGS and DEFAULT_VECTCFLAGS. Call check_vect_support_and_set_flags also.
Andrew Pinski committed -
gcc/testsuite/ChangeLog: PR analyzer/93378 * gcc.dg/analyzer/setjmp-pr93378.c: Use setjmp rather than _setjmp.
David Malcolm committed -
PR analyzer/93378 reports an ICE at -O1 -g when analyzing a rewind via longjmp to a setjmp call with. The root cause is that the rewind_info_t::get_setjmp_call attempts to locate the setjmp GIMPLE_CALL via within the exploded_node containing it, but the exploded_node has two stmts: a GIMPLE_DEBUG, then the GIMPLE_CALL, and so erroneously picks the GIMPLE_DEBUG, leading to a failed as_a <const gcall *>. This patch reworks how the analyzer stores information about a setjmp so that instead of storing an exploded_node *, it instead introduces a "setjmp_record" struct, for use by both setjmp_svalue and rewind_info_t. Hence we store the information directly, rather than attempting to reconstruct it, fixing the bug. gcc/analyzer/ChangeLog: PR analyzer/93378 * engine.cc (setjmp_svalue::compare_fields): Update for replacement of m_enode with m_setjmp_record. (setjmp_svalue::add_to_hash): Likewise. (setjmp_svalue::get_index): Rename... (setjmp_svalue::get_enode_index): ...to this. (setjmp_svalue::print_details): Update for replacement of m_enode with m_setjmp_record. (exploded_node::on_longjmp): Likewise. * exploded-graph.h (rewind_info_t::m_enode_origin): Replace... (rewind_info_t::m_setjmp_record): ...with this. (rewind_info_t::rewind_info_t): Update for replacement of m_enode with m_setjmp_record. (rewind_info_t::get_setjmp_point): Likewise. (rewind_info_t::get_setjmp_call): Likewise. * region-model.cc (region_model::dump_summary_of_map): Likewise. (region_model::on_setjmp): Likewise. * region-model.h (struct setjmp_record): New struct. (setjmp_svalue::m_enode): Replace... (setjmp_svalue::m_setjmp_record): ...with this. (setjmp_svalue::setjmp_svalue): Update for replacement of m_enode with m_setjmp_record. (setjmp_svalue::clone): Likewise. (setjmp_svalue::get_index): Rename... (setjmp_svalue::get_enode_index): ...to this. (setjmp_svalue::get_exploded_node): Replace... (setjmp_svalue::get_setjmp_record): ...with this. gcc/testsuite/ChangeLog: PR analyzer/93378 * gcc.dg/analyzer/setjmp-pr93378.c: New test.
David Malcolm committed -
PR analyzer/93316 reports various testsuite failures where I accidentally relied on properties of x86_64-pc-linux-gnu. The following patch fixes them on sparc-sun-solaris2.11 (gcc211 in the GCC compile farm), and, I hope, the other configurations showing failures. There may still be other failures for pattern-test-2.c, which I'm tracking separately as PR analyzer/93291. gcc/analyzer/ChangeLog: PR analyzer/93316 * analyzer.cc (is_setjmp_call_p): Check for "setjmp" as well as "_setjmp". gcc/testsuite/ChangeLog: PR analyzer/93316 * gcc.dg/analyzer/data-model-1.c: Include <alloca.h>. * gcc.dg/analyzer/malloc-1.c: Likewise. * gcc.dg/analyzer/malloc-callbacks.c (get_alloca): Return __builtin_alloca rather than alloca. * gcc.dg/analyzer/malloc-paths-8.c: Include <alloca.h>. * gcc.dg/analyzer/sensitive-1.c: Define __EXTENSIONS__ before including unistd.h. * gcc.dg/analyzer/setjmp-2.c: Replace include of <setjmp.h> with "test-setjmp.h" and usage of setjmp with new SETJMP macro. * gcc.dg/analyzer/setjmp-3.c: Likewise. * gcc.dg/analyzer/setjmp-4.c: Likewise. * gcc.dg/analyzer/setjmp-5.c: Likewise. * gcc.dg/analyzer/setjmp-6.c: Likewise. * gcc.dg/analyzer/setjmp-7.c: Likewise. * gcc.dg/analyzer/setjmp-7a.c: Likewise. * gcc.dg/analyzer/setjmp-8.c: Likewise. * gcc.dg/analyzer/setjmp-9.c: Likewise. * gcc.dg/analyzer/test-setjmp.h: New header.
David Malcolm committed -
PR analyzer/93307 reports that in an LTO bootstrap, there are ODR violations between: - the "region" type: gcc/analyzer/region-model.h:792 vs: gcc/sched-int.h:1443 - the "constraint" type: gcc/analyzer/constraint-manager.h:121 vs: gcc/tree-ssa-structalias.c:533 This patches solves this clash by putting all of the analyzer names within a namespace. I chose "ana" as it is short (to save typing). The analyzer selftests are moved from namespace "selftest" to "ana::selftest". There are various places where the namespace has to be closed and reopened, to allow e.g. for specializations of templates in the global namespace. gcc/analyzer/ChangeLog: PR analyzer/93307 * analysis-plan.h: Wrap everything namespace "ana". * analyzer-logging.cc: Likewise. * analyzer-logging.h: Likewise. * analyzer-pass.cc (pass_analyzer::execute): Update for "ana" namespace. * analyzer-selftests.cc: Wrap everything namespace "ana". * analyzer-selftests.h: Likewise. * analyzer.h: Likewise for forward decls of types. * call-string.h: Likewise. * checker-path.cc: Likewise. * checker-path.h: Likewise. * constraint-manager.cc: Likewise. * constraint-manager.h: Likewise. * diagnostic-manager.cc: Likewise. * diagnostic-manager.h: Likewise. * engine.cc: Likewise. * engine.h: Likewise. * exploded-graph.h: Likewise. * function-set.cc: Likewise. * function-set.h: Likewise. * pending-diagnostic.cc: Likewise. * pending-diagnostic.h: Likewise. * program-point.cc: Likewise. * program-point.h: Likewise. * program-state.cc: Likewise. * program-state.h: Likewise. * region-model.cc: Likewise. * region-model.h: Likewise. * sm-file.cc: Likewise. * sm-malloc.cc: Likewise. * sm-pattern-test.cc: Likewise. * sm-sensitive.cc: Likewise. * sm-signal.cc: Likewise. * sm-taint.cc: Likewise. * sm.cc: Likewise. * sm.h: Likewise. * state-purge.h: Likewise. * supergraph.cc: Likewise. * supergraph.h: Likewise. gcc/ChangeLog: PR analyzer/93307 * gdbinit.in (break-on-saved-diagnostic): Update for move of diagnostic_manager into "ana" namespace. * selftest-run-tests.c (selftest::run_tests): Update for move of selftest::run_analyzer_selftests to ana::selftest::run_analyzer_selftests.
David Malcolm committed -
The function name was changed in 1.14beta1. Fix the non-x86, non-s390 code. Fixes golang/go#36694 Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/215724
Ian Lance Taylor committed -
Here the problem is that if the noexcept specifier is used in the context of a const member function, const is not considered for the member variables, leading to a bogus error. g's const makes its 'this' const, so the first overload of f should be selected. In cp_parser_noexcept_specification_opt we inject 'this', but always unqualified: 25737 if (current_class_type) 25738 inject_this_parameter (current_class_type, TYPE_UNQUALIFIED); so we need to pass the function's qualifiers down here. In cp_parser_direct_declarator it's easy: use the just parsed cv_quals, in cp_parser_late_noexcept_specifier look at the 'this' parameter to figure it out. 2020-01-22 Marek Polacek <polacek@redhat.com> PR c++/92907 - noexcept does not consider "const" in member functions. * parser.c (cp_parser_lambda_declarator_opt): Pass the proper qualifiers to cp_parser_exception_specification_opt. (cp_parser_direct_declarator): Pass the function qualifiers to cp_parser_exception_specification_opt. (cp_parser_class_specifier_1): Pass the function declaration to cp_parser_late_noexcept_specifier. (cp_parser_late_noexcept_specifier): Add a tree parameter. Use it to pass the qualifiers of the function to cp_parser_noexcept_specification_opt. (cp_parser_noexcept_specification_opt): New cp_cv_quals parameter. Use it in inject_this_parameter. (cp_parser_exception_specification_opt): New cp_cv_quals parameter. Use it. (cp_parser_transaction): Pass TYPE_UNQUALIFIED to cp_parser_noexcept_specification_opt. (cp_parser_transaction_expression): Likewise. * g++.dg/cpp0x/noexcept56.C: New test.
Marek Polacek committed -
This is a crash with constexpr if, when trying to see if the call in the if-statement is std::is_constant_evaluated. cp_get_callee_fndecl_nofold can return NULL_TREE and fndecl_built_in_p doesn't expect to get a null tree, so check FNDECL first.
Marek Polacek committed
-