Chris Lattner wrote:-
 
> Fix PR6282: the include guard optimization cannot happen if the
> guard macro is already defined for the first occurrence of the
> header.  If it is, the body will be skipped and not be properly
> analyzed for the include guard optimization.

> +// PR6282
> +// This test should not trigger the include guard optimization since
> +// the guard macro is defined on the first include.
> +
> +#define ITERATING 1
> +#define X 1
> +#include "mi_opt2.h"
> +#undef X
> +#define X 2
> +#include "mi_opt2.h"
> +
> +// CHECK: b: 1
> +// CHECK: b: 2
> +

Chris - forgetting Clang's implementation, I cannot agree with
the comment and rationale here.  The reason that no include guard
optimization is valid is because the header has a non-empty #else.
The status of the macro on initial inclusion is irrelevant.

What am I missing?

Neil.
_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to