This past week I have been looking into type mismatch in simple cases
in GCC.
These simple cases include non compatible types on the two sides of the
MODIFY_EXPR
and comparisons. All the bugs I have found so far have been filed.
They are all listed
under the meta-bug, PR 22368.
The summary is that all languages have problems.
Here is the list of the bugs:
Ada: 22328^* 22381^ 22383^ 22418 22419 22420
C: 22371
C++: 22358^* 22369 22374 22434& 22451 22487 22494
middle-end: 22370 22372 22373 22398&*
java: 22460^
objc: 22474^
fortran: 22375(questionable if this is fortran or fold_builtins
bug)
Ones marked with * have a patch. Ones marked with ^ block bootstrap
with the
extra checking. Ones marked with & cause regression noticeable other
places.
All of the above bugs have a small testcase for the type mismatch.
It would be nice if someone from the language/middle-end maintainer
could look
into the bugs listed above and try to fix them for stage1 of 4.2. I
know that
the Ada folks are looking into theirs already, most of theirs cannot
really
cause any problems but I know at least one C++ one which compares
between
an int and a long which are different sizes on LP64 targets.
The two patches in PR 22368 are used to find these type mismatches. In
some cases
it is only detectable on LP64 targets.
Thanks,
Andrew Pinski