https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102440
Bug ID: 102440
Summary: Uinteger Opt/Param but the underlying type is signed
Product: gcc
Version: 12.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: tree-optimization
Assignee: unassigned at gcc dot gnu.org
Reporter: linkw at gcc dot gnu.org
Target Milestone: ---
The UInteger type in Opt/Param declaration can easily confuse people that the
variable for this option/parameter is unsigned. But actually the internal
implementation uses signed for it, it requires users to add explicit type
conversion for some cases, otherwise the bootstrapping fails due to -Werror.
I guess the "UInteger" is mainly to restrict the value range of
option/parameter. But I think we still can improve it? Like using one
anonymous union with uinteger and integer instead of a single integer, then
name the corresponding member as signedness?
File this as Segher's suggestion from patch reviewing.