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.

Reply via email to