[Bug lto/42088] flag_gtoggle in free_lang_data hides -fcompare-debug errors

rguenth at gcc dot gnu dot org gcc-bugzilla@gcc.gnu.org
Mon Nov 30 15:05:00 GMT 2009



------- Comment #15 from rguenth at gcc dot gnu dot org  2009-11-30 15:05 -------
The issue with the boolean_type_node is that the middle-end does not have
a type for a comparison result but implicitly assumes boolean_type_node.

So for

  D.xxxx_16 = (boolean) D.xxxx_6;
  if (D.xxxx_16 != 0)

with a re-set boolean_type_node we fold this to D.xxxx_6 != 0, with
the original Ada boolean_type_node we do not.  The C frontend for
decaying to bool always produces a comparison btw, not the truncation
we see above (and it only truncates to 8 bits).

In the end we want to unconditionally use a canonical boolean_type_node
in the middle-end, but this forces us to mangle all decls early (as
the mangler looks for boolean_type_node trees).

While the patch in comment #14 now bootstraps ok it has testsuite fails.

FAIL: g++.dg/pch/system-2.C -O2 -g assembly comparison

I think for 4.5 we should admit defeat and disable free-lang-data
unconditionally if not using LTO.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42088



More information about the Gcc-bugs mailing list