aboutsummaryrefslogtreecommitdiff
path: root/gcc
AgeCommit message (Collapse)AuthorFilesLines
2023-11-08test: Fix bb-slp-33.c for RVVJuzhe-Zhong1-9/+26
gcc/testsuite/ChangeLog: * gcc.dg/vect/bb-slp-33.c: Rewrite the condition.
2023-11-08c-family: Enable -fpermissive for C and ObjCFlorian Weimer3-3/+21
Future changes will treat some C front end warnings similar to -Wnarrowing. gcc/ * doc/invoke.texi (Warning Options): Mention C diagnostics for -fpermissive. gcc/c-family/ * c.opt (fpermissive): Enable for C and ObjC. * c-opts.cc (c_common_post_options): Enable -fpermissive.
2023-11-08RISC-V: Normalize user vsetvl intrinsics[PR112092]Juzhe-Zhong13-22/+83
Since our user vsetvl intrinsics are defined as just calculate the VL output which is the number of the elements to be processed. Such intrinsics do not have any side effects. We should normalize them when they have same ratio. E.g __riscv_vsetvl_e8mf8 result is same as __riscv_vsetvl_e64m1. Normalize them can allow us have better codegen. Consider this following example: #include "riscv_vector.h" void foo(int32_t *in1, int32_t *in2, int32_t *in3, int32_t *out, size_t n, int cond, int avl) { size_t vl; if (cond) vl = __riscv_vsetvl_e32m1(avl); else vl = __riscv_vsetvl_e16mf2(avl); for (size_t i = 0; i < n; i += 1) { vint32m1_t a = __riscv_vle32_v_i32m1(in1, vl); vint32m1_t b = __riscv_vle32_v_i32m1_tu(a, in2, vl); vint32m1_t c = __riscv_vle32_v_i32m1_tu(b, in3, vl); __riscv_vse32_v_i32m1(out, c, vl); } } Before this patch: foo: beq a5,zero,.L2 vsetvli a6,a6,e32,m1,tu,ma .L3: li a5,0 beq a4,zero,.L9 .L4: vle32.v v1,0(a0) addi a5,a5,1 vle32.v v1,0(a1) vle32.v v1,0(a2) vse32.v v1,0(a3) bne a4,a5,.L4 .L9: ret .L2: vsetvli zero,a6,e32,m1,tu,ma j .L3 After this patch: foo: li a5,0 vsetvli zero,a6,e32,m1,tu,ma beq a4,zero,.L9 .L4: vle32.v v1,0(a0) addi a5,a5,1 vle32.v v1,0(a1) vle32.v v1,0(a2) vse32.v v1,0(a3) bne a4,a5,.L4 .L9: ret PR target/112092 gcc/ChangeLog: * config/riscv/riscv-vector-builtins-bases.cc: Normalize the vsetvls. gcc/testsuite/ChangeLog: * gcc.target/riscv/rvv/vsetvl/pr109743-1.c: Adapt test. * gcc.target/riscv/rvv/vsetvl/pr109743-3.c: Ditto. * gcc.target/riscv/rvv/vsetvl/vsetvl-11.c: Ditto. * gcc.target/riscv/rvv/vsetvl/vsetvl-15.c: Ditto. * gcc.target/riscv/rvv/vsetvl/vsetvl-22.c: Ditto. * gcc.target/riscv/rvv/vsetvl/vsetvlmax-13.c: Ditto. * gcc.target/riscv/rvv/vsetvl/vsetvlmax-15.c: Ditto. * gcc.target/riscv/rvv/vsetvl/vsetvlmax-5.c: Ditto. * gcc.target/riscv/rvv/vsetvl/vsetvlmax-7.c: Ditto. * gcc.target/riscv/rvv/vsetvl/vsetvlmax-8.c: Ditto. * gcc.target/riscv/rvv/vsetvl/pr112092-1.c: New test. * gcc.target/riscv/rvv/vsetvl/pr112092-2.c: New test.
2023-11-08i386: Fix isa attribute for TI/TF andnot modeHaochen Jiang3-1/+11
gcc/ChangeLog: PR target/111907 * config/i386/i386.md (avx_noavx512vl): New definition for isa attribute. * config/i386/sse.md (*andnot<mode>3): Change isa attribute from avx_noavx512f to avx_noavx512vl. gcc/testsuite/ChangeLog: PR target/111907 * gcc.target/i386/pr111907.c: New test.
2023-11-08testsuite: Rename c2x-*, gnu2x-* tests to c23-*, gnu23-*Joseph Myers229-17/+17
Completing the move to refer to C23 in place of C2X, rename all tests with "c2x" or "gnu2x" in their names to use "c23" or "gnu23" instead. 17 files in the testsuite that referred to such tests (or, in one case, a generated .i file to be scanned) by those names are updated for the renaming. Bootstrapped with no regressions for x86_64-pc-linux-gnu. gcc/testsuite/ * gcc.dg/atomic/c2x-stdatomic-lockfree-char8_t.c: Move to ... * gcc.dg/atomic/c23-stdatomic-lockfree-char8_t.c: ... here. * gcc.dg/atomic/c2x-stdatomic-var-init-1.c: Move to ... * gcc.dg/atomic/c23-stdatomic-var-init-1.c: ... here. * gcc.dg/atomic/gnu2x-stdatomic-lockfree-char8_t.c: Move to ... * gcc.dg/atomic/gnu23-stdatomic-lockfree-char8_t.c: ... here. Update reference to moved file. * gcc.dg/c2x-align-1.c: Move to ... * gcc.dg/c23-align-1.c: ... here. * gcc.dg/c2x-align-6.c: Move to ... * gcc.dg/c23-align-6.c: ... here. * gcc.dg/c2x-attr-deprecated-1.c: Move to ... * gcc.dg/c23-attr-deprecated-1.c: ... here. Update reference to moved file. * gcc.dg/c2x-attr-deprecated-2.c: Move to ... * gcc.dg/c23-attr-deprecated-2.c: ... here. * gcc.dg/c2x-attr-deprecated-3.c: Move to ... * gcc.dg/c23-attr-deprecated-3.c: ... here. * gcc.dg/c2x-attr-deprecated-4.c: Move to ... * gcc.dg/c23-attr-deprecated-4.c: ... here. * gcc.dg/c2x-attr-fallthrough-1.c: Move to ... * gcc.dg/c23-attr-fallthrough-1.c: ... here. * gcc.dg/c2x-attr-fallthrough-2.c: Move to ... * gcc.dg/c23-attr-fallthrough-2.c: ... here. * gcc.dg/c2x-attr-fallthrough-3.c: Move to ... * gcc.dg/c23-attr-fallthrough-3.c: ... here. * gcc.dg/c2x-attr-fallthrough-4.c: Move to ... * gcc.dg/c23-attr-fallthrough-4.c: ... here. * gcc.dg/c2x-attr-fallthrough-5.c: Move to ... * gcc.dg/c23-attr-fallthrough-5.c: ... here. * gcc.dg/c2x-attr-fallthrough-6.c: Move to ... * gcc.dg/c23-attr-fallthrough-6.c: ... here. * gcc.dg/c2x-attr-maybe_unused-1.c: Move to ... * gcc.dg/c23-attr-maybe_unused-1.c: ... here. * gcc.dg/c2x-attr-maybe_unused-2.c: Move to ... * gcc.dg/c23-attr-maybe_unused-2.c: ... here. * gcc.dg/c2x-attr-maybe_unused-3.c: Move to ... * gcc.dg/c23-attr-maybe_unused-3.c: ... here. * gcc.dg/c2x-attr-maybe_unused-4.c: Move to ... * gcc.dg/c23-attr-maybe_unused-4.c: ... here. * gcc.dg/c2x-attr-nodiscard-1.c: Move to ... * gcc.dg/c23-attr-nodiscard-1.c: ... here. * gcc.dg/c2x-attr-nodiscard-2.c: Move to ... * gcc.dg/c23-attr-nodiscard-2.c: ... here. * gcc.dg/c2x-attr-nodiscard-3.c: Move to ... * gcc.dg/c23-attr-nodiscard-3.c: ... here. * gcc.dg/c2x-attr-nodiscard-4.c: Move to ... * gcc.dg/c23-attr-nodiscard-4.c: ... here. * gcc.dg/c2x-attr-noreturn-1.c: Move to ... * gcc.dg/c23-attr-noreturn-1.c: ... here. * gcc.dg/c2x-attr-noreturn-2.c: Move to ... * gcc.dg/c23-attr-noreturn-2.c: ... here. * gcc.dg/c2x-attr-noreturn-3.c: Move to ... * gcc.dg/c23-attr-noreturn-3.c: ... here. * gcc.dg/c2x-attr-syntax-1.c: Move to ... * gcc.dg/c23-attr-syntax-1.c: ... here. * gcc.dg/c2x-attr-syntax-2.c: Move to ... * gcc.dg/c23-attr-syntax-2.c: ... here. * gcc.dg/c2x-attr-syntax-3.c: Move to ... * gcc.dg/c23-attr-syntax-3.c: ... here. * gcc.dg/c2x-attr-syntax-4.c: Move to ... * gcc.dg/c23-attr-syntax-4.c: ... here. * gcc.dg/c2x-attr-syntax-5.c: Move to ... * gcc.dg/c23-attr-syntax-5.c: ... here. * gcc.dg/c2x-attr-syntax-6.c: Move to ... * gcc.dg/c23-attr-syntax-6.c: ... here. * gcc.dg/c2x-attr-syntax-7.c: Move to ... * gcc.dg/c23-attr-syntax-7.c: ... here. * gcc.dg/c2x-auto-1.c: Move to ... * gcc.dg/c23-auto-1.c: ... here. * gcc.dg/c2x-auto-2.c: Move to ... * gcc.dg/c23-auto-2.c: ... here. * gcc.dg/c2x-auto-3.c: Move to ... * gcc.dg/c23-auto-3.c: ... here. * gcc.dg/c2x-auto-4.c: Move to ... * gcc.dg/c23-auto-4.c: ... here. * gcc.dg/c2x-binary-constants-1.c: Move to ... * gcc.dg/c23-binary-constants-1.c: ... here. * gcc.dg/c2x-binary-constants-2.c: Move to ... * gcc.dg/c23-binary-constants-2.c: ... here. * gcc.dg/c2x-binary-constants-3.c: Move to ... * gcc.dg/c23-binary-constants-3.c: ... here. * gcc.dg/c2x-bool-1.c: Move to ... * gcc.dg/c23-bool-1.c: ... here. * gcc.dg/c2x-bool-2.c: Move to ... * gcc.dg/c23-bool-2.c: ... here. * gcc.dg/c2x-bool-limits-1.c: Move to ... * gcc.dg/c23-bool-limits-1.c: ... here. * gcc.dg/c2x-builtins-1.c: Move to ... * gcc.dg/c23-builtins-1.c: ... here. * gcc.dg/c2x-complit-1.c: Move to ... * gcc.dg/c23-complit-1.c: ... here. * gcc.dg/c2x-complit-2.c: Move to ... * gcc.dg/c23-complit-2.c: ... here. * gcc.dg/c2x-complit-3.c: Move to ... * gcc.dg/c23-complit-3.c: ... here. * gcc.dg/c2x-complit-4.c: Move to ... * gcc.dg/c23-complit-4.c: ... here. * gcc.dg/c2x-complit-5.c: Move to ... * gcc.dg/c23-complit-5.c: ... here. * gcc.dg/c2x-complit-6.c: Move to ... * gcc.dg/c23-complit-6.c: ... here. * gcc.dg/c2x-complit-7.c: Move to ... * gcc.dg/c23-complit-7.c: ... here. * gcc.dg/c2x-complit-8.c: Move to ... * gcc.dg/c23-complit-8.c: ... here. * gcc.dg/c2x-concat-1.c: Move to ... * gcc.dg/c23-concat-1.c: ... here. * gcc.dg/c2x-constexpr-1.c: Move to ... * gcc.dg/c23-constexpr-1.c: ... here. * gcc.dg/c2x-constexpr-2a.c: Move to ... * gcc.dg/c23-constexpr-2a.c: ... here. Update reference to moved file. * gcc.dg/c2x-constexpr-2b.c: Move to ... * gcc.dg/c23-constexpr-2b.c: ... here. * gcc.dg/c2x-constexpr-3.c: Move to ... * gcc.dg/c23-constexpr-3.c: ... here. * gcc.dg/c2x-constexpr-4.c: Move to ... * gcc.dg/c23-constexpr-4.c: ... here. * gcc.dg/c2x-constexpr-5.c: Move to ... * gcc.dg/c23-constexpr-5.c: ... here. * gcc.dg/c2x-constexpr-6.c: Move to ... * gcc.dg/c23-constexpr-6.c: ... here. * gcc.dg/c2x-constexpr-7.c: Move to ... * gcc.dg/c23-constexpr-7.c: ... here. * gcc.dg/c2x-constexpr-8.c: Move to ... * gcc.dg/c23-constexpr-8.c: ... here. * gcc.dg/c2x-constexpr-9.c: Move to ... * gcc.dg/c23-constexpr-9.c: ... here. * gcc.dg/c2x-digit-separators-1.c: Move to ... * gcc.dg/c23-digit-separators-1.c: ... here. * gcc.dg/c2x-digit-separators-2.c: Move to ... * gcc.dg/c23-digit-separators-2.c: ... here. * gcc.dg/c2x-digit-separators-3.c: Move to ... * gcc.dg/c23-digit-separators-3.c: ... here. * gcc.dg/c2x-empty-init-1.c: Move to ... * gcc.dg/c23-empty-init-1.c: ... here. * gcc.dg/c2x-empty-init-2.c: Move to ... * gcc.dg/c23-empty-init-2.c: ... here. * gcc.dg/c2x-empty-init-3.c: Move to ... * gcc.dg/c23-empty-init-3.c: ... here. * gcc.dg/c2x-enum-1.c: Move to ... * gcc.dg/c23-enum-1.c: ... here. * gcc.dg/c2x-enum-2.c: Move to ... * gcc.dg/c23-enum-2.c: ... here. * gcc.dg/c2x-enum-3.c: Move to ... * gcc.dg/c23-enum-3.c: ... here. * gcc.dg/c2x-enum-4.c: Move to ... * gcc.dg/c23-enum-4.c: ... here. * gcc.dg/c2x-enum-5.c: Move to ... * gcc.dg/c23-enum-5.c: ... here. * gcc.dg/c2x-enum-6.c: Move to ... * gcc.dg/c23-enum-6.c: ... here. * gcc.dg/c2x-enum-7.c: Move to ... * gcc.dg/c23-enum-7.c: ... here. * gcc.dg/c2x-enum-8.c: Move to ... * gcc.dg/c23-enum-8.c: ... here. * gcc.dg/c2x-float-1.c: Move to ... * gcc.dg/c23-float-1.c: ... here. * gcc.dg/c2x-float-10.c: Move to ... * gcc.dg/c23-float-10.c: ... here. * gcc.dg/c2x-float-11.c: Move to ... * gcc.dg/c23-float-11.c: ... here. * gcc.dg/c2x-float-12.c: Move to ... * gcc.dg/c23-float-12.c: ... here. * gcc.dg/c2x-float-13.c: Move to ... * gcc.dg/c23-float-13.c: ... here. * gcc.dg/c2x-float-2.c: Move to ... * gcc.dg/c23-float-2.c: ... here. * gcc.dg/c2x-float-3.c: Move to ... * gcc.dg/c23-float-3.c: ... here. * gcc.dg/c2x-float-4.c: Move to ... * gcc.dg/c23-float-4.c: ... here. * gcc.dg/c2x-float-5.c: Move to ... * gcc.dg/c23-float-5.c: ... here. * gcc.dg/c2x-float-6.c: Move to ... * gcc.dg/c23-float-6.c: ... here. * gcc.dg/c2x-float-7a.c: Move to ... * gcc.dg/c23-float-7a.c: ... here. * gcc.dg/c2x-float-7b.c: Move to ... * gcc.dg/c23-float-7b.c: ... here. * gcc.dg/c2x-float-7c.c: Move to ... * gcc.dg/c23-float-7c.c: ... here. * gcc.dg/c2x-float-8.c: Move to ... * gcc.dg/c23-float-8.c: ... here. * gcc.dg/c2x-float-9.c: Move to ... * gcc.dg/c23-float-9.c: ... here. * gcc.dg/c2x-float-no-dfp-1.c: Move to ... * gcc.dg/c23-float-no-dfp-1.c: ... here. * gcc.dg/c2x-float-no-dfp-2.c: Move to ... * gcc.dg/c23-float-no-dfp-2.c: ... here. Update reference to moved file. * gcc.dg/c2x-float-no-dfp-3.c: Move to ... * gcc.dg/c23-float-no-dfp-3.c: ... here. * gcc.dg/c2x-float-no-dfp-4.c: Move to ... * gcc.dg/c23-float-no-dfp-4.c: ... here. Update reference to moved file. * gcc.dg/c2x-floatn-1.c: Move to ... * gcc.dg/c23-floatn-1.c: ... here. * gcc.dg/c2x-floatn-2.c: Move to ... * gcc.dg/c23-floatn-2.c: ... here. * gcc.dg/c2x-floatn-3.c: Move to ... * gcc.dg/c23-floatn-3.c: ... here. * gcc.dg/c2x-floatn-4.c: Move to ... * gcc.dg/c23-floatn-4.c: ... here. * gcc.dg/c2x-floatn-5.c: Move to ... * gcc.dg/c23-floatn-5.c: ... here. * gcc.dg/c2x-floatn-6.c: Move to ... * gcc.dg/c23-floatn-6.c: ... here. * gcc.dg/c2x-floatn-7.c: Move to ... * gcc.dg/c23-floatn-7.c: ... here. * gcc.dg/c2x-floatn-8.c: Move to ... * gcc.dg/c23-floatn-8.c: ... here. * gcc.dg/c2x-fordecl-1.c: Move to ... * gcc.dg/c23-fordecl-1.c: ... here. * gcc.dg/c2x-fordecl-2.c: Move to ... * gcc.dg/c23-fordecl-2.c: ... here. * gcc.dg/c2x-fordecl-3.c: Move to ... * gcc.dg/c23-fordecl-3.c: ... here. * gcc.dg/c2x-fordecl-4.c: Move to ... * gcc.dg/c23-fordecl-4.c: ... here. * gcc.dg/c2x-has-c-attribute-1.c: Move to ... * gcc.dg/c23-has-c-attribute-1.c: ... here. * gcc.dg/c2x-has-c-attribute-2.c: Move to ... * gcc.dg/c23-has-c-attribute-2.c: ... here. * gcc.dg/c2x-has-c-attribute-3.c: Move to ... * gcc.dg/c23-has-c-attribute-3.c: ... here. * gcc.dg/c2x-has-c-attribute-4.c: Move to ... * gcc.dg/c23-has-c-attribute-4.c: ... here. * gcc.dg/c2x-labels-1.c: Move to ... * gcc.dg/c23-labels-1.c: ... here. * gcc.dg/c2x-labels-2.c: Move to ... * gcc.dg/c23-labels-2.c: ... here. * gcc.dg/c2x-labels-3.c: Move to ... * gcc.dg/c23-labels-3.c: ... here. * gcc.dg/c2x-limits-1.c: Move to ... * gcc.dg/c23-limits-1.c: ... here. * gcc.dg/c2x-no-dfp-1.c: Move to ... * gcc.dg/c23-no-dfp-1.c: ... here. * gcc.dg/c2x-nullptr-1.c: Move to ... * gcc.dg/c23-nullptr-1.c: ... here. * gcc.dg/c2x-nullptr-2.c: Move to ... * gcc.dg/c23-nullptr-2.c: ... here. * gcc.dg/c2x-nullptr-3.c: Move to ... * gcc.dg/c23-nullptr-3.c: ... here. * gcc.dg/c2x-nullptr-4.c: Move to ... * gcc.dg/c23-nullptr-4.c: ... here. * gcc.dg/c2x-nullptr-5.c: Move to ... * gcc.dg/c23-nullptr-5.c: ... here. * gcc.dg/c2x-nullptr-6.c: Move to ... * gcc.dg/c23-nullptr-6.c: ... here. * gcc.dg/c2x-old-style-definition-1.c: Move to ... * gcc.dg/c23-old-style-definition-1.c: ... here. * gcc.dg/c2x-old-style-definition-2.c: Move to ... * gcc.dg/c23-old-style-definition-2.c: ... here. * gcc.dg/c2x-old-style-definition-3.c: Move to ... * gcc.dg/c23-old-style-definition-3.c: ... here. * gcc.dg/c2x-old-style-definition-4.c: Move to ... * gcc.dg/c23-old-style-definition-4.c: ... here. * gcc.dg/c2x-old-style-definition-5.c: Move to ... * gcc.dg/c23-old-style-definition-5.c: ... here. * gcc.dg/c2x-old-style-definition-6.c: Move to ... * gcc.dg/c23-old-style-definition-6.c: ... here. * gcc.dg/c2x-parm-omit-1.c: Move to ... * gcc.dg/c23-parm-omit-1.c: ... here. * gcc.dg/c2x-parm-omit-2.c: Move to ... * gcc.dg/c23-parm-omit-2.c: ... here. * gcc.dg/c2x-parm-omit-3.c: Move to ... * gcc.dg/c23-parm-omit-3.c: ... here. * gcc.dg/c2x-parm-omit-4.c: Move to ... * gcc.dg/c23-parm-omit-4.c: ... here. * gcc.dg/c2x-qual-1.c: Move to ... * gcc.dg/c23-qual-1.c: ... here. * gcc.dg/c2x-qual-2.c: Move to ... * gcc.dg/c23-qual-2.c: ... here. * gcc.dg/c2x-qual-3.c: Move to ... * gcc.dg/c23-qual-3.c: ... here. * gcc.dg/c2x-qual-4.c: Move to ... * gcc.dg/c23-qual-4.c: ... here. * gcc.dg/c2x-qual-5.c: Move to ... * gcc.dg/c23-qual-5.c: ... here. * gcc.dg/c2x-qual-6.c: Move to ... * gcc.dg/c23-qual-6.c: ... here. * gcc.dg/c2x-qual-7.c: Move to ... * gcc.dg/c23-qual-7.c: ... here. * gcc.dg/c2x-static-assert-1.c: Move to ... * gcc.dg/c23-static-assert-1.c: ... here. * gcc.dg/c2x-static-assert-2.c: Move to ... * gcc.dg/c23-static-assert-2.c: ... here. * gcc.dg/c2x-static-assert-3.c: Move to ... * gcc.dg/c23-static-assert-3.c: ... here. * gcc.dg/c2x-static-assert-4.c: Move to ... * gcc.dg/c23-static-assert-4.c: ... here. * gcc.dg/c2x-stdarg-1.c: Move to ... * gcc.dg/c23-stdarg-1.c: ... here. * gcc.dg/c2x-stdarg-2.c: Move to ... * gcc.dg/c23-stdarg-2.c: ... here. * gcc.dg/c2x-stdarg-3.c: Move to ... * gcc.dg/c23-stdarg-3.c: ... here. * gcc.dg/c2x-stdarg-4.c: Move to ... * gcc.dg/c23-stdarg-4.c: ... here. * gcc.dg/c2x-stdarg-5.c: Move to ... * gcc.dg/c23-stdarg-5.c: ... here. * gcc.dg/c2x-stdatomic-1.c: Move to ... * gcc.dg/c23-stdatomic-1.c: ... here. * gcc.dg/c2x-stddef-1.c: Move to ... * gcc.dg/c23-stddef-1.c: ... here. * gcc.dg/c2x-stdint-1.c: Move to ... * gcc.dg/c23-stdint-1.c: ... here. * gcc.dg/c2x-thread-local-1.c: Move to ... * gcc.dg/c23-thread-local-1.c: ... here. * gcc.dg/c2x-thread-local-2.c: Move to ... * gcc.dg/c23-thread-local-2.c: ... here. * gcc.dg/c2x-typeof-1.c: Move to ... * gcc.dg/c23-typeof-1.c: ... here. * gcc.dg/c2x-typeof-2.c: Move to ... * gcc.dg/c23-typeof-2.c: ... here. * gcc.dg/c2x-typeof-3.c: Move to ... * gcc.dg/c23-typeof-3.c: ... here. * gcc.dg/c2x-unproto-1.c: Move to ... * gcc.dg/c23-unproto-1.c: ... here. * gcc.dg/c2x-unproto-2.c: Move to ... * gcc.dg/c23-unproto-2.c: ... here. * gcc.dg/c2x-unproto-3.c: Move to ... * gcc.dg/c23-unproto-3.c: ... here. * gcc.dg/c2x-unproto-4.c: Move to ... * gcc.dg/c23-unproto-4.c: ... here. * gcc.dg/c2x-unreachable-1.c: Move to ... * gcc.dg/c23-unreachable-1.c: ... here. * gcc.dg/c2x-utf8char-1.c: Move to ... * gcc.dg/c23-utf8char-1.c: ... here. * gcc.dg/c2x-utf8char-2.c: Move to ... * gcc.dg/c23-utf8char-2.c: ... here. * gcc.dg/c2x-utf8char-3.c: Move to ... * gcc.dg/c23-utf8char-3.c: ... here. * gcc.dg/c2x-utf8str-type.c: Move to ... * gcc.dg/c23-utf8str-type.c: ... here. * gcc.dg/c2x-utf8str.c: Move to ... * gcc.dg/c23-utf8str.c: ... here. * gcc.dg/cpp/c2x-elifdef-1.c: Move to ... * gcc.dg/cpp/c23-elifdef-1.c: ... here. * gcc.dg/cpp/c2x-elifdef-2.c: Move to ... * gcc.dg/cpp/c23-elifdef-2.c: ... here. * gcc.dg/cpp/c2x-scope-1.c: Move to ... * gcc.dg/cpp/c23-scope-1.c: ... here. * gcc.dg/cpp/c2x-scope-2.c: Move to ... * gcc.dg/cpp/c23-scope-2.c: ... here. Update reference to moved file. * gcc.dg/cpp/c2x-trigraphs-1.c: Move to ... * gcc.dg/cpp/c23-trigraphs-1.c: ... here. * gcc.dg/cpp/c2x-trigraphs-2.c: Move to ... * gcc.dg/cpp/c23-trigraphs-2.c: ... here. * gcc.dg/cpp/c2x-ucn-1.c: Move to ... * gcc.dg/cpp/c23-ucn-1.c: ... here. * gcc.dg/cpp/c2x-ucnid-1-utf8.c: Move to ... * gcc.dg/cpp/c23-ucnid-1-utf8.c: ... here. * gcc.dg/cpp/c2x-ucnid-1.c: Move to ... * gcc.dg/cpp/c23-ucnid-1.c: ... here. * gcc.dg/cpp/c2x-va-opt-1.c: Move to ... * gcc.dg/cpp/c23-va-opt-1.c: ... here. * gcc.dg/cpp/c2x-warning-1.c: Move to ... * gcc.dg/cpp/c23-warning-1.c: ... here. * gcc.dg/cpp/c2x-warning-2.c: Move to ... * gcc.dg/cpp/c23-warning-2.c: ... here. * gcc.dg/cpp/gnu2x-warning-1.c: Move to ... * gcc.dg/cpp/gnu23-warning-1.c: ... here. * gcc.dg/cpp/gnu2x-warning-2.c: Move to ... * gcc.dg/cpp/gnu23-warning-2.c: ... here. * gcc.dg/dfp/c2x-builtins-dfp-1.c: Move to ... * gcc.dg/dfp/c23-builtins-dfp-1.c: ... here. * gcc.dg/dfp/c2x-constants-1.c: Move to ... * gcc.dg/dfp/c23-constants-1.c: ... here. * gcc.dg/dfp/c2x-constants-2.c: Move to ... * gcc.dg/dfp/c23-constants-2.c: ... here. * gcc.dg/dfp/c2x-constexpr-dfp-1.c: Move to ... * gcc.dg/dfp/c23-constexpr-dfp-1.c: ... here. * gcc.dg/dfp/c2x-constexpr-dfp-2.c: Move to ... * gcc.dg/dfp/c23-constexpr-dfp-2.c: ... here. * gcc.dg/dfp/c2x-float-dfp-1.c: Move to ... * gcc.dg/dfp/c23-float-dfp-1.c: ... here. * gcc.dg/dfp/c2x-float-dfp-2.c: Move to ... * gcc.dg/dfp/c23-float-dfp-2.c: ... here. Update reference to moved file. * gcc.dg/dfp/c2x-float-dfp-3.c: Move to ... * gcc.dg/dfp/c23-float-dfp-3.c: ... here. * gcc.dg/dfp/c2x-float-dfp-4.c: Move to ... * gcc.dg/dfp/c23-float-dfp-4.c: ... here. * gcc.dg/dfp/c2x-float-dfp-5.c: Move to ... * gcc.dg/dfp/c23-float-dfp-5.c: ... here. * gcc.dg/dfp/c2x-float-dfp-6.c: Move to ... * gcc.dg/dfp/c23-float-dfp-6.c: ... here. * gcc.dg/dfp/c2x-float-dfp-7.c: Move to ... * gcc.dg/dfp/c23-float-dfp-7.c: ... here. * gcc.dg/dfp/c2x-float-dfp-8.c: Move to ... * gcc.dg/dfp/c23-float-dfp-8.c: ... here. * gcc.dg/dfp/c2x-keywords-1.c: Move to ... * gcc.dg/dfp/c23-keywords-1.c: ... here. * gcc.dg/dfp/c2x-keywords-2.c: Move to ... * gcc.dg/dfp/c23-keywords-2.c: ... here. * gcc.dg/format/c2x-dfp-printf-1.c: Move to ... * gcc.dg/format/c23-dfp-printf-1.c: ... here. * gcc.dg/format/c2x-dfp-scanf-1.c: Move to ... * gcc.dg/format/c23-dfp-scanf-1.c: ... here. * gcc.dg/format/c2x-printf-1.c: Move to ... * gcc.dg/format/c23-printf-1.c: ... here. * gcc.dg/format/c2x-scanf-1.c: Move to ... * gcc.dg/format/c23-scanf-1.c: ... here. * gcc.dg/format/c2x-strftime-1.c: Move to ... * gcc.dg/format/c23-strftime-1.c: ... here. * gcc.dg/gnu2x-attr-syntax-1.c: Move to ... * gcc.dg/gnu23-attr-syntax-1.c: ... here. * gcc.dg/gnu2x-attr-syntax-2.c: Move to ... * gcc.dg/gnu23-attr-syntax-2.c: ... here. * gcc.dg/gnu2x-attrs-1.c: Move to ... * gcc.dg/gnu23-attrs-1.c: ... here. * gcc.dg/gnu2x-attrs-2.c: Move to ... * gcc.dg/gnu23-attrs-2.c: ... here. * gcc.dg/gnu2x-auto-1.c: Move to ... * gcc.dg/gnu23-auto-1.c: ... here. * gcc.dg/gnu2x-builtins-no-dfp-1.c: Move to ... * gcc.dg/gnu23-builtins-no-dfp-1.c: ... here. * gcc.dg/gnu2x-complit-1.c: Move to ... * gcc.dg/gnu23-complit-1.c: ... here. * gcc.dg/gnu2x-complit-2.c: Move to ... * gcc.dg/gnu23-complit-2.c: ... here. * gcc.dg/gnu2x-constexpr-1.c: Move to ... * gcc.dg/gnu23-constexpr-1.c: ... here. * gcc.dg/gnu2x-empty-init-1.c: Move to ... * gcc.dg/gnu23-empty-init-1.c: ... here. * gcc.dg/gnu2x-empty-init-2.c: Move to ... * gcc.dg/gnu23-empty-init-2.c: ... here. * gcc.dg/gnu2x-enum-1.c: Move to ... * gcc.dg/gnu23-enum-1.c: ... here. * gcc.dg/gnu2x-static-assert-1.c: Move to ... * gcc.dg/gnu23-static-assert-1.c: ... here. * gcc.dg/gnu2x-stdarg-1.c: Move to ... * gcc.dg/gnu23-stdarg-1.c: ... here. * gcc.dg/gnu2x-typeof-1.c: Move to ... * gcc.dg/gnu23-typeof-1.c: ... here. * gcc.dg/gnu2x-utf8char-1.c: Move to ... * gcc.dg/gnu23-utf8char-1.c: ... here. Update reference to moved file. * gcc.dg/gnu2x-utf8str-type.c: Move to ... * gcc.dg/gnu23-utf8str-type.c: ... here. Update reference to moved file. * gcc.dg/gnu2x-utf8str.c: Move to ... * gcc.dg/gnu23-utf8str.c: ... here. * gcc.dg/torture/builtin-fp-int-inexact-c2x.c: Move to ... * gcc.dg/torture/builtin-fp-int-inexact-c23.c: ... here. * gcc.dg/torture/c2x-stdarg-split-1a.c: Move to ... * gcc.dg/torture/c23-stdarg-split-1a.c: ... here. Update reference to moved file. * gcc.dg/torture/c2x-stdarg-split-1b.c: Move to ... * gcc.dg/torture/c23-stdarg-split-1b.c: ... here. * objc.dg/attributes/gnu2x-attr-syntax-1.m: Move to ... * objc.dg/attributes/gnu23-attr-syntax-1.m: ... here. Update reference to moved file. * g++.dg/cpp/elifdef-2.C: Update reference to moved file. * g++.dg/cpp/elifdef-4.C: Likewise. * gcc.dg/c11-float-dfp-1.c: Likewise. * gcc.dg/c11-float-dfp-2.c: Likewise. * gcc.dg/cpp/gnu11-elifdef-1.c: Likewise. * gcc.dg/dfp/ts18661-2-float-dfp-1.c: Likewise.
2023-11-08Daily bump.GCC Administrator9-1/+1253
2023-11-08RISC-V: Support FP floor to i/l/ll diff size autovecPan Li14-9/+520
This patch would like to support the FP below API auto vectorization with different type size +----------+-----------+----------+ | API | RV64 | RV32 | +----------+-----------+----------+ | ifloor | DF => SI | DF => SI | | ifloorf | - | - | | lfloor | - | DF => SI | | lfloorf | SF => DI | - | | llfloor | - | - | | llfloorf | SF => DI | SF => DI | +----------+-----------+----------+ Given below code: void test_lfloorf (long *out, float *in, unsigned count) { for (unsigned i = 0; i < count; i++) out[i] = __builtin_lceilf (in[i]); } Before this patch: .L3: flw fa0,0(s0) addi s0,s0,4 addi s1,s1,8 call floorf fcvt.l.s a5,fa0,rtz sd a5,-8(s1) bne s2,s0,.L3 After this patch: fsrmi 2 // RDN mode .L3: vsetvli a5,a2,e32,mf2,ta,ma vle32.v v2,0(a1) slli a3,a5,2 slli a4,a5,3 vfwcvt.x.f.v v1,v2 sub a2,a2,a5 vse64.v v1,0(a0) add a1,a1,a3 add a0,a0,a4 bne a2,zero,.L3 Unfortunately, the HF mode is not include due to it requires additional middle-end support from internal-fun.def. gcc/ChangeLog: * config/riscv/autovec.md: Remove the size check of lfloor. * config/riscv/riscv-v.cc (expand_vec_lfloor): Leverage emit_vec_rounding_to_integer for floor. gcc/testsuite/ChangeLog: * gcc.target/riscv/rvv/autovec/unop/math-ifloor-1.c: New test. * gcc.target/riscv/rvv/autovec/unop/math-ifloor-run-1.c: New test. * gcc.target/riscv/rvv/autovec/unop/math-lfloor-rv32-0.c: New test. * gcc.target/riscv/rvv/autovec/unop/math-lfloor-rv32-run-0.c: New test. * gcc.target/riscv/rvv/autovec/unop/math-lfloorf-rv64-0.c: New test. * gcc.target/riscv/rvv/autovec/unop/math-lfloorf-rv64-run-0.c: New test. * gcc.target/riscv/rvv/autovec/unop/math-llfloorf-0.c: New test. * gcc.target/riscv/rvv/autovec/unop/math-llfloorf-run-0.c: New test. * gcc.target/riscv/rvv/autovec/vls/math-ifloor-1.c: New test. * gcc.target/riscv/rvv/autovec/vls/math-lfloor-rv32-0.c: New test. * gcc.target/riscv/rvv/autovec/vls/math-lfloorf-rv64-0.c: New test. * gcc.target/riscv/rvv/autovec/vls/math-llfloorf-0.c: New test. Signed-off-by: Pan Li <pan2.li@intel.com>
2023-11-07testsuite: Refer more consistently to C23 not C2XJoseph Myers406-607/+607
Continuing the move to refer to C23 in place of C2X throughout the source tree, update testcase contents to use the "c23" or "gnu23" option names in place of the old "c2x" or "gnu2x" names, except for the few tests specifically intended to test the old names, and to refer to C23 in comments. This updates testcase *contents*; testcase naming (renaming c2x-* tests to c23-* and gnu2x-* tests to gnu23-*), with a few consequent changes to contents (where tests #include other tests, or refer to them by name in comments) is to be addressed separately. Bootstrapped with no regressions for x86_64-pc-linux-gnu. gcc/testsuite/ * c-c++-common/alias-1.c: Use "c23" or "gnu23" option names in place of "c2x" or "gnu2x" names, and refer to C23 in comments in place of C2X or C2x. * gcc.dg/Wformat-overflow1.c: Likewise. * gcc.dg/asm-scope-1.c: Likewise. * gcc.dg/atomic/c2x-stdatomic-lockfree-char8_t.c: Likewise. * gcc.dg/atomic/c2x-stdatomic-var-init-1.c: Likewise. * gcc.dg/atomic/gnu2x-stdatomic-lockfree-char8_t.c: Likewise. * gcc.dg/atomic/stdatomic-bitint-1.c: Likewise. * gcc.dg/atomic/stdatomic-bitint-2.c: Likewise. * gcc.dg/attr-assume-1.c: Likewise. * gcc.dg/attr-assume-2.c: Likewise. * gcc.dg/attr-assume-3.c: Likewise. * gcc.dg/attr-assume-4.c: Likewise. * gcc.dg/bitint-1.c: Likewise. * gcc.dg/bitint-10.c: Likewise. * gcc.dg/bitint-11.c: Likewise. * gcc.dg/bitint-12.c: Likewise. * gcc.dg/bitint-13.c: Likewise. * gcc.dg/bitint-14.c: Likewise. * gcc.dg/bitint-15.c: Likewise. * gcc.dg/bitint-16.c: Likewise. * gcc.dg/bitint-17.c: Likewise. * gcc.dg/bitint-18.c: Likewise. * gcc.dg/bitint-19.c: Likewise. * gcc.dg/bitint-2.c: Likewise. * gcc.dg/bitint-20.c: Likewise. * gcc.dg/bitint-21.c: Likewise. * gcc.dg/bitint-22.c: Likewise. * gcc.dg/bitint-23.c: Likewise. * gcc.dg/bitint-25.c: Likewise. * gcc.dg/bitint-28.c: Likewise. * gcc.dg/bitint-29.c: Likewise. * gcc.dg/bitint-3.c: Likewise. * gcc.dg/bitint-30.c: Likewise. * gcc.dg/bitint-31.c: Likewise. * gcc.dg/bitint-32.c: Likewise. * gcc.dg/bitint-34.c: Likewise. * gcc.dg/bitint-35.c: Likewise. * gcc.dg/bitint-36.c: Likewise. * gcc.dg/bitint-38.c: Likewise. * gcc.dg/bitint-39.c: Likewise. * gcc.dg/bitint-4.c: Likewise. * gcc.dg/bitint-5.c: Likewise. * gcc.dg/bitint-6.c: Likewise. * gcc.dg/bitint-7.c: Likewise. * gcc.dg/bitint-8.c: Likewise. * gcc.dg/bitint-9.c: Likewise. * gcc.dg/c11-attr-syntax-3.c: Likewise. * gcc.dg/c11-builtins-1.c: Likewise. * gcc.dg/c11-complit-1.c: Likewise. * gcc.dg/c11-complit-2.c: Likewise. * gcc.dg/c11-complit-3.c: Likewise. * gcc.dg/c11-digit-separators-1.c: Likewise. * gcc.dg/c11-empty-init-3.c: Likewise. * gcc.dg/c11-enum-1.c: Likewise. * gcc.dg/c11-enum-2.c: Likewise. * gcc.dg/c11-enum-3.c: Likewise. * gcc.dg/c11-enum-4.c: Likewise. * gcc.dg/c11-enum-5.c: Likewise. * gcc.dg/c11-enum-6.c: Likewise. * gcc.dg/c11-floatn-5.c: Likewise. * gcc.dg/c11-floatn-6.c: Likewise. * gcc.dg/c11-floatn-7.c: Likewise. * gcc.dg/c11-floatn-8.c: Likewise. * gcc.dg/c11-fordecl-3.c: Likewise. * gcc.dg/c11-fordecl-4.c: Likewise. * gcc.dg/c11-keywords-1.c: Likewise. * gcc.dg/c11-old-style-definition-1.c: Likewise. * gcc.dg/c11-old-style-definition-2.c: Likewise. * gcc.dg/c11-parm-omit-3.c: Likewise. * gcc.dg/c11-qual-1.c: Likewise. * gcc.dg/c11-static-assert-9.c: Likewise. * gcc.dg/c11-stdarg-3.c: Likewise. * gcc.dg/c11-unproto-1.c: Likewise. * gcc.dg/c11-unproto-2.c: Likewise. * gcc.dg/c11-utf8char-1.c: Likewise. * gcc.dg/c17-nullptr-2.c: Likewise. * gcc.dg/c2x-align-1.c: Likewise. * gcc.dg/c2x-align-6.c: Likewise. * gcc.dg/c2x-attr-deprecated-1.c: Likewise. * gcc.dg/c2x-attr-deprecated-2.c: Likewise. * gcc.dg/c2x-attr-deprecated-3.c: Likewise. * gcc.dg/c2x-attr-deprecated-4.c: Likewise. * gcc.dg/c2x-attr-fallthrough-1.c: Likewise. * gcc.dg/c2x-attr-fallthrough-2.c: Likewise. * gcc.dg/c2x-attr-fallthrough-3.c: Likewise. * gcc.dg/c2x-attr-fallthrough-4.c: Likewise. * gcc.dg/c2x-attr-fallthrough-5.c: Likewise. * gcc.dg/c2x-attr-fallthrough-6.c: Likewise. * gcc.dg/c2x-attr-maybe_unused-1.c: Likewise. * gcc.dg/c2x-attr-maybe_unused-2.c: Likewise. * gcc.dg/c2x-attr-maybe_unused-3.c: Likewise. * gcc.dg/c2x-attr-maybe_unused-4.c: Likewise. * gcc.dg/c2x-attr-nodiscard-1.c: Likewise. * gcc.dg/c2x-attr-nodiscard-2.c: Likewise. * gcc.dg/c2x-attr-nodiscard-3.c: Likewise. * gcc.dg/c2x-attr-nodiscard-4.c: Likewise. * gcc.dg/c2x-attr-noreturn-1.c: Likewise. * gcc.dg/c2x-attr-noreturn-2.c: Likewise. * gcc.dg/c2x-attr-noreturn-3.c: Likewise. * gcc.dg/c2x-attr-syntax-1.c: Likewise. * gcc.dg/c2x-attr-syntax-2.c: Likewise. * gcc.dg/c2x-attr-syntax-3.c: Likewise. * gcc.dg/c2x-attr-syntax-4.c: Likewise. * gcc.dg/c2x-attr-syntax-5.c: Likewise. * gcc.dg/c2x-attr-syntax-7.c: Likewise. * gcc.dg/c2x-auto-1.c: Likewise. * gcc.dg/c2x-auto-2.c: Likewise. * gcc.dg/c2x-auto-3.c: Likewise. * gcc.dg/c2x-auto-4.c: Likewise. * gcc.dg/c2x-binary-constants-1.c: Likewise. * gcc.dg/c2x-binary-constants-2.c: Likewise. * gcc.dg/c2x-binary-constants-3.c: Likewise. * gcc.dg/c2x-bool-1.c: Likewise. * gcc.dg/c2x-bool-2.c: Likewise. * gcc.dg/c2x-bool-limits-1.c: Likewise. * gcc.dg/c2x-builtins-1.c: Likewise. * gcc.dg/c2x-complit-1.c: Likewise. * gcc.dg/c2x-complit-2.c: Likewise. * gcc.dg/c2x-complit-3.c: Likewise. * gcc.dg/c2x-complit-4.c: Likewise. * gcc.dg/c2x-complit-5.c: Likewise. * gcc.dg/c2x-complit-6.c: Likewise. * gcc.dg/c2x-complit-7.c: Likewise. * gcc.dg/c2x-complit-8.c: Likewise. * gcc.dg/c2x-concat-1.c: Likewise. * gcc.dg/c2x-constexpr-1.c: Likewise. * gcc.dg/c2x-constexpr-2a.c: Likewise. * gcc.dg/c2x-constexpr-2b.c: Likewise. * gcc.dg/c2x-constexpr-3.c: Likewise. * gcc.dg/c2x-constexpr-4.c: Likewise. * gcc.dg/c2x-constexpr-5.c: Likewise. * gcc.dg/c2x-constexpr-6.c: Likewise. * gcc.dg/c2x-constexpr-7.c: Likewise. * gcc.dg/c2x-constexpr-8.c: Likewise. * gcc.dg/c2x-constexpr-9.c: Likewise. * gcc.dg/c2x-digit-separators-1.c: Likewise. * gcc.dg/c2x-digit-separators-2.c: Likewise. * gcc.dg/c2x-digit-separators-3.c: Likewise. * gcc.dg/c2x-empty-init-1.c: Likewise. * gcc.dg/c2x-empty-init-2.c: Likewise. * gcc.dg/c2x-empty-init-3.c: Likewise. * gcc.dg/c2x-enum-1.c: Likewise. * gcc.dg/c2x-enum-2.c: Likewise. * gcc.dg/c2x-enum-3.c: Likewise. * gcc.dg/c2x-enum-4.c: Likewise. * gcc.dg/c2x-enum-5.c: Likewise. * gcc.dg/c2x-enum-6.c: Likewise. * gcc.dg/c2x-enum-7.c: Likewise. * gcc.dg/c2x-enum-8.c: Likewise. * gcc.dg/c2x-float-1.c: Likewise. * gcc.dg/c2x-float-10.c: Likewise. * gcc.dg/c2x-float-11.c: Likewise. * gcc.dg/c2x-float-12.c: Likewise. * gcc.dg/c2x-float-13.c: Likewise. * gcc.dg/c2x-float-2.c: Likewise. * gcc.dg/c2x-float-3.c: Likewise. * gcc.dg/c2x-float-4.c: Likewise. * gcc.dg/c2x-float-5.c: Likewise. * gcc.dg/c2x-float-6.c: Likewise. * gcc.dg/c2x-float-7a.c: Likewise. * gcc.dg/c2x-float-7b.c: Likewise. * gcc.dg/c2x-float-7c.c: Likewise. * gcc.dg/c2x-float-8.c: Likewise. * gcc.dg/c2x-float-9.c: Likewise. * gcc.dg/c2x-float-no-dfp-1.c: Likewise. * gcc.dg/c2x-float-no-dfp-2.c: Likewise. * gcc.dg/c2x-float-no-dfp-3.c: Likewise. * gcc.dg/c2x-float-no-dfp-4.c: Likewise. * gcc.dg/c2x-floatn-1.c: Likewise. * gcc.dg/c2x-floatn-2.c: Likewise. * gcc.dg/c2x-floatn-3.c: Likewise. * gcc.dg/c2x-floatn-4.c: Likewise. * gcc.dg/c2x-floatn-5.c: Likewise. * gcc.dg/c2x-floatn-6.c: Likewise. * gcc.dg/c2x-floatn-7.c: Likewise. * gcc.dg/c2x-floatn-8.c: Likewise. * gcc.dg/c2x-fordecl-1.c: Likewise. * gcc.dg/c2x-fordecl-2.c: Likewise. * gcc.dg/c2x-fordecl-3.c: Likewise. * gcc.dg/c2x-fordecl-4.c: Likewise. * gcc.dg/c2x-has-c-attribute-1.c: Likewise. * gcc.dg/c2x-has-c-attribute-2.c: Likewise. * gcc.dg/c2x-has-c-attribute-3.c: Likewise. * gcc.dg/c2x-has-c-attribute-4.c: Likewise. * gcc.dg/c2x-labels-1.c: Likewise. * gcc.dg/c2x-labels-2.c: Likewise. * gcc.dg/c2x-labels-3.c: Likewise. * gcc.dg/c2x-limits-1.c: Likewise. * gcc.dg/c2x-no-dfp-1.c: Likewise. * gcc.dg/c2x-nullptr-1.c: Likewise. * gcc.dg/c2x-nullptr-2.c: Likewise. * gcc.dg/c2x-nullptr-3.c: Likewise. * gcc.dg/c2x-nullptr-4.c: Likewise. * gcc.dg/c2x-nullptr-5.c: Likewise. * gcc.dg/c2x-nullptr-6.c: Likewise. * gcc.dg/c2x-old-style-definition-1.c: Likewise. * gcc.dg/c2x-old-style-definition-2.c: Likewise. * gcc.dg/c2x-old-style-definition-3.c: Likewise. * gcc.dg/c2x-old-style-definition-4.c: Likewise. * gcc.dg/c2x-old-style-definition-5.c: Likewise. * gcc.dg/c2x-old-style-definition-6.c: Likewise. * gcc.dg/c2x-parm-omit-1.c: Likewise. * gcc.dg/c2x-parm-omit-2.c: Likewise. * gcc.dg/c2x-parm-omit-3.c: Likewise. * gcc.dg/c2x-parm-omit-4.c: Likewise. * gcc.dg/c2x-qual-1.c: Likewise. * gcc.dg/c2x-qual-2.c: Likewise. * gcc.dg/c2x-qual-3.c: Likewise. * gcc.dg/c2x-qual-4.c: Likewise. * gcc.dg/c2x-qual-5.c: Likewise. * gcc.dg/c2x-qual-6.c: Likewise. * gcc.dg/c2x-qual-7.c: Likewise. * gcc.dg/c2x-static-assert-1.c: Likewise. * gcc.dg/c2x-static-assert-2.c: Likewise. * gcc.dg/c2x-static-assert-3.c: Likewise. * gcc.dg/c2x-static-assert-4.c: Likewise. * gcc.dg/c2x-stdarg-1.c: Likewise. * gcc.dg/c2x-stdarg-2.c: Likewise. * gcc.dg/c2x-stdarg-3.c: Likewise. * gcc.dg/c2x-stdarg-4.c: Likewise. * gcc.dg/c2x-stdarg-5.c: Likewise. * gcc.dg/c2x-stdatomic-1.c: Likewise. * gcc.dg/c2x-stddef-1.c: Likewise. * gcc.dg/c2x-stdint-1.c: Likewise. * gcc.dg/c2x-thread-local-1.c: Likewise. * gcc.dg/c2x-thread-local-2.c: Likewise. * gcc.dg/c2x-typeof-1.c: Likewise. * gcc.dg/c2x-typeof-2.c: Likewise. * gcc.dg/c2x-typeof-3.c: Likewise. * gcc.dg/c2x-unproto-1.c: Likewise. * gcc.dg/c2x-unproto-2.c: Likewise. * gcc.dg/c2x-unproto-3.c: Likewise. * gcc.dg/c2x-unproto-4.c: Likewise. * gcc.dg/c2x-unreachable-1.c: Likewise. * gcc.dg/c2x-utf8char-1.c: Likewise. * gcc.dg/c2x-utf8char-2.c: Likewise. * gcc.dg/c2x-utf8char-3.c: Likewise. * gcc.dg/c2x-utf8str-type.c: Likewise. * gcc.dg/c2x-utf8str.c: Likewise. * gcc.dg/c90-auto-1.c: Likewise. * gcc.dg/c90-complit-2.c: Likewise. * gcc.dg/cpp/c11-warning-3.c: Likewise. * gcc.dg/cpp/c2x-elifdef-1.c: Likewise. * gcc.dg/cpp/c2x-elifdef-2.c: Likewise. * gcc.dg/cpp/c2x-scope-1.c: Likewise. * gcc.dg/cpp/c2x-scope-2.c: Likewise. * gcc.dg/cpp/c2x-trigraphs-1.c: Likewise. * gcc.dg/cpp/c2x-trigraphs-2.c: Likewise. * gcc.dg/cpp/c2x-ucn-1.c: Likewise. * gcc.dg/cpp/c2x-ucnid-1-utf8.c: Likewise. * gcc.dg/cpp/c2x-ucnid-1.c: Likewise. * gcc.dg/cpp/c2x-va-opt-1.c: Likewise. * gcc.dg/cpp/c2x-warning-1.c: Likewise. * gcc.dg/cpp/c2x-warning-2.c: Likewise. * gcc.dg/cpp/gnu11-warning-3.c: Likewise. * gcc.dg/cpp/gnu2x-warning-1.c: Likewise. * gcc.dg/cpp/gnu2x-warning-2.c: Likewise. * gcc.dg/cr-decimal-dig-2.c: Likewise. * gcc.dg/cr-decimal-dig-3.c: Likewise. * gcc.dg/dfp/bid-non-canonical-d128-1.c: Likewise. * gcc.dg/dfp/bid-non-canonical-d128-2.c: Likewise. * gcc.dg/dfp/bid-non-canonical-d128-3.c: Likewise. * gcc.dg/dfp/bid-non-canonical-d128-4.c: Likewise. * gcc.dg/dfp/bid-non-canonical-d32-1.c: Likewise. * gcc.dg/dfp/bid-non-canonical-d32-2.c: Likewise. * gcc.dg/dfp/bid-non-canonical-d64-1.c: Likewise. * gcc.dg/dfp/bid-non-canonical-d64-2.c: Likewise. * gcc.dg/dfp/bitint-1.c: Likewise. * gcc.dg/dfp/bitint-2.c: Likewise. * gcc.dg/dfp/bitint-3.c: Likewise. * gcc.dg/dfp/bitint-4.c: Likewise. * gcc.dg/dfp/bitint-5.c: Likewise. * gcc.dg/dfp/bitint-6.c: Likewise. * gcc.dg/dfp/bitint-7.c: Likewise. * gcc.dg/dfp/bitint-8.c: Likewise. * gcc.dg/dfp/c2x-builtins-dfp-1.c: Likewise. * gcc.dg/dfp/c2x-constants-1.c: Likewise. * gcc.dg/dfp/c2x-constants-2.c: Likewise. * gcc.dg/dfp/c2x-constexpr-dfp-1.c: Likewise. * gcc.dg/dfp/c2x-constexpr-dfp-2.c: Likewise. * gcc.dg/dfp/c2x-float-dfp-1.c: Likewise. * gcc.dg/dfp/c2x-float-dfp-2.c: Likewise. * gcc.dg/dfp/c2x-float-dfp-3.c: Likewise. * gcc.dg/dfp/c2x-float-dfp-4.c: Likewise. * gcc.dg/dfp/c2x-float-dfp-5.c: Likewise. * gcc.dg/dfp/c2x-float-dfp-6.c: Likewise. * gcc.dg/dfp/c2x-float-dfp-7.c: Likewise. * gcc.dg/dfp/c2x-float-dfp-8.c: Likewise. * gcc.dg/dfp/c2x-keywords-1.c: Likewise. * gcc.dg/dfp/c2x-keywords-2.c: Likewise. * gcc.dg/dfp/tr24732-float-dfp-1.c: Likewise. * gcc.dg/dfp/ts18661-2-float-dfp-1.c: Likewise. * gcc.dg/fixed-point/bitint-1.c: Likewise. * gcc.dg/format/c11-printf-1.c: Likewise. * gcc.dg/format/c11-scanf-1.c: Likewise. * gcc.dg/format/c2x-dfp-printf-1.c: Likewise. * gcc.dg/format/c2x-dfp-scanf-1.c: Likewise. * gcc.dg/format/c2x-printf-1.c: Likewise. * gcc.dg/format/c2x-scanf-1.c: Likewise. * gcc.dg/format/c2x-strftime-1.c: Likewise. * gcc.dg/format/ext-10.c: Likewise. * gcc.dg/format/ext-9.c: Likewise. * gcc.dg/gnu11-typeof-2.c: Likewise. * gcc.dg/gnu2x-attr-syntax-1.c: Likewise. * gcc.dg/gnu2x-attr-syntax-2.c: Likewise. * gcc.dg/gnu2x-attrs-1.c: Likewise. * gcc.dg/gnu2x-attrs-2.c: Likewise. * gcc.dg/gnu2x-auto-1.c: Likewise. * gcc.dg/gnu2x-builtins-no-dfp-1.c: Likewise. * gcc.dg/gnu2x-complit-1.c: Likewise. * gcc.dg/gnu2x-complit-2.c: Likewise. * gcc.dg/gnu2x-constexpr-1.c: Likewise. * gcc.dg/gnu2x-empty-init-1.c: Likewise. * gcc.dg/gnu2x-empty-init-2.c: Likewise. * gcc.dg/gnu2x-enum-1.c: Likewise. * gcc.dg/gnu2x-static-assert-1.c: Likewise. * gcc.dg/gnu2x-stdarg-1.c: Likewise. * gcc.dg/gnu2x-typeof-1.c: Likewise. * gcc.dg/gnu2x-utf8char-1.c: Likewise. * gcc.dg/gnu2x-utf8str-type.c: Likewise. * gcc.dg/gnu2x-utf8str.c: Likewise. * gcc.dg/gomp/attrs-1.c: Likewise. * gcc.dg/gomp/attrs-10.c: Likewise. * gcc.dg/gomp/attrs-11.c: Likewise. * gcc.dg/gomp/attrs-12.c: Likewise. * gcc.dg/gomp/attrs-13.c: Likewise. * gcc.dg/gomp/attrs-14.c: Likewise. * gcc.dg/gomp/attrs-15.c: Likewise. * gcc.dg/gomp/attrs-16.c: Likewise. * gcc.dg/gomp/attrs-17.c: Likewise. * gcc.dg/gomp/attrs-18.c: Likewise. * gcc.dg/gomp/attrs-19.c: Likewise. * gcc.dg/gomp/attrs-2.c: Likewise. * gcc.dg/gomp/attrs-20.c: Likewise. * gcc.dg/gomp/attrs-21.c: Likewise. * gcc.dg/gomp/attrs-3.c: Likewise. * gcc.dg/gomp/attrs-4.c: Likewise. * gcc.dg/gomp/attrs-5.c: Likewise. * gcc.dg/gomp/attrs-6.c: Likewise. * gcc.dg/gomp/attrs-7.c: Likewise. * gcc.dg/gomp/attrs-8.c: Likewise. * gcc.dg/gomp/attrs-9.c: Likewise. * gcc.dg/limits-width-2.c: Likewise. * gcc.dg/qual-return-10.c: Likewise. * gcc.dg/qual-return-9.c: Likewise. * gcc.dg/sso-19.c: Likewise. * gcc.dg/stdckdint-1.c: Likewise. * gcc.dg/stdckdint-2.c: Likewise. * gcc.dg/stdint-width-2.c: Likewise. * gcc.dg/tm/attrs-1.c: Likewise. * gcc.dg/torture/bitint-1.c: Likewise. * gcc.dg/torture/bitint-10.c: Likewise. * gcc.dg/torture/bitint-11.c: Likewise. * gcc.dg/torture/bitint-12.c: Likewise. * gcc.dg/torture/bitint-13.c: Likewise. * gcc.dg/torture/bitint-14.c: Likewise. * gcc.dg/torture/bitint-15.c: Likewise. * gcc.dg/torture/bitint-16.c: Likewise. * gcc.dg/torture/bitint-17.c: Likewise. * gcc.dg/torture/bitint-18.c: Likewise. * gcc.dg/torture/bitint-19.c: Likewise. * gcc.dg/torture/bitint-2.c: Likewise. * gcc.dg/torture/bitint-20.c: Likewise. * gcc.dg/torture/bitint-21.c: Likewise. * gcc.dg/torture/bitint-22.c: Likewise. * gcc.dg/torture/bitint-23.c: Likewise. * gcc.dg/torture/bitint-24.c: Likewise. * gcc.dg/torture/bitint-25.c: Likewise. * gcc.dg/torture/bitint-26.c: Likewise. * gcc.dg/torture/bitint-27.c: Likewise. * gcc.dg/torture/bitint-28.c: Likewise. * gcc.dg/torture/bitint-29.c: Likewise. * gcc.dg/torture/bitint-3.c: Likewise. * gcc.dg/torture/bitint-30.c: Likewise. * gcc.dg/torture/bitint-31.c: Likewise. * gcc.dg/torture/bitint-32.c: Likewise. * gcc.dg/torture/bitint-33.c: Likewise. * gcc.dg/torture/bitint-34.c: Likewise. * gcc.dg/torture/bitint-35.c: Likewise. * gcc.dg/torture/bitint-36.c: Likewise. * gcc.dg/torture/bitint-37.c: Likewise. * gcc.dg/torture/bitint-38.c: Likewise. * gcc.dg/torture/bitint-39.c: Likewise. * gcc.dg/torture/bitint-4.c: Likewise. * gcc.dg/torture/bitint-40.c: Likewise. * gcc.dg/torture/bitint-41.c: Likewise. * gcc.dg/torture/bitint-42.c: Likewise. * gcc.dg/torture/bitint-5.c: Likewise. * gcc.dg/torture/bitint-6.c: Likewise. * gcc.dg/torture/bitint-7.c: Likewise. * gcc.dg/torture/bitint-8.c: Likewise. * gcc.dg/torture/bitint-9.c: Likewise. * gcc.dg/torture/builtin-fp-int-inexact-c2x.c: Likewise. * gcc.dg/torture/c2x-stdarg-split-1a.c: Likewise. * gcc.dg/torture/c2x-stdarg-split-1b.c: Likewise. * gcc.dg/torture/float128-nan-floath.c: Likewise. * gcc.dg/torture/float128x-nan-floath.c: Likewise. * gcc.dg/torture/float16-nan-floath.c: Likewise. * gcc.dg/torture/float32-nan-floath.c: Likewise. * gcc.dg/torture/float32x-nan-floath.c: Likewise. * gcc.dg/torture/float64-nan-floath.c: Likewise. * gcc.dg/torture/float64x-nan-floath.c: Likewise. * gcc.target/i386/excess-precision-11.c: Likewise. * gcc.target/i386/excess-precision-12.c: Likewise. * lib/target-supports.exp: Likewise. * objc.dg/attributes/gnu2x-attr-syntax-1.m: Likewise.
2023-11-07test: Recover sdiv_pow2 check and remove test of RISC-VJuzhe-Zhong2-4/+2
gcc/testsuite/ChangeLog: * gcc.dg/vect/vect-sdiv-pow2-1.c: Recover scan check. * lib/target-supports.exp: Remove riscv.
2023-11-07vect/ifcvt: Add vec_cond fallback and check for vector versioning.Robin Dapp3-15/+63
This restricts tree-ifcvt to only create COND_OPs when we versioned the loop for vectorization. Apart from that it re-creates a VEC_COND_EXPR in vect_expand_fold_left if we emitted a COND_OP. gcc/ChangeLog: PR tree-optimization/112361 PR target/112359 PR middle-end/112406 * tree-if-conv.cc (convert_scalar_cond_reduction): Remember if loop was versioned and only then create COND_OPs. (predicate_scalar_phi): Do not create COND_OP when not vectorizing. * tree-vect-loop.cc (vect_expand_fold_left): Re-create VEC_COND_EXPR. (vectorize_fold_left_reduction): Pass mask to vect_expand_fold_left. gcc/testsuite/ChangeLog: * gcc.dg/pr112359.c: New test.
2023-11-07c: Change T2X_* format checking macros to T23_*Joseph Myers2-44/+44
Analogous to previous changes to code that matched "c2x" (case-insensitive), also update T2X_* macros used in format checking tables to be named T23_*. Bootstrapped with no regressions for x86_64-pc-linux-gnu. gcc/c-family/ * c-format.h (T2X_UI): Rename to T23_UI. (T2X_UL): Rename to T23_UL. (T2X_ULL): Rename to T23_ULL. (T2X_US): Rename to T23_US. (T2X_UC): Rename to T23_UC. (T2X_ST): Rename to T23_ST. (T2X_UPD): Rename to T23_UPD. (T2X_UIM): Rename to T23_UIM. (T2X_D32): Rename to T23_D32. (T2X_D64): Rename to T23_D64. (T2X_D128): Rename to T23_D128. (T2X_I8): Rename to T23_I8. (T2X_I16): Rename to T23_I16. (T2X_I32): Rename to T23_I32. (T2X_I64): Rename to T23_I64. (T2X_U8): Rename to T23_U8. (T2X_U16): Rename to T23_U16. (T2X_U32): Rename to T23_U32. (T2X_U64): Rename to T23_U64. (T2X_IF8): Rename to T23_IF8. (T2X_IF16): Rename to T23_IF16. (T2X_IF32): Rename to T23_IF32. (T2X_IF64): Rename to T23_IF64. (T2X_UF8): Rename to T23_UF8. (T2X_UF16): Rename to T23_UF16. (T2X_UF32): Rename to T23_UF32. (T2X_UF64): Rename to T23_UF64. * c-format.cc: Update all uses of T2X_* macros to use T23_*.
2023-11-07i386: Make flags_reg_operand a special predicateUros Bizjak1-1/+1
There is no need to check the mode in flags_reg_operand predicate. The mode in flags setting instructions is checked with ix86_match_ccmode. The patch avoids "warning: operand X missing mode?" warnings with VOIDmode flags_reg_operand predicate. gcc/ChangeLog: * config/i386/predicates.md ("flags_reg_operand"): Make predicate special to avoid automatic mode checks.
2023-11-07gcc/configure: RegenerateMartin Jambor1-2/+2
Probabaly because of a re-base of changes to gcc/configure there are line comment mismatches in between what we have and what would be generated. This patch brings them in line so that consitency checkers are happy. gcc/ChangeLog: 2023-11-07 Martin Jambor <mjambor@suse.cz> * configure: Regenerate.
2023-11-07testsuite: nodiscard-reason-nonstring.C FAIL in C++26Marek Polacek1-1/+1
Since r14-5071, we emit an extra error for this test (the first one): nodiscard-reason-nonstring.C:5:13: error: expected string-literal before numeric constant nodiscard-reason-nonstring.C:5:36: error: 'nodiscard' attribute argument must be a string constant so the test needs adjusting. gcc/testsuite/ChangeLog: * g++.dg/cpp2a/nodiscard-reason-nonstring.C: Adjust dg-error.
2023-11-07openmp: Add support for the 'indirect' clause in C/C++Kwok Cheung Yeung27-45/+551
This adds support for the 'indirect' clause in the 'declare target' directive. Functions declared as indirect may be called via function pointers passed from the host in offloaded code. Virtual calls to member functions via the object pointer in C++ are currently not supported in target regions. 2023-11-07 Kwok Cheung Yeung <kcy@codesourcery.com> gcc/c-family/ * c-attribs.cc (c_common_attribute_table): Add attribute for indirect functions. * c-pragma.h (enum parma_omp_clause): Add entry for indirect clause. gcc/c/ * c-decl.cc (c_decl_attributes): Add attribute for indirect functions. * c-lang.h (c_omp_declare_target_attr): Add indirect field. * c-parser.cc (c_parser_omp_clause_name): Handle indirect clause. (c_parser_omp_clause_indirect): New. (c_parser_omp_all_clauses): Handle indirect clause. (OMP_DECLARE_TARGET_CLAUSE_MASK): Add indirect clause to mask. (c_parser_omp_declare_target): Handle indirect clause. Emit error message if device_type or indirect clauses used alone. Emit error if indirect clause used with device_type that is not 'any'. (OMP_BEGIN_DECLARE_TARGET_CLAUSE_MASK): Add indirect clause to mask. (c_parser_omp_begin): Handle indirect clause. * c-typeck.cc (c_finish_omp_clauses): Handle indirect clause. gcc/cp/ * cp-tree.h (cp_omp_declare_target_attr): Add indirect field. * decl2.cc (cplus_decl_attributes): Add attribute for indirect functions. * parser.cc (cp_parser_omp_clause_name): Handle indirect clause. (cp_parser_omp_clause_indirect): New. (cp_parser_omp_all_clauses): Handle indirect clause. (handle_omp_declare_target_clause): Add extra parameter. Add indirect attribute for indirect functions. (OMP_DECLARE_TARGET_CLAUSE_MASK): Add indirect clause to mask. (cp_parser_omp_declare_target): Handle indirect clause. Emit error message if device_type or indirect clauses used alone. Emit error if indirect clause used with device_type that is not 'any'. (OMP_BEGIN_DECLARE_TARGET_CLAUSE_MASK): Add indirect clause to mask. (cp_parser_omp_begin): Handle indirect clause. * semantics.cc (finish_omp_clauses): Handle indirect clause. gcc/ * lto-cgraph.cc (enum LTO_symtab_tags): Add tag for indirect functions. (output_offload_tables): Write indirect functions. (input_offload_tables): read indirect functions. * lto-section-names.h (OFFLOAD_IND_FUNC_TABLE_SECTION_NAME): New. * omp-builtins.def (BUILT_IN_GOMP_TARGET_MAP_INDIRECT_PTR): New. * omp-offload.cc (offload_ind_funcs): New. (omp_discover_implicit_declare_target): Add functions marked with 'omp declare target indirect' to indirect functions list. (omp_finish_file): Add indirect functions to section for offload indirect functions. (execute_omp_device_lower): Redirect indirect calls on target by passing function pointer to BUILT_IN_GOMP_TARGET_MAP_INDIRECT_PTR. (pass_omp_device_lower::gate): Run pass_omp_device_lower if indirect functions are present on an accelerator device. * omp-offload.h (offload_ind_funcs): New. * tree-core.h (omp_clause_code): Add OMP_CLAUSE_INDIRECT. * tree.cc (omp_clause_num_ops): Add entry for OMP_CLAUSE_INDIRECT. (omp_clause_code_name): Likewise. * tree.h (OMP_CLAUSE_INDIRECT_EXPR): New. * config/gcn/mkoffload.cc (process_asm): Process offload_ind_funcs section. Count number of indirect functions. (process_obj): Emit number of indirect functions. * config/nvptx/mkoffload.cc (ind_func_ids, ind_funcs_tail): New. (process): Emit offload_ind_func_table in PTX code. Emit indirect function names and count in image. * config/nvptx/nvptx.cc (nvptx_record_offload_symbol): Mark indirect functions in PTX code with IND_FUNC_MAP. gcc/testsuite/ * c-c++-common/gomp/declare-target-7.c: Update expected error message. * c-c++-common/gomp/declare-target-indirect-1.c: New. * c-c++-common/gomp/declare-target-indirect-2.c: New. * g++.dg/gomp/attrs-21.C (v12): Update expected error message. * g++.dg/gomp/declare-target-indirect-1.C: New. * gcc.dg/gomp/attrs-21.c (v12): Update expected error message. include/ * gomp-constants.h (GOMP_VERSION): Increment to 3. (GOMP_VERSION_SUPPORTS_INDIRECT_FUNCS): New. libgcc/ * offloadstuff.c (OFFLOAD_IND_FUNC_TABLE_SECTION_NAME): New. (__offload_ind_func_table): New. (__offload_ind_funcs_end): New. (__OFFLOAD_TABLE__): Add entries for indirect functions. libgomp/ * Makefile.am (libgomp_la_SOURCES): Add target-indirect.c. * Makefile.in: Regenerate. * libgomp-plugin.h (GOMP_INDIRECT_ADDR_MAP): New define. (GOMP_OFFLOAD_load_image): Add extra argument. * libgomp.h (struct indirect_splay_tree_key_s): New. (indirect_splay_tree_node, indirect_splay_tree, indirect_splay_tree_key): New. (indirect_splay_compare): New. * libgomp.map (GOMP_5.1.1): Add GOMP_target_map_indirect_ptr. * libgomp.texi (OpenMP 5.1): Update documentation on indirect calls in target region and on indirect clause. (Other new OpenMP 5.2 features): Add entry for virtual function calls. * libgomp_g.h (GOMP_target_map_indirect_ptr): Add prototype. * oacc-host.c (host_load_image): Add extra argument. * target.c (gomp_load_image_to_device): If the GOMP_VERSION is high enough, read host indirect functions table and pass to load_image_func. * config/accel/target-indirect.c: New. * config/linux/target-indirect.c: New. * config/gcn/team.c (build_indirect_map): Add prototype. (gomp_gcn_enter_kernel): Initialize support for indirect function calls on GCN target. * config/nvptx/team.c (build_indirect_map): Add prototype. (gomp_nvptx_main): Initialize support for indirect function calls on NVPTX target. * plugin/plugin-gcn.c (struct gcn_image_desc): Add field for indirect functions count. (GOMP_OFFLOAD_load_image): Add extra argument. If the GOMP_VERSION is high enough, build address translation table and copy it to target memory. * plugin/plugin-nvptx.c (nvptx_tdata): Add field for indirect functions count. (GOMP_OFFLOAD_load_image): Add extra argument. If the GOMP_VERSION is high enough, Build address translation table and copy it to target memory. * testsuite/libgomp.c-c++-common/declare-target-indirect-1.c: New. * testsuite/libgomp.c-c++-common/declare-target-indirect-2.c: New. * testsuite/libgomp.c++/declare-target-indirect-1.C: New.
2023-11-07OpenMP: invoke.texi - mention C attribute syntax for -fopenmp(-simd)Tobias Burnus1-4/+4
gcc/ChangeLog: * doc/invoke.texi (-fopenmp, -fopenmp-simd): Adjust wording for attribute syntax supported also in C.
2023-11-07aarch64: Add a %Z operand modifier for SVE registersRichard Sandiford1-0/+6
This patch adds a %Z operand modifier that prints registers as SVE z registers. The SME patches need this, but so do Tamar's patches. I'm separating this out to unblock those. We should probably document the [wxbhsdqZ] modifiers as user-facing, but doing that for all of them is a separate patch. gcc/ * config/aarch64/aarch64.cc (aarch64_print_operand): Add a %Z modifier for SVE registers.
2023-11-07c: Refer more consistently to C23 not C2XJoseph Myers70-440/+440
Continuing the move to refer to C23 in place of C2X throughout the source tree, update documentation, diagnostics, comments, variable and function names, etc., to use the C23 name. Testsuite updates are left for a future patch, except for testcases that test diagnostics that previously mentioned C2X (but in those testcases, sometimes other comments are updated, not just the diagnostic expectations). Bootstrapped with no regressions for x86_64-pc-linux-gnu. gcc/ * builtins.def (DEF_C2X_BUILTIN): Rename to DEF_C23_BUILTIN and use flag_isoc23 and function_c23_misc. * config/rl78/rl78.cc (rl78_option_override): Compare lang_hooks.name with "GNU C23" not "GNU C2X". * coretypes.h (function_c2x_misc): Rename to function_c23_misc. * doc/cpp.texi (@code{__has_attribute}): Refer to C23 instead of C2x. * doc/extend.texi: Likewise. * doc/invoke.texi: Likewise. * dwarf2out.cc (highest_c_language, gen_compile_unit_die): Compare against and return "GNU C23" language string instead of "GNU C2X". * ginclude/float.h: Refer to C23 instead of C2X in comments. * ginclude/stdint-gcc.h: Likewise. * glimits.h: Likewise. * tree.h: Likewise. gcc/ada/ * gcc-interface/utils.cc (flag_isoc2x): Rename to flag_isoc23. gcc/c-family/ * c-common.cc (flag_isoc2x): Rename to flag_isoc23. (c_common_reswords): Use D_C23 instead of D_C2X. * c-common.h: Refer throughout to C23 instead of C2X in comments. (D_C2X): Rename to D_C23. (flag_isoc2x): Rename to flag_isoc23. * c-cppbuiltin.cc (builtin_define_float_constants): Use flag_isoc23 instead of flag_isoc2x. Refer to C23 instead of C2x in comments. * c-format.cc: Use STD_C23 instead of STD_C2X and flag_isoc23 instead of flag_isoc2x. Refer to C23 instead of C2X in comments. * c-format.h: Use STD_C23 instead of STD_C2X. * c-lex.cc: Use warn_c11_c23_compat instead of warn_c11_c2x_compat and flag_isoc23 instead of flag_isoc2x. Refer to C23 instead of C2X in diagnostics. * c-opts.cc: Use flag_isoc23 instead of flag_isoc2x. Refer to C23 instead of C2X in comments. (set_std_c2x): Rename to set_std_c23. * c.opt (Wc11-c23-compat): Use CPP(cpp_warn_c11_c23_compat) CppReason(CPP_W_C11_C23_COMPAT) Var(warn_c11_c23_compat) instead of CPP(cpp_warn_c11_c2x_compat) CppReason(CPP_W_C11_C2X_COMPAT) Var(warn_c11_c2x_compat). gcc/c/ * c-decl.cc: Use flag_isoc23 instead of flag_isoc2x and c23_auto_p instead of c2x_auto_p. Refer to C23 instead of C2X in diagnostics and comments. * c-errors.cc: Use flag_isoc23 instead of flag_isoc2x and warn_c11_c23_compat instead of warn_c11_c2x_compat. Refer to C23 instead of C2X in comments. * c-parser.cc: Use flag_isoc23 instead of flag_isoc2x, warn_c11_c23_compat instead of warn_c11_c2x_compat, c23_auto_p instead of c2x_auto_p and D_C23 instead of D_C2X. Refer to C23 instead of C2X in diagnostics and comments. * c-tree.h: Refer to C23 instead of C2X in comments. (struct c_declspecs): Rename c2x_auto_p to c23_auto_p. * c-typeck.cc: Use flag_isoc23 instead of flag_isoc2x and warn_c11_c23_compat instead of warn_c11_c2x_compat. Refer to C23 instead of C2X in diagnostics and comments. gcc/fortran/ * gfortran.h (gfc_real_info): Refer to C23 instead of C2X in comment. gcc/lto/ * lto-lang.cc (flag_isoc2x): Rename to flag_isoc23. gcc/testsuite/ * gcc.dg/binary-constants-2.c: Refer to C23 instead of C2X. * gcc.dg/binary-constants-3.c: Likewise. * gcc.dg/bitint-23.c: Likewise. * gcc.dg/bitint-26.c: Likewise. * gcc.dg/bitint-27.c: Likewise. * gcc.dg/c11-attr-syntax-1.c: Likewise. * gcc.dg/c11-attr-syntax-2.c: Likewise. * gcc.dg/c11-floatn-1.c: Likewise. * gcc.dg/c11-floatn-2.c: Likewise. * gcc.dg/c11-floatn-3.c: Likewise. * gcc.dg/c11-floatn-4.c: Likewise. * gcc.dg/c11-floatn-5.c: Likewise. * gcc.dg/c11-floatn-6.c: Likewise. * gcc.dg/c11-floatn-7.c: Likewise. * gcc.dg/c11-floatn-8.c: Likewise. * gcc.dg/c2x-attr-syntax-4.c: Likewise. * gcc.dg/c2x-attr-syntax-6.c: Likewise. * gcc.dg/c2x-attr-syntax-7.c: Likewise. * gcc.dg/c2x-binary-constants-2.c: Likewise. * gcc.dg/c2x-floatn-5.c: Likewise. * gcc.dg/c2x-floatn-6.c: Likewise. * gcc.dg/c2x-floatn-7.c: Likewise. * gcc.dg/c2x-floatn-8.c: Likewise. * gcc.dg/c2x-nullptr-4.c: Likewise. * gcc.dg/c2x-qual-2.c: Likewise. * gcc.dg/c2x-qual-3.c: Likewise. * gcc.dg/c2x-qual-6.c: Likewise. * gcc.dg/cpp/c11-warning-1.c: Likewise. * gcc.dg/cpp/c11-warning-2.c: Likewise. * gcc.dg/cpp/c11-warning-3.c: Likewise. * gcc.dg/cpp/c2x-warning-2.c: Likewise. * gcc.dg/cpp/gnu11-elifdef-3.c: Likewise. * gcc.dg/cpp/gnu11-elifdef-4.c: Likewise. * gcc.dg/cpp/gnu11-warning-1.c: Likewise. * gcc.dg/cpp/gnu11-warning-2.c: Likewise. * gcc.dg/cpp/gnu11-warning-3.c: Likewise. * gcc.dg/cpp/gnu2x-warning-2.c: Likewise. * gcc.dg/dfp/c11-constants-1.c: Likewise. * gcc.dg/dfp/c11-constants-2.c: Likewise. * gcc.dg/dfp/c2x-constants-2.c: Likewise. * gcc.dg/dfp/constants-pedantic.c: Likewise. * gcc.dg/pr30260.c: Likewise. * gcc.dg/system-binary-constants-1.c: Likewise. libcpp/ * directives.cc: Refer to C23 instead of C2X in diagnostics and comments. (STDC2X): Rename to STDC23. * expr.cc: Use cpp_warn_c11_c23_compat instead of cpp_warn_c11_c2x_compat and CPP_W_C11_C23_COMPAT instead of CPP_W_C11_C2X_COMPAT. Refer to C23 instead of C2X in diagnostics and comments. * include/cpplib.h: Refer to C23 instead of C2X in diagnostics and comments. (CLK_GNUC2X): Rename to CLK_GNUC23. (CLK_STDC2X): Rename to CLK_STDC23. (CPP_W_C11_C2X_COMPAT): Rename to CPP_W_C11_C23_COMPAT. * init.cc: Use GNUC23 instead of GNUC2X, STDC23 instead of STDC2X and cpp_warn_c11_c23_compat instead of cpp_warn_c11_c2x_compat. * lex.cc (maybe_va_opt_error): Refer to C23 instead of C2X in diagnostic. * macro.cc (_cpp_arguments_ok): Refer to C23 instead of C2X in comment.
2023-11-07test: Fix FAIL of pr65518.c for RVV[PR112420]Juzhe-Zhong1-1/+3
PR target/112420 gcc/testsuite/ChangeLog: * gcc.dg/vect/pr65518.c: Fix check for RVV.
2023-11-07testsuite/vect: Make check more accurate.Robin Dapp1-2/+1
Similar to before this modifies a check so we do only match a vectorization attempt if it succeeded. On riscv we potentially try several modes if which some may fail. gcc/testsuite/ChangeLog: * gcc.dg/vect/vect-cond-reduc-4.c: Make check more accurate.
2023-11-07testsuite: Change expectation for bb-slp-over-widen-n.cRobin Dapp2-2/+2
This patch makes sure we check for note: Basic block will be vectorized using SLP instead of optimized: basic block which will also match optimized: basic block part of which there are many more in an RVV dump. gcc/testsuite/ChangeLog: * gcc.dg/vect/bb-slp-over-widen-1.c: Change test expectation. * gcc.dg/vect/bb-slp-over-widen-2.c: Ditto.
2023-11-07RISC-V: Add RISC-V into vect_cmdline_neededJuzhe-Zhong1-1/+2
Like all other targets, we add RISC-V into vect_cmdline_needed. This patch fixes following FAILs: FAIL: gcc.dg/tree-ssa/gen-vect-11b.c scan-tree-dump-times vect "vectorized 0 loops" 1 FAIL: gcc.dg/tree-ssa/gen-vect-11c.c scan-tree-dump-times vect "vectorized 0 loops" 1 FAIL: gcc.dg/tree-ssa/gen-vect-26.c scan-tree-dump-times vect "Alignment of access forced using peeling" 1 FAIL: gcc.dg/tree-ssa/gen-vect-28.c scan-tree-dump-times vect "Alignment of access forced using peeling" 1 gcc/testsuite/ChangeLog: * lib/target-supports.exp: Add RISC-V.
2023-11-07testsuite: check for and use -mno-strict-align where neededAlexandre Oliva36-0/+81
Various tests fail on powerpc if the toolchain is configured to enable -mstrict-align by default. This patch introduces -mno-strict-align on tests found to fail that way, when the target supports this option. I suppose !non_strict_align could be used to skip tests, instead of or in addition to this tweak, and that might be desirable if they still fail on targets that do no support -mno-strict-align, but I haven't observed such scenarios. The p9-vec-length tests expect vectorization on loop bodies and epilogues that reference arrays that are not known to be more aligned than their small element types. Though VSX vectors work best with 32- or 64-bit alignment, unaligned vector loads and stores are expected by the tests. However, with -mstrict-align by default, vector loads and stores not known to be aligned end up open coded, which doesn't match the asm output expectations coded in the tests. for gcc/ChangeLog * doc/sourcebuild.texi (opt_mstrict_align): New target. for gcc/testsuite/ChangeLog * lib/target-supports.exp (check_effective_target_opt_mstrict_align): New. * gcc.dg/strlenopt-80.c: Add -mno-strict-align if supported. * gcc.target/powerpc/prefix-ds-dq.c: Likewise. * gcc.target/powerpc/p9-vec-length-epil-1.c: Likewise. * gcc.target/powerpc/p9-vec-length-epil-2.c: Likewise. * gcc.target/powerpc/p9-vec-length-epil-3.c: Likewise. * gcc.target/powerpc/p9-vec-length-epil-4.c: Likewise. * gcc.target/powerpc/p9-vec-length-epil-5.c: Likewise. * gcc.target/powerpc/p9-vec-length-epil-6.c: Likewise. * gcc.target/powerpc/p9-vec-length-epil-7.c: Likewise. * gcc.target/powerpc/p9-vec-length-epil-8.c: Likewise. * gcc.target/powerpc/p9-vec-length-epil-run-1.c: Likewise. * gcc.target/powerpc/p9-vec-length-epil-run-2.c: Likewise. * gcc.target/powerpc/p9-vec-length-epil-run-3.c: Likewise. * gcc.target/powerpc/p9-vec-length-epil-run-4.c: Likewise. * gcc.target/powerpc/p9-vec-length-epil-run-5.c: Likewise. * gcc.target/powerpc/p9-vec-length-epil-run-6.c: Likewise. * gcc.target/powerpc/p9-vec-length-epil-run-7.c: Likewise. * gcc.target/powerpc/p9-vec-length-epil-run-8.c: Likewise. * gcc.target/powerpc/p9-vec-length-full-1.c: Likewise. * gcc.target/powerpc/p9-vec-length-full-2.c: Likewise. * gcc.target/powerpc/p9-vec-length-full-3.c: Likewise. * gcc.target/powerpc/p9-vec-length-full-4.c: Likewise. * gcc.target/powerpc/p9-vec-length-full-5.c: Likewise. * gcc.target/powerpc/p9-vec-length-full-6.c: Likewise. * gcc.target/powerpc/p9-vec-length-full-7.c: Likewise. * gcc.target/powerpc/p9-vec-length-full-8.c: Likewise. * gcc.target/powerpc/p9-vec-length-full-run-1.c: Likewise. * gcc.target/powerpc/p9-vec-length-full-run-2.c: Likewise. * gcc.target/powerpc/p9-vec-length-full-run-3.c: Likewise. * gcc.target/powerpc/p9-vec-length-full-run-4.c: Likewise. * gcc.target/powerpc/p9-vec-length-full-run-5.c: Likewise. * gcc.target/powerpc/p9-vec-length-full-run-6.c: Likewise. * gcc.target/powerpc/p9-vec-length-full-run-7.c: Likewise. * gcc.target/powerpc/p9-vec-length-full-run-8.c: Likewise.
2023-11-07RISC-V: Use stdint-gcc.h in xtheadmemidx-helpers.hChristoph Müllner1-1/+1
stdint.h can be replaced with stdint-gcc.h to resolve some missing system headers in non-multilib installations. Signed-off-by: Christoph Müllner <christoph.muellner@vrull.eu> gcc/testsuite/ChangeLog: * gcc.target/riscv/xtheadmemidx-helpers.h: Replace stdint.h with stdint-gcc.h.
2023-11-07RISC-V: Add ABI requirement for XTheadFMemIdx testsChristoph Müllner8-8/+8
The XTheadFMemIdx tests set the required ABI for RV32, but not for RV64, which has the effect that the tests are expected to succeed for RV64/LP64. Let's set the ABI to LP64D in these tests to clarify the requirements. Signed-off-by: Christoph Müllner <christoph.muellner@vrull.eu> gcc/testsuite/ChangeLog: * gcc.target/riscv/xtheadfmemidx-index-update.c: Add ABI. * gcc.target/riscv/xtheadfmemidx-index-xtheadbb-update.c: Likewise. * gcc.target/riscv/xtheadfmemidx-index-xtheadbb.c: Likewise. * gcc.target/riscv/xtheadfmemidx-index.c: Likewise. * gcc.target/riscv/xtheadfmemidx-uindex-update.c: Likewise. * gcc.target/riscv/xtheadfmemidx-uindex-xtheadbb-update.c: Likewise. * gcc.target/riscv/xtheadfmemidx-uindex-xtheadbb.c: Likewise. * gcc.target/riscv/xtheadfmemidx-uindex.c: Likewise.
2023-11-07ada: Fix debug info for aliased packed array with unconstrained nominal subtypeEric Botcazou1-0/+12
The front-end now rewrites it as a renaming when it is initialized with a function call and the same processing must be applied in the renaming case as in the regular case for this kind of special objects. gcc/ada/ * gcc-interface/decl.cc (gnat_to_gnu_entity) <E_Variable>: Apply the specific rewriting done for an aliased object with an unconstrained array nominal subtype in the renaming case too.
2023-11-07ada: Fix spurious -Wstringop-overflow with link time optimizationEric Botcazou1-24/+0
It comes from an incomplete optimization performed by LTO that is caused by an obsolete transformation done in Gigi, which is redundant with the common uniquization of constant CONSTRUCTORs now performed during gimplification. gcc/ada/ * gcc-interface/trans.cc (gnat_gimplify_expr) <CALL_EXPR>: Delete.
2023-11-07ada: Compiler crash on early alignment clauseBob Duff2-4/+1
This patch fixes a bug: if "for T'Alignment use..." is followed by "for T use (<enum rep>);" the compiler crashes. A workaround is to move the alignment clause after the enumeration rep clause. gcc/ada/ * sem_ch13.ads (Set_Enum_Esize): Do not set alignment. * sem_ch13.adb (Set_Enum_Esize): Do not set alignment. Archaeology seems to show that this line of code dates from when "Alignment = 0" meant "the Alignment is not known at compile time" and "the Alignment is not yet known at compile time" as well as "the Alignment is zero". In any case, it seems to be unnecessary, and in this case harmful, because gigi would crash. Alignment_Clause is set (because there is one), so gigi would query the Alignment, but Alignment was destroyed.
2023-11-07ada: Update the logo in the gnat docJulien Bortolussi1-3/+6
Update the logo and the background color in the top right corner of the GNAT User’s Guide for Native Platforms gcc/ada/ * doc/share/conf.py: Changed the background color and the logo.
2023-11-07ada: Fix incorrect resolution of overloaded function call in instanceEric Botcazou6-41/+87
The problem occurs when the function call is the operand of an equality operator, the type used to do the comparison is declared outside of the generic construct but visible inside it, and this generic construct also declares two functions with the same profile except for the result type, one result type being the aforementioned type, the other being derived from this type but not visible inside the generic construct. When the second operand is either a literal or also overloaded, the call may be resolved to the second function instead of the first in instances. gcc/ada/ * gen_il-fields.ads (Opt_Field_Enum): Add Compare_Type. * gen_il-gen-gen_nodes.adb (N_Op_Eq): Likewise. (N_Op_Ge): Likewise. (N_Op_Gt): Likewise. (N_Op_Le): Likewise. (N_Op_Lt): Likewise. (N_Op_Ne): Likewise. * sinfo.ads (Compare_Type): Document new field. * sem_ch4.adb (Analyze_Comparison_Equality_Op): If the entity is already present, set the Compare_Type on overloaded operands if it is present on the node. * sem_ch12.adb (Check_Private_View): Look into the Compare_Type instead of the Etype for comparison operators. (Copy_Generic_Node): Remove obsolete code for comparison operators. (Save_Global_References.Save_References): Do not walk into the descendants of N_Implicit_Label_Declaration nodes. (Save_Global_References.Set_Global_Type): Look into the Compare_Type instead of the Etype for comparison operators. * sem_res.adb (Resolve_Comparison_Op): Set Compare_Type. (Resolve_Equality_Op): Likewise.
2023-11-07ada: Fix Ada.Directories.Modification_Time on WindowsRonan Desplanques1-1/+10
Before this patch, Ada.Directories.Modification_Time called GetFileAttributesExA under the hood on Windows. That would sometimes fail to work with files whose names were non-ASCII. This patch replaces the call to GetFileAttributesExA with a call to GetFileAttributesEx preceded by an encoding scheme conversion, as is done in other functions of the run-time library. This fixes the issues that were observed with the previous implementations. gcc/ada/ * adaint.c (__gnat_file_time): Fix Windows version.
2023-11-07ada: Elide temporary for aliased array with unconstrained nominal subtypeEric Botcazou1-23/+24
When the array is initialized with the result of a call to a function whose result type is unconstrained, then the result is allocated with its bounds, so the array can be rewritten as a renaming of the result in this case too. gcc/ada/ * exp_ch3.adb (Expand_N_Object_Declaration): Fold initialization expression of Nominal_Subtype_Is_Constrained_Array constant into the computation of Rewrite_As_Renaming and remove the constant. Set it to True for an aliased array with unconstrained nominal subtype if the subtype of the expression is also unconstrained.
2023-11-07ada: Fix expansion of type aspects with handling of aspectsPiotr Trojanek1-2/+2
The new handling of aspects stores the aspect expression as the Expression_Copy of the aspect and not as the Entity of the aspect identified. This has been changed for most of the aspects, but not for Type_Invariant and Default_Initial_Condition, which have custom expansion. Apparently this change only affects GNATprove and not GNAT. gcc/ada/ * exp_util.adb (Add_Own_DIC, Add_Own_Invariants): Store the aspect expression in Expression_Copy.
2023-11-07ada: Rename Is_Limited_View to reflect actual queryYannick Moy17-98/+101
Function Sem_Aux.Is_Limited_View returns whether the type is "inherently limited" in a slightly different way from the "immutably limited" definition in Ada 2012. Rename for clarity. gcc/ada/ * exp_aggr.adb: Apply the renaming. * exp_ch3.adb: Same. * exp_ch4.adb: Same. * exp_ch6.adb: Same. * exp_ch7.adb: Same. * exp_util.adb: Same. * freeze.adb: Same. * sem_aggr.adb: Same. * sem_attr.adb: Same. * sem_aux.adb: Alphabetize Is_Limited_Type. Rename. * sem_aux.ads: Same. * sem_ch3.adb: Apply the renaming. * sem_ch6.adb: Same. * sem_ch8.adb: Same. * sem_prag.adb: Same. * sem_res.adb: Same. * sem_util.adb: Same.
2023-11-07ada: Implement Aspects as fields under nodesViljar Indus26-462/+266
In the previous implementation Aspect Specifications were stored in a separate table and not directly under each node. This implementation included a lot of extra code that needed to be maintained manually. The new implementation stores Aspect_Specfications as a syntactic field under each node. This removes the extra code that was needed to store, traverse and clone aspects for nodes. gcc/ada/ * aspects.adb (Exchange_Aspects): Removed. This method was typically called after a Rewrite method. Now since the Rewrite switches the aspects between the new and the old node it is no longer needed. (Has_Aspects): Converted to a utility method that performs the same before as the previous Has_Aspects field did. Meaning it shows whether a node actually has aspects or not. (Copy_Aspects): New utility method that performs a deep copy of the From nodes aspects. (Aspect_Specfications): Removed. No longer needed. Replaced by the primitive operation for the Aspect_Specification fields. (Set_Aspect_Specifications): Likewise. (Aspect_Specifications_Hash_Table): Remove the table and all the utility methods for storing the old aspects. * aspects.ads: Likewise. * atree.adb (Copy_Separate_Tree): Remove custom code for aspects. (New_Copy): Likewise. (Replace): Likewise. (Rewrite): Likewise. * exp_ch3.adb (Expand_N_Object_Declaration): Keep the aspects from the old node. * exp_ch6.adb (Validate_Subprogram_Calls): Previously aspects were ignored because they were not on the tree. Explicitly ignore them here when traversing the tree. * exp_unst.adb (Build_Tables): Likewise * gen_il-fields.ads: Remove Has_Aspects and add Aspect_Specifications fields. * gen_il-gen-gen_nodes.adb: Add Aspect_Specification fields for all nodes that can have aspects. Additionally add Expression_Copy for Aspect_Speficiations to avoid reusing the Associated_Node for generic instantiation and aspect analysis. * ghost.adb (Remove_Ignored_Ghost_Node): Remove call to Remove_Aspects. The rewritten node is a Null_Statement that cannot have aspects and there is not anything to gain from removing them from the Orignal_Node of N since it technically is not part of the active tree. * inline.adb (Process_Formals_In_Aspects): Simplify code for node traversal. * par-ch13.adb: Avoid setting the parent explicitly for the Aspect_Specifications list. This is done explicitly in the setter. * par-ch6.adb: Likewise. * par_sco.adb (Traverse_Aspects): Handle early return. * sem_ch10.adb: Simplify code for Analyze_Aspect_Specifications. * sem_ch11.adb: Likewise. * sem_ch12.adb (Analyze_Formal_Derived_Interface_Type): Keep the aspects from the orignal node after rewrite. (Analyze_Formal_Derived_Type): Likewise. (Analyze_Formal_Interface_Type): Likewise. (Analyze_Formal_Object_Declaration): Simplify code for Analyze_Aspect_Specifications. (Analyze_Formal_Package_Declaration): Likewise. (Analyze_Formal_Subprogram_Declaration): Likewise. (Analyze_Formal_Type_Declaration): Likewise. (Analyze_Generic_Package_Declaration): Remove Exchange_Aspects. The new node already has the correct aspects after the rewrite. Also simplify code for Analyze_Aspect_Specifications. (Analyze_Generic_Subprogram_Declaration): Likewise. (Analyze_Package_Instantiation): Simplify code for Analyze_Aspect_Specifications. (Build_Instance_Compilation_Unit_Nodes): Remove explicit copy of aspects that is no longer needed. (Save_References): Update the traversal code to handle Aspect_Specifications in the tree. (Copy_Generic_Node): Remove explicit copy for aspects. New_Copy took care of that already. * sem_ch13.adb (Analyze_Aspect_Specifications): Add early return to simplify code for its calls. Avoid reusing the Entity(Associated_Node) field for storing the original expression. Instead use the new Expression_Copy field since Entity(Associated_Node) is also used in generic instantiation. (Analyze_Aspects_On_Subprogram_Body_Or_Stub): Simlify call to Analyze_Aspect_Specifications. (Check_Aspect_At_End_Of_Declarations): Use Expression_Copy instead of Entity. (Check_Aspect_At_Freeze_Point): Likewise. * sem_ch3.adb: Simplify calls to Analyze_Aspect_Specifications. * sem_ch6.adb (Analyze_Abstract_Subprogram_Declaration): Simplify call to Analyze_Aspect_Specifications. (Analyze_Expression_Function): Keep the aspects from the original node after a rewrite. (Analyze_Generic_Subprogram_Body): Remove Exchange aspects that is no longer needed. Simplify call to Analyze_Aspect_Specifications. (Analyze_Null_Procedure): Keep the aspects from the original node after a rewrite. (Analyze_Subprogram_Body_Helper): Simplify calls to Analyze_Aspect_Specifications. (Analyze_Subprogram_Declaration): Likewise. * sem_ch7.adb (Analyze_Package_Body_Helper): Remove Exchange aspects that is no longer needed. Simplify call to Analyze_Aspect_Specifications. (Analyze_Package_Declaration): Simplify call to Analyze_Aspect_Specifications. (Analyze_Private_Type_Declaration): Likewise. * sem_ch8.adb: Simplify calls to Analyze_Aspect_Specifications. * sem_ch9.adb (Analyze_Entry_Body): Simplify call to Analyze_Aspects_On_Subprogram_Body_Or_Stub. (Analyze_Entry_Declaration): Simplify call to Analyze_Aspect_Specifications. (Analyze_Protected_Body): Likewise. (Analyze_Protected_Type_Declaration): Likewise. (Analyze_Single_Protected_Declaration): Keep the aspects from the original node after a rewrite. Simplify call to Analyze_Aspect_Specifications. (Analyze_Single_Task_Declaration): Likewise. (Analyze_Task_Body): Simplify call to Analyze_Aspect_Specifications. (Analyze_Task_Type_Declaration): Simplify calls to Analyze_Aspect_Specifications. * sem_dim.adb: Remove explicitly setting the parents for the Aspect_Specification list. * sem_disp.adb: Remove the with that is no longer required since Aspect_Specifications is a node operation now. * sem_util.adb (Copy_Node_With_Replacement): Remove explicit code for aspects. * treepr.adb (Print_Field): Remove the version that was used for printing aspects. (Print_Node): Remove aspect specific code.
2023-11-07ada: Minor tweaks for comparison operatorsEric Botcazou3-14/+6
No functional changes. gcc/ada/ * gen_il-gen-gen_nodes.adb (N_Op_Boolean): Fix description. * sem_ch4.adb (Analyze_Comparison_Equality_Op): Tidy up. * sem_ch12.adb (Copy_Generic_Node): Use N_Op_Compare subtype.
2023-11-07ada: Cleanup "not Present" on List_IdPiotr Trojanek4-4/+4
gcc/ada/ * exp_ch6.adb, exp_disp.adb, sem_ch13.adb, sem_ch3.adb: Fix newly detected violations.
2023-11-07ada: Cleanup more "not Present"Piotr Trojanek3-9/+7
We had a GNATcheck rule that suggests replacing "not Present (...)" with "No (...)", but it only detected calls with a parameter of type Node_Id. Now this rules also detects parameters of type Elist_Id. gcc/ada/ * sem_ch3.adb, sem_ch4.adb, sem_eval.adb: Fix newly detected violations.
2023-11-07ada: Fix documentation of -gnatwcRonan Desplanques2-4/+4
-gnatwc has been correctly emitting warnings for expressions outside of tests for a while, but its documentation in the user's guide had never been updated to reflect that. Also, the documentation used "conditional expressions" to designate boolean expressions, but "conditional expressions" has been defined by Ada 2012 to designate if expressions and case expressions. This patch fixes those issues. gcc/ada/ * doc/gnat_ugn/building_executable_programs_with_gnat.rst: Fix -gnatwc documentation. * gnat_ugn.texi: Regenerate.
2023-11-07ada: New Local_Restrictions and User_Aspect aspects.Steve Baird22-643/+1843
A GNAT-defined aspect, Local_Restrictions, is defined. This provides a way of enforcing a given restriction for an individual subprogram (and its call-closure) without requiring that the entire program satisfy the restriction. A GNAT-defined aspect, User_Aspect, is defined. This (along with the new User_Aspect_Definition configuration pragma) provides a way of naming a set of aspect specifications which can then be applied to multiple declarations without textual repetition of the set. gcc/ada/ * local_restrict.ads: A new package. Declares Local_Restriction enumeration type and provides operations to check for local restriction violations. * local_restrict.adb: Corresponding package body. Replace "not Present (X)" calls with "No (X)" calls. * aspects.ads: Add a new enumeration elements, Aspect_Local_Restrictions and Aspect_User_Aspect, to the Aspect_Id enumeration type. Update Aspect_Id-indexed aggregates. Add nested package User_Aspect_Support to manage two pieces of state. One is a map from identifiers to User_Aspect_Definition pragmas (updated when such a pragma is encountered). The other is an access-to-subprogram variable that is introduced in order to keep the bulk of semantics out of the closure of package Aspects while allowing a call from aspects.adb to the sem_ch13 procedure that analyzes a User_Aspect aspect specification. * aspects.adb (Find_Aspect): Cope with a case of a block statement with an empty parent. It is not clear whether this is papering over a compiler bug. Add indirect call through the aforementioned access-to-subprogram variable when Find_Aspect enounters an unanalyzed User_Aspect aspect specification. If Find_Aspect is called looking for aspect Foo, then a User_Aspect specification might generate (during analysis) a Foo aspect specification. So the Find_Aspect call needs to trigger that analysis if it has not already taken place. Provide a body for package User_Aspect_Support. Replace "not Present (X)" call with "No (X)" call. * freeze.adb (Freeze_Subprogram): Check local restriction compatibility when a dispatching operation is overridden. * par-prag.adb: Add support for parsing a User_Aspect_Definition pragma. * restrict.ads: We'd like to have the body of package Restrict include a call to a procedure declared in package Local_Restrict. Doing that in the obvious way pulls most of semantics into the closure of package Restrict, and that turns out to cause problems. So we introduce a level of indirection and instead call through an access-to-subprogram value. In this unit, we declare the access-to-subprogram type and object. * restrict.adb (Check Restriction): When a construct is encountered that could violate a global restriction (depending on whether the given restriction is in effect), Check_Restriction is called. At this point, we also check for a violation of any corresponding local restriction that is in effect. For reasons described above, this check is performed via an indirect call. * sem_ch13.ads (Parse_Aspect_Local_Restrictions): A new function, similar to the existing Parse_Aspect_Xxx subprograms. * sem_ch13.adb: Perform semantic analysis of Local_Restrictions and User_Aspect aspect specifications. Declare and call new Validate_Aspect_Local_Restrictions and Analyze_User_Aspect_Aspect_Specification procedures (a reference to the latter is registered during package elaboration). In Analyze_Aspect_Specifications, do not set the Analyzed flag of a User_Aspect aspect specification. Replace "not Present (X)" call with "No (X)" call. Replace 'Image with 'Img in a case where the prefix of the attribute reference is an object; this is done to accomodate older compilers. * sem_ch6.adb (Check_Subtype_Conformant): Include in subtype conformance check a check for overriding-related compatibility of local restrictions. * sem_ch8.adb (Analyze_Subprogram_Renaming): In the case of an instance of a generic that takes a formal subprogram, check that formal and actual are compatible with respect to local restrictions. * sem_prag.adb: Add support for User_Aspect_Definition pragma. * sem_res.adb (Resolve_Call): Check caller/callee compatibility with respect to local restrictions. * snames.ads-tmpl: Add Name_Local_Restrictions, Name_User_Aspect, and Name_User_Aspect_Definition constants. * doc/gnat_rm/implementation_defined_aspects.rst: Document new aspects. * doc/gnat_rm/implementation_defined_pragmas.rst: Document new pragma. * doc/gnat_ugn/the_gnat_compilation_model.rst: Add User_Aspect_Definition to list of GNAT pragmas. * gcc-interface/Make-lang.in: Add local_restrict.o. * gnat-style.texi: Regenerate. * gnat_rm.texi: Regenerate. * gnat_ugn.texi: Regenerate.
2023-11-07ada: Error in prefix-notation callBob Duff1-2/+8
The compiler gives a wrong error for a call of the form X.Y(...) when Y is inherited indirectly via an interface. gcc/ada/ * sem_ch4.adb (Is_Private_Overriding): Return True in the case where a primitive operation is publicly inherited but privately overridden.
2023-11-07ada: Remove duplicated code for expansion of packed array assignmentsPiotr Trojanek1-4/+0
Expansion of assignments to packed array objects has two cases and had duplicated code for both these cases. gcc/ada/ * exp_pakd.adb (Expand_Bit_Packed_Element_Set): Remove code from the ELSE branch, because it was is identical to code before the IF statements itself.
2023-11-07ada: Simplify expansion of packed array assignmentsPiotr Trojanek1-4/+4
When expanding assignment to a packed array object, e.g. a formal parameter with mode OUT that might have unconstrained type, we took the component type and component size from the constrained actual subtype. It is simpler to take these properties from the nominal type of the assigned object. Semantics is unaffected, because constraining the array doesn't change the type or size of the array components. gcc/ada/ * exp_pakd.adb (Expand_Bit_Packed_Element_Set): Change Ctyp and Csiz from variables to constants and compute them using the nominal type of the assigned array object.
2023-11-07ada: Fix extra whitespace after END keywordsPiotr Trojanek8-8/+8
Style cleanup. gcc/ada/ * exp_pakd.adb, libgnarl/s-osinte__android.ads, libgnarl/s-osinte__linux.ads, libgnarl/s-osinte__qnx.ads, libgnarl/s-osinte__rtems.ads, libgnat/s-gearop.adb, libgnat/s-poosiz.adb, sem_util.adb: Fix style.
2023-11-07ada: Avoid extra conversion in expansion of packed array assignmentsPiotr Trojanek1-1/+2
Expansion of assignments to packed array objects with string literals on the right-hand side, created an unnecessary conversion, i.e.: ... := component_type (declare temp : component_type := "string_literal"; begin temp) Now the expansion omits the outer type conversion. Cleanup; behavior is unaffected. gcc/ada/ * exp_pakd.adb (Expand_Bit_Packed_Element_Set): Simplify handling of assignments with string literals.
2023-11-07ada: Simplify handling of known values in expansion of packed arraysPiotr Trojanek1-16/+10
If an expression value is not known at compile time, it can be represented with No_Uint and doesn't require a dedicated flag. Code cleanup; behavior is unaffected. gcc/ada/ * exp_pakd.adb (Expand_Bit_Packed_Element_Set): Remove Rhs_Val_Known; represent unknown value by assigning Rhs_Val with No_Uint.
2023-11-07ada: Change local variables to constants in expansion of packed arraysPiotr Trojanek1-7/+3
Cleanup; semantics is unaffected. gcc/ada/ * exp_pakd.adb (Expand_Bit_Packed_Element_Set): Change local Decl object from variable to constant. (Setup_Inline_Packed_Array_Reference): Likewise for Csiz.
2023-11-07ada: Fix style in declaration of routine for expansion of packed arraysPiotr Trojanek1-10/+10
Style cleanup. gcc/ada/ * exp_pakd.adb (Setup_Inline_Packed_Array_Reference): Remove extra whitespace from the list of parameters.
2023-11-07ada: Cleanup getting of actual subtypesPiotr Trojanek1-3/+1
Avoid potentially unnecessary call to Etype. gcc/ada/ * sem_util.adb (Get_Actual_Subtype_If_Available): Only call Etype when necessary.
2023-11-07ada: Fix handling of actual subtypes for expanded namesPiotr Trojanek1-2/+2
gcc/ada/ * sem_util.adb (Get_Actual_Subtype,Get_Actual_Subtype_If_Available): Fix handling of expanded names.