On 07/04/2017 06:41 AM, Jakub Jelinek wrote: > On Tue, Jul 04, 2017 at 02:00:13PM +0200, Richard Biener wrote: >>> That was intentional. If a->e != NULL, then we know that b->e != NULL, >>> because we have >>> else if (a->e != NULL && b->e == NULL) >>> return -1; >>> earlier. Similarly, if a->e == NULL, then we know that b-> == NULL, because >>> we have: >>> if (a->e == NULL && b->e != NULL) >>> return 1; >>> earlier. >> >> Ah, ok. Twisty ;) I suppose jump threading will have eliminated >> the extra test. > > In the first case maybe, I doubt it would do that after the > iterative_hash_expr calls which are likely not pure. Correct. It'll have to assume that the memory objects changed.
Jeff