Landing: 9acbae69609a

Project / Subsystem

gcc / middle-end

Date

2026-07-26

Author

Kyrylo Tkachov

Commit

9acbae69609a41df0f20db6222842414a85067ea

Source

github

Perf win

No

Breaking

No

All attributes

project
gcc
subsystem
middle-end
patch_id
commit_hash
9acbae69609a41df0f20db6222842414a85067ea
source_type
github
headline
middle-end: Look through VEC_DUPLICATE_EXPR in ssa_uniform_vector_p
tldr
Improves `ssa_uniform_vector_p` to correctly handle `VEC_DUPLICATE_EXPR` in GIMPLE form.
author
Kyrylo Tkachov
outcome
committed
performance_win
false
breaking_change
false
series_id
series_parts
[]
tags
  • middle-end
  • optimization
  • aarch64
  • simd
discussion_id_link
bugzilla_pr
date
2026-07-26T00:00:00.000Z

The ssa_uniform_vector_p function, which identifies the element a uniform vector is a splat from, has been updated to correctly handle VEC_DUPLICATE_EXPR in its GIMPLE form. Previously, it only handled the bare tree form. This oversight caused callers, such as the lowpart-to-highpart NEON builtin fold on aarch64, to miss optimizations. The change ensures that splatted vectors created using VEC_DUPLICATE_EXPR in GIMPLE assignments are recognized, restoring expected code generation and optimization for vector operations.