> typedef int foo; > typedef foo* foo_p; > > In a truly canonical type-node environment, "foo" would have the same > type node as "int" (so we couldn't produce the name "foo" in > diagnostics), and "foo_p" would have the same type node as "int*".
But what about when you have multiple integer types that have the same range? Certainly you can't treat all of them as the same because they have different alias sets and it's ciritical for efficient code generation that this be the case. Or would you consider these different types?