Possible bug in gcc-3.4.3 fixincludes on IBM AIX 5.2

Building the compiler ("make bootstrap") fails when compiling
genautomata.c, due to a header file problem. The header file which
produces the error is generated by fixincludes from the system math.h
file. It appears that the word "class" is triggering the insertion of
an #ifndef...#endif pair, but the #endif is being tacked on to the end
of the preceeding line, which ends in a continuation character.

Cheers -- Dave.


This fragment of /usr/include/math.h (with line numbers added)

  1040  #ifndef __LONGDOUBLE128
  1041  #define fpclassify(__x) \
  1042      (sizeof(__x) == sizeof(float) ?  \
  1043          ((_classf((double)__x) == FP_SNAN) || 
(_classf((double)__x) == FP_QNAN) ?
 \
  1044              FP_QNAN : \
  1045              (_classf((double) __x) & 0x00000001 ? \
  1046                  _classf((double) __x) - 1 : \
  1047                  _classf((double) __x)) ) : \
  1048          ((class(__x) == FP_SNAN) || (class(__x) == FP_QNAN) ? \
  1049              FP_QNAN : \
  1050              (class(__x)  & 0x00000001 ? \
  1051                  _class(__x) - 1 : \
  1052                  _class(__x))))

appears to have been transformed in gccobj/gcc/include/math.h into:
(line numbers added again)

  1063  #ifndef __LONGDOUBLE128
  1064  #define fpclassify(__x) \
  1065      (sizeof(__x) == sizeof(float) ?  \
  1066          ((_classf((double)__x) == FP_SNAN) || 
(_classf((double)__x) == FP_QNAN) ?
 \
  1067              FP_QNAN : \
  1068              (_classf((double) __x) & 0x00000001 ? \
  1069                  _classf((double) __x) - 1 : \
  1070                  _classf((double) __x)) ) : \
  1071  #ifndef __cplusplus
  1072          ((class(__x) == FP_SNAN) || (class(__x) == FP_QNAN) ? \
  1073  #endif
  1074              FP_QNAN : \
  1075  #ifndef __cplusplus
  1076              (class(__x)  & 0x00000001 ? \
  1077  #endif
  1078                  _class(__x) - 1 : \
  1079                  _class(__x))))

Pre-processing genautomata.c using gccobj/gcc/include/math.h yeilds in
part:

# 1072 "include/math.h" 3 4
        ((class(__x) == 8) || (class(__x) == 9) ? #endif

            9 : #ifndef __cplusplus

            (class(__x) & 0x00000001 ? #endif

                _class(__x) - 1 : _class(__x))))
# 1184 "include/math.h" 3 4

Reply via email to