https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102440
--- Comment #8 from Martin Liška <marxin at gcc dot gnu.org> --- (In reply to Segher Boessenkool from comment #6) > (In reply to Martin Liška from comment #5) > > All right, so the meaning of the UInteger type is actually that users can't > > set the flag/param to a negative value: > > > > $ gcc -fabi-version=-3 a.c > > gcc: error: argument to '-fabi-version=' should be a non-negative integer > > That doesn't contradict using it with an "unsigned int". Yes. > > > Plus there are very many flags that are initialized to -1 with Init(-1). The > > special value is used for distinguishing between a set value and the default > > one. > > That doesn't contradict using it with an "unsigned int". Yes. > > > So the name is unfortunate, but I don't see what can we do about it? > > We could make the "UInteger" type mean it is implemented with an "unsigned > int" > C type (or some other unsigned integer type). This would lead to the following list of -Wsign-compare warnings: /home/marxin/Programming/gcc/gcc/c-family/c-opts.c:934:27: warning: comparison of integer expressions of different signedness: ‘unsigned int’ and ‘int’ [-Wsign-compare] /home/marxin/Programming/gcc/gcc/c-family/c-opts.c:988:57: warning: comparison of integer expressions of different signedness: ‘unsigned int’ and ‘int’ [-Wsign-compare] /home/marxin/Programming/gcc/gcc/c-family/c-opts.c:990:36: warning: comparison of integer expressions of different signedness: ‘unsigned int’ and ‘int’ [-Wsign-compare] /home/marxin/Programming/gcc/gcc/c-family/c-opts.c:992:62: warning: comparison of integer expressions of different signedness: ‘unsigned int’ and ‘int’ [-Wsign-compare] /home/marxin/Programming/gcc/gcc/auto-profile.c:1631:23: warning: comparison of integer expressions of different signedness: ‘int’ and ‘unsigned int’ [-Wsign-compare] /home/marxin/Programming/gcc/gcc/cfgcleanup.c:2012:15: warning: comparison of integer expressions of different signedness: ‘int’ and ‘unsigned int’ [-Wsign-compare] /home/marxin/Programming/gcc/gcc/cfgexpand.c:6805:7: warning: comparison of integer expressions of different signedness: ‘int’ and ‘unsigned int’ [-Wsign-compare] /home/marxin/Programming/gcc/gcc/combine.c:13151:36: warning: comparison of integer expressions of different signedness: ‘int’ and ‘unsigned int’ [-Wsign-compare] /home/marxin/Programming/gcc/gcc/cse.c:6315:30: warning: comparison of integer expressions of different signedness: ‘int’ and ‘unsigned int’ [-Wsign-compare] /home/marxin/Programming/gcc/gcc/cse.c:6493:30: warning: comparison of integer expressions of different signedness: ‘int’ and ‘unsigned int’ [-Wsign-compare] /home/marxin/Programming/gcc/gcc/cselib.c:2507:24: warning: comparison of integer expressions of different signedness: ‘int’ and ‘unsigned int’ [-Wsign-compare] /home/marxin/Programming/gcc/gcc/emit-rtl.c:2731:29: warning: comparison of integer expressions of different signedness: ‘int’ and ‘unsigned int’ [-Wsign-compare] /home/marxin/Programming/gcc/gcc/emit-rtl.c:3403:26: warning: comparison of integer expressions of different signedness: ‘int’ and ‘unsigned int’ [-Wsign-compare] /home/marxin/Programming/gcc/gcc/emit-rtl.c:4011:26: warning: comparison of integer expressions of different signedness: ‘int’ and ‘unsigned int’ [-Wsign-compare] /home/marxin/Programming/gcc/gcc/flags.h:111:64: warning: comparison of integer expressions of different signedness: ‘unsigned int’ and ‘int’ [-Wsign-compare] /home/marxin/Programming/gcc/gcc/fold-const.c:6030:42: warning: comparison of integer expressions of different signedness: ‘unsigned int’ and ‘int’ [-Wsign-compare] /home/marxin/Programming/gcc/gcc/fold-const.c:9670:42: warning: comparison of integer expressions of different signedness: ‘unsigned int’ and ‘int’ [-Wsign-compare] /home/marxin/Programming/gcc/gcc/fold-const.c:14686:24: warning: comparison of integer expressions of different signedness: ‘int’ and ‘unsigned int’ [-Wsign-compare] /home/marxin/Programming/gcc/gcc/fold-const.c:15346:24: warning: comparison of integer expressions of different signedness: ‘int’ and ‘unsigned int’ [-Wsign-compare] /home/marxin/Programming/gcc/gcc/gcse.c:801:20: warning: comparison of integer expressions of different signedness: ‘int’ and ‘unsigned int’ [-Wsign-compare] /home/marxin/Programming/gcc/gcc/gcse.c:1846:43: warning: comparison of integer expressions of different signedness: ‘int’ and ‘unsigned int’ [-Wsign-compare] /home/marxin/Programming/gcc/gcc/gimple-loop-interchange.cc:369:23: warning: comparison of integer expressions of different signedness: ‘int’ and ‘unsigned int’ [-Wsign-compare] /home/marxin/Programming/gcc/gcc/gimple-loop-interchange.cc:2034:36: warning: comparison of integer expressions of different signedness: ‘int’ and ‘unsigned int’ [-Wsign-compare] /home/marxin/Programming/gcc/gcc/gimple-range-cache.cc:437:42: warning: comparison of integer expressions of different signedness: ‘int’ and ‘unsigned int’ [-Wsign-compare] /home/marxin/Programming/gcc/gcc/gimple-range-gori.cc:348:31: warning: comparison of integer expressions of different signedness: ‘int’ and ‘unsigned int’ [-Wsign-compare] /home/marxin/Programming/gcc/gcc/gimple-ssa-split-paths.c:413:7: warning: comparison of integer expressions of different signedness: ‘int’ and ‘unsigned int’ [-Wsign-compare] /home/marxin/Programming/gcc/gcc/haifa-sched.c:5160:47: warning: comparison of integer expressions of different signedness: ‘int’ and ‘unsigned int’ [-Wsign-compare] /home/marxin/Programming/gcc/gcc/haifa-sched.c:5164:41: warning: comparison of integer expressions of different signedness: ‘int’ and ‘unsigned int’ [-Wsign-compare] /home/marxin/Programming/gcc/gcc/haifa-sched.c:6573:40: warning: comparison of integer expressions of different signedness: ‘int’ and ‘unsigned int’ [-Wsign-compare] /home/marxin/Programming/gcc/gcc/ifcvt.c:3946:9: warning: comparison of integer expressions of different signedness: ‘int’ and ‘unsigned int’ [-Wsign-compare] /home/marxin/Programming/gcc/gcc/ipa-cp.c:2066:45: warning: comparison of integer expressions of different signedness: ‘int’ and ‘unsigned int’ [-Wsign-compare] /home/marxin/Programming/gcc/gcc/ipa-cp.c:1942:43: warning: comparison of integer expressions of different signedness: ‘int’ and ‘unsigned int’ [-Wsign-compare] /home/marxin/Programming/gcc/gcc/ipa-cp.c:1942:43: warning: comparison of integer expressions of different signedness: ‘int’ and ‘unsigned int’ [-Wsign-compare] /home/marxin/Programming/gcc/gcc/ipa-inline.c:187:18: warning: comparison of integer expressions of different signedness: ‘int’ and ‘unsigned int’ [-Wsign-compare] /home/marxin/Programming/gcc/gcc/ipa-inline.c:603:22: warning: comparison of integer expressions of different signedness: ‘int’ and ‘unsigned int’ [-Wsign-compare] /home/marxin/Programming/gcc/gcc/ipa-inline.c:732:34: warning: comparison of integer expressions of different signedness: ‘int’ and ‘unsigned int’ [-Wsign-compare] /home/marxin/Programming/gcc/gcc/ipa-inline.c:923:18: warning: comparison of integer expressions of different signedness: ‘int’ and ‘unsigned int’ [-Wsign-compare] /home/marxin/Programming/gcc/gcc/ipa-inline.c:943:26: warning: comparison of integer expressions of different signedness: ‘int’ and ‘unsigned int’ [-Wsign-compare] /home/marxin/Programming/gcc/gcc/ipa-inline.c:1783:17: warning: comparison of integer expressions of different signedness: ‘int’ and ‘unsigned int’ [-Wsign-compare] /home/marxin/Programming/gcc/gcc/ipa-inline.c:3022:25: warning: comparison of integer expressions of different signedness: ‘int’ and ‘unsigned int’ [-Wsign-compare] /home/marxin/Programming/gcc/gcc/ipa-inline.c:3042:26: warning: comparison of integer expressions of different signedness: ‘int’ and ‘unsigned int’ [-Wsign-compare] /home/marxin/Programming/gcc/gcc/ipa-modref.c:1500:36: warning: comparison of integer expressions of different signedness: ‘int’ and ‘unsigned int’ [-Wsign-compare] /home/marxin/Programming/gcc/gcc/ipa-modref.c:1671:13: warning: comparison of integer expressions of different signedness: ‘int’ and ‘unsigned int’ [-Wsign-compare] /home/marxin/Programming/gcc/gcc/ipa-prop.c:1250:17: warning: comparison of integer expressions of different signedness: ‘int’ and ‘unsigned int’ [-Wsign-compare] /home/marxin/Programming/gcc/gcc/ira-build.c:2254:17: warning: comparison of integer expressions of different signedness: ‘int’ and ‘unsigned int’ [-Wsign-compare] /home/marxin/Programming/gcc/gcc/loop-invariant.c:1493:15: warning: comparison of integer expressions of different signedness: ‘unsigned int’ and ‘int’ [-Wsign-compare] /home/marxin/Programming/gcc/gcc/loop-unroll.c:1816:37: warning: comparison of integer expressions of different signedness: ‘unsigned int’ and ‘int’ [-Wsign-compare] /home/marxin/Programming/gcc/gcc/lra-constraints.c:6911:56: warning: comparison of integer expressions of different signedness: ‘int’ and ‘unsigned int’ [-Wsign-compare] /home/marxin/Programming/gcc/gcc/system.h:395:23: warning: comparison of integer expressions of different signedness: ‘int’ and ‘unsigned int’ [-Wsign-compare] /home/marxin/Programming/gcc/gcc/modulo-sched.c:1657:27: warning: comparison of integer expressions of different signedness: ‘int’ and ‘unsigned int’ [-Wsign-compare] options-save.c:11902:10: warning: comparison of integer expressions of different signedness: ‘int’ and ‘unsigned int’ [-Wsign-compare] options-save.c:11927:10: warning: comparison of integer expressions of different signedness: ‘int’ and ‘unsigned int’ [-Wsign-compare] options-save.c:12081:10: warning: comparison of integer expressions of different signedness: ‘int’ and ‘unsigned int’ [-Wsign-compare] options-save.c:12877:10: warning: comparison of integer expressions of different signedness: ‘int’ and ‘unsigned int’ [-Wsign-compare] options-save.c:12896:10: warning: comparison of integer expressions of different signedness: ‘int’ and ‘unsigned int’ [-Wsign-compare] options-save.c:13013:10: warning: comparison of integer expressions of different signedness: ‘int’ and ‘unsigned int’ [-Wsign-compare] /home/marxin/Programming/gcc/gcc/predict.c:447:8: warning: comparison of integer expressions of different signedness: ‘int’ and ‘unsigned int’ [-Wsign-compare] /home/marxin/Programming/gcc/gcc/predict.c:449:11: warning: comparison of integer expressions of different signedness: ‘int’ and ‘unsigned int’ [-Wsign-compare] /home/marxin/Programming/gcc/gcc/reload.c:6731:18: warning: comparison of integer expressions of different signedness: ‘int’ and ‘unsigned int’ [-Wsign-compare] /home/marxin/Programming/gcc/gcc/sched-rgn.c:571:21: warning: comparison of integer expressions of different signedness: ‘int’ and ‘unsigned int’ [-Wsign-compare] /home/marxin/Programming/gcc/gcc/sched-rgn.c:572:26: warning: comparison of integer expressions of different signedness: ‘int’ and ‘unsigned int’ [-Wsign-compare] /home/marxin/Programming/gcc/gcc/sched-deps.c:2483:15: warning: comparison of integer expressions of different signedness: ‘int’ and ‘unsigned int’ [-Wsign-compare] /home/marxin/Programming/gcc/gcc/sched-deps.c:2685:17: warning: comparison of integer expressions of different signedness: ‘int’ and ‘unsigned int’ [-Wsign-compare] /home/marxin/Programming/gcc/gcc/sched-deps.c:3210:41: warning: comparison of integer expressions of different signedness: ‘int’ and ‘unsigned int’ [-Wsign-compare] /home/marxin/Programming/gcc/gcc/sched-deps.c:3211:48: warning: comparison of integer expressions of different signedness: ‘int’ and ‘unsigned int’ [-Wsign-compare] /home/marxin/Programming/gcc/gcc/sched-rgn.c:2226:20: warning: comparison of integer expressions of different signedness: ‘int’ and ‘unsigned int’ [-Wsign-compare] /home/marxin/Programming/gcc/gcc/sched-deps.c:3667:44: warning: comparison of integer expressions of different signedness: ‘int’ and ‘unsigned int’ [-Wsign-compare] /home/marxin/Programming/gcc/gcc/sched-rgn.c:3188:23: warning: comparison of integer expressions of different signedness: ‘int’ and ‘unsigned int’ [-Wsign-compare] /home/marxin/Programming/gcc/gcc/sel-sched-ir.c:6024:26: warning: comparison of integer expressions of different signedness: ‘int’ and ‘unsigned int’ [-Wsign-compare] /home/marxin/Programming/gcc/gcc/sel-sched.c:3456:11: warning: comparison of integer expressions of different signedness: ‘int’ and ‘unsigned int’ [-Wsign-compare] /home/marxin/Programming/gcc/gcc/sanopt.c:1307:26: warning: comparison of integer expressions of different signedness: ‘int’ and ‘unsigned int’ [-Wsign-compare] /home/marxin/Programming/gcc/gcc/tree-chrec.c:335:25: warning: comparison of integer expressions of different signedness: ‘int’ and ‘unsigned int’ [-Wsign-compare] /home/marxin/Programming/gcc/gcc/tree-chrec.c:337:27: warning: comparison of integer expressions of different signedness: ‘int’ and ‘unsigned int’ [-Wsign-compare] /home/marxin/Programming/gcc/gcc/tree-data-ref.c:5710:7: warning: comparison of integer expressions of different signedness: ‘int’ and ‘unsigned int’ [-Wsign-compare] /home/marxin/Programming/gcc/gcc/tree-inline.c:1842:15: warning: comparison of integer expressions of different signedness: ‘int’ and ‘unsigned int’ [-Wsign-compare] /home/marxin/Programming/gcc/gcc/tree-scalar-evolution.c:1151:17: warning: comparison of integer expressions of different signedness: ‘int’ and ‘unsigned int’ [-Wsign-compare] /home/marxin/Programming/gcc/gcc/tree-scalar-evolution.c:2625:19: warning: comparison of integer expressions of different signedness: ‘int’ and ‘unsigned int’ [-Wsign-compare] /home/marxin/Programming/gcc/gcc/tree-ssa-ifcombine.c:569:50: warning: comparison of integer expressions of different signedness: ‘unsigned int’ and ‘int’ [-Wsign-compare] /home/marxin/Programming/gcc/gcc/tree-ssa-dse.c:699:17: warning: comparison of integer expressions of different signedness: ‘int’ and ‘unsigned int’ [-Wsign-compare] /home/marxin/Programming/gcc/gcc/tree-ssa-dse.c:810:21: warning: comparison of integer expressions of different signedness: ‘int’ and ‘unsigned int’ [-Wsign-compare] /home/marxin/Programming/gcc/gcc/tree-ssa-loop-ivcanon.c:863:20: warning: comparison of integer expressions of different signedness: ‘int’ and ‘unsigned int’ [-Wsign-compare] /home/marxin/Programming/gcc/gcc/tree-ssa-loop-ivcanon.c:1069:7: warning: comparison of integer expressions of different signedness: ‘int’ and ‘unsigned int’ [-Wsign-compare] /home/marxin/Programming/gcc/gcc/tree-ssa-loop-ivcanon.c:1504:25: warning: comparison of integer expressions of different signedness: ‘int’ and ‘unsigned int’ [-Wsign-compare] /home/marxin/Programming/gcc/gcc/tree-ssa-loop-split.c:1424:52: warning: comparison of integer expressions of different signedness: ‘int’ and ‘unsigned int’ [-Wsign-compare] /home/marxin/Programming/gcc/gcc/tree-ssa-loop-unswitch.c:324:22: warning: comparison of integer expressions of different signedness: ‘int’ and ‘unsigned int’ [-Wsign-compare] /home/marxin/Programming/gcc/gcc/tree-ssa-loop-unswitch.c:353:20: warning: comparison of integer expressions of different signedness: ‘int’ and ‘unsigned int’ [-Wsign-compare] /home/marxin/Programming/gcc/gcc/tree-ssa-loop-prefetch.c:1826:25: warning: comparison of integer expressions of different signedness: ‘int’ and ‘unsigned int’ [-Wsign-compare] /home/marxin/Programming/gcc/gcc/tree-ssa-loop-prefetch.c:1863:30: warning: comparison of integer expressions of different signedness: ‘int’ and ‘unsigned int’ [-Wsign-compare] /home/marxin/Programming/gcc/gcc/tree-ssa-strlen.c:706:18: warning: comparison of integer expressions of different signedness: ‘int’ and ‘unsigned int’ [-Wsign-compare] /home/marxin/Programming/gcc/gcc/tree-ssa-strlen.c:735:18: warning: comparison of integer expressions of different signedness: ‘int’ and ‘unsigned int’ [-Wsign-compare] /home/marxin/Programming/gcc/gcc/tree-ssa-threadbackward.c:776:19: warning: comparison of integer expressions of different signedness: ‘int’ and ‘unsigned int’ [-Wsign-compare] /home/marxin/Programming/gcc/gcc/tree-ssa-threadedge.c:268:15: warning: comparison of integer expressions of different signedness: ‘int’ and ‘unsigned int’ [-Wsign-compare] /home/marxin/Programming/gcc/gcc/var-tracking.c:5912:20: warning: comparison of integer expressions of different signedness: ‘int’ and ‘unsigned int’ [-Wsign-compare] /home/marxin/Programming/gcc/gcc/var-tracking.c:8438:32: warning: comparison of integer expressions of different signedness: ‘int’ and ‘unsigned int’ [-Wsign-compare] /home/marxin/Programming/gcc/gcc/analyzer/analysis-plan.cc:133:7: warning: comparison of integer expressions of different signedness: ‘int’ and ‘unsigned int’ [-Wsign-compare] /home/marxin/Programming/gcc/gcc/analyzer/program-point.cc:440:13: warning: comparison of integer expressions of different signedness: ‘int’ and ‘unsigned int’ [-Wsign-compare] /home/marxin/Programming/gcc/gcc/analyzer/engine.cc:2434:7: warning: comparison of integer expressions of different signedness: ‘int’ and ‘unsigned int’ [-Wsign-compare] /home/marxin/Programming/gcc/gcc/analyzer/engine.cc:3129:11: warning: comparison of integer expressions of different signedness: ‘int’ and ‘unsigned int’ [-Wsign-compare] /home/marxin/Programming/gcc/gcc/cp/constraint.cc:3746:42: warning: comparison of integer expressions of different signedness: ‘int’ and ‘unsigned int’ [-Wsign-compare] /home/marxin/Programming/gcc/gcc/cp/constexpr.c:1721:11: warning: comparison of integer expressions of different signedness: ‘int’ and ‘unsigned int’ [-Wsign-compare] /home/marxin/Programming/gcc/gcc/cp/constexpr.c:2689:24: warning: comparison of integer expressions of different signedness: ‘int’ and ‘unsigned int’ [-Wsign-compare] /home/marxin/Programming/gcc/gcc/cp/constexpr.c:5996:19: warning: comparison of integer expressions of different signedness: ‘int’ and ‘unsigned int’ [-Wsign-compare] /home/marxin/Programming/gcc/gcc/cp/decl.c:4587:29: warning: comparison of integer expressions of different signedness: ‘unsigned int’ and ‘int’ [-Wsign-compare] /home/marxin/Programming/gcc/gcc/cp/decl.c:4762:41: warning: comparison of integer expressions of different signedness: ‘unsigned int’ and ‘const int’ [-Wsign-compare] /home/marxin/Programming/gcc/gcc/cp/decl.c:4773:37: warning: comparison of integer expressions of different signedness: ‘unsigned int’ and ‘const int’ [-Wsign-compare] /home/marxin/Programming/gcc/gcc/cp/decl.c:4779:42: warning: comparison of integer expressions of different signedness: ‘unsigned int’ and ‘const int’ [-Wsign-compare] /home/marxin/Programming/gcc/gcc/cp/decl.c:4783:44: warning: comparison of integer expressions of different signedness: ‘unsigned int’ and ‘const int’ [-Wsign-compare] /home/marxin/Programming/gcc/gcc/cp/decl.c:4791:37: warning: comparison of integer expressions of different signedness: ‘unsigned int’ and ‘const int’ [-Wsign-compare] /home/marxin/Programming/gcc/gcc/cp/error.c:3705:18: warning: comparison of integer expressions of different signedness: ‘int’ and ‘unsigned int’ [-Wsign-compare] /home/marxin/Programming/gcc/gcc/cp/mangle.c:4132:39: warning: comparison of integer expressions of different signedness: ‘unsigned int’ and ‘int’ [-Wsign-compare] /home/marxin/Programming/gcc/gcc/flags.h:108:46: warning: comparison of integer expressions of different signedness: ‘unsigned int’ and ‘int’ [-Wsign-compare] /home/marxin/Programming/gcc/gcc/flags.h:108:46: warning: comparison of integer expressions of different signedness: ‘unsigned int’ and ‘int’ [-Wsign-compare] /home/marxin/Programming/gcc/gcc/fortran/expr.c:1710:17: warning: comparison of integer expressions of different signedness: ‘int’ and ‘unsigned int’ [-Wsign-compare] /home/marxin/Programming/gcc/gcc/fortran/options.c:291:58: warning: comparison of integer expressions of different signedness: ‘unsigned int’ and ‘int’ [-Wsign-compare] /home/marxin/Programming/gcc/gcc/fortran/options.c:420:50: warning: comparison of integer expressions of different signedness: ‘unsigned int’ and ‘int’ [-Wsign-compare] /home/marxin/Programming/gcc/gcc/fortran/options.c:430:36: warning: comparison of integer expressions of different signedness: ‘unsigned int’ and ‘int’ [-Wsign-compare] /home/marxin/Programming/gcc/gcc/fortran/options.c:433:36: warning: comparison of integer expressions of different signedness: ‘unsigned int’ and ‘int’ [-Wsign-compare] /home/marxin/Programming/gcc/gcc/fortran/options.c:443:31: warning: comparison of integer expressions of different signedness: ‘unsigned int’ and ‘int’ [-Wsign-compare] /home/marxin/Programming/gcc/gcc/fortran/options.c:455:31: warning: comparison of integer expressions of different signedness: ‘unsigned int’ and ‘int’ [-Wsign-compare] /home/marxin/Programming/gcc/gcc/fortran/simplify.c:7845:13: warning: comparison of integer expressions of different signedness: ‘int’ and ‘unsigned int’ [-Wsign-compare] /home/marxin/Programming/gcc/gcc/lto/lto.c:445:27: warning: comparison of integer expressions of different signedness: ‘int’ and ‘unsigned int’ [-Wsign-compare] /home/marxin/Programming/gcc/gcc/lto/lto-partition.c:534:32: warning: comparison of integer expressions of different signedness: ‘unsigned int’ and ‘int’ [-Wsign-compare] One would need to verify/adjust all these places (plus many more for other targets). I'm not sure it's worth it. Unassigning myself..