GCC Newspaper
OCTOBER 6, 2026
Date
/
Architectures
Components
Topics
News & Policy
Other
i386

Fix enabled attribute for V2QI negate/plusminus insns

Corrects the 'enabled' attribute for MMX V2QI negate and plusminus instructions on i386.

The ‘enabled’ attribute for certain MMX instructions on the i386 architecture, specifically negv2qi2 and v2qi3 (plusminus), was incorrectly using a condition that could change during optimization (optimize_function_for_size_p). This commit modifies the attribute to use optimize_size instead, ensuring it remains a stable, pass-invariant property as required by RTL documentation, thereby fixing a bug related to optimization stability.

In Details

The enabled attribute in MMX RTL for i386's negv2qi2 and v2qi3 instructions incorrectly referenced optimize_function_for_size_p(cfun), whose value can fluctuate due to cgraph frequency estimations. This commit replaces it with the static optimize_size property, aligning with the RTL documentation's requirement for pass-invariant attributes and fixing PR114232's missed case.

For Context
V2QI
A vector data type consisting of two elements of type QI (Quad Integer, typically 8-bit).
negate/plusminus
Operations representing negation (unary minus) and increment/decrement (plus-minus) on the V2QI data type.
enabled attribute
An attribute in GCC's RTL (Register Transfer Language) that determines whether a particular instruction pattern is available or enabled for use by the backend.
RTL
Register Transfer Language. GCC's internal intermediate representation used to describe code transformations between the compiler front-end and the machine-specific back-end.
MMX
An instruction set extension for x86 architectures that provides SIMD (Single Instruction, Multiple Data) capabilities for integer operations.
Filed Under: i386mmxoptimization