On 01/07/2026 11:10, Jakub Jelinek wrote:
> Hi!
>
> When building with GCC 8, I'm seeing
> ../../gcc/config/aarch64/aarch64-elf-metadata.cc:71:2: warning: extra ‘;’
> [-Wpedantic]
> ../../gcc/config/aarch64/aarch64-sve-builtins-shapes.cc:5456:17: warning:
> extra ‘;’ [-Wpedantic]
> ../../gcc/config/aarch64/aarch64-sve-builtins-shapes.cc:5493:22: warning:
> extra ‘;’ [-Wpedantic]
> ../../gcc/config/aarch64/tuning_models/neoversev2.h:320:2: warning: extra ‘;’
> [-Wpedantic]
> warnings. The following patch fixes that.
>
> Ok for trunk?
>
> 2026-07-01 Jakub Jelinek <[email protected]>
>
> * config/aarch64/tuning_models/neoversev2.h
> (neoversev2_dispatch_constraint_callback): Remove spurious semicolon.
> * config/aarch64/aarch64-elf-metadata.cc
> (gnu_property_features_to_string): Likewise.
> * config/aarch64/aarch64-sve-builtins-shapes.cc (SHAPE (write_zt),
> SHAPE (write_lane_zt)): Likewise.
>
> --- gcc/config/aarch64/tuning_models/neoversev2.h.jj 2026-03-27
> 10:17:13.772336646 +0100
> +++ gcc/config/aarch64/tuning_models/neoversev2.h 2026-07-01
> 11:46:26.610063825 +0200
> @@ -317,7 +317,7 @@ neoversev2_dispatch_constraint_callback
> constraints.safe_push ({TOTAL_SLOTS, total_slots});
>
> return constraints;
> -};
> +}
>
> /* Neoverse V2 dispatch constraints configuration. */
> static const struct dispatch_constraint_info
> neoversev2_dispatch_constraint_info = {
> --- gcc/config/aarch64/aarch64-elf-metadata.cc.jj 2026-03-27
> 10:17:13.756336907 +0100
> +++ gcc/config/aarch64/aarch64-elf-metadata.cc 2026-07-01
> 11:43:39.981150836 +0200
> @@ -68,7 +68,7 @@ gnu_property_features_to_string (unsigne
> separator = ", ";
> }
> return s_features;
> -};
> +}
>
> } // namespace anonymous
>
> --- gcc/config/aarch64/aarch64-sve-builtins-shapes.cc.jj 2026-06-02
> 08:15:04.502142863 +0200
> +++ gcc/config/aarch64/aarch64-sve-builtins-shapes.cc 2026-07-01
> 11:45:24.805837917 +0200
> @@ -5434,7 +5434,7 @@ struct write_zt_def : public overloaded_
> return c.require_immediate_range (0, 0, 0);
> }
> };
> -SHAPE (write_zt);
> +SHAPE (write_zt)
A missing semicolon here can confuse context aware editors and cause them to
mess up subsequent indentation. Would changing the definition of SHAPE to
something like:
#define SHAPE(NAME) \
static CONSTEXPR const NAME##_def NAME##_obj; \
namespace shapes { const function_shape *const NAME = &NAME##_obj; } \
extern int __dummy_shape ATTRIBUTE_UNUSED
work? That would allow for a terminating semicolon at the point of use.
Multiple extern declarations should be harmless.
R.