This is related to the different FE behaviour on const arguments that I posted earlier (http://gcc.gnu.org/ml/gcc/2009-03/msg00316.html). When an enum E is compiled by two different front ends, when we try to combine them in lto1, we trigger an ODR violation because we try to assert that both enums have the same type bounds (TYPE_MIN_VALUE and TYPE_MAX_VALUE).
Since C treats enums as ints, the maximum value is always INT_MAX regardless of how many values are declared. So the question is, how should we lower enums into gimple? The temptation is to use C++'s limits, but I'm concerned that may produce confusion somewhere down the line with the optimizers or other diagnostics. Or should we use C's notion and treat them as ints? Thanks. Diego.