runtime/mercury_label.h:
Add a #include of mercury_conf.h before the #include of
mercury_conf_param.h.
We #include mercury_conf.h anyway, indirectly through mercury_types.h,
but this happens *after* mercury_conf_param.h. This was not a problem
in the usual case when a .c file #included mercury_label.h, since
its inclusion invariable came after inclusion of mercury_imp.h,
which itself includes mercury_conf.h. It was a problem only in one
very special case: when, as part of the namespace cleanliness check,
mercury_label.h was compiled as the only thing #included in
mercury_label.check.c, *and* the grade is the pregen grade.
The problem was that MR_LOW_TAG_BITS is *defined* in mercury_conf.h,
with a simple #define, but in the pregen grade, it is also *redefined*
in mercury_conf_param.h with a #undef/#define sequence. without
the fix, the compiler saw the sequence #undef/#define/#define, and
balked at the double #define. The fix restores the intended
#define/#undef/#define sequence. And the usual header guard macro
protects against the double processing of the body of mercury_conf.h.
runtime/mercury_label.c:
Delete a #include of mercury_conf.h, since it is (and was) redundant.
tests/EXPECT_FAIL_TESTS.hlc.gc.pregen:
Expect the hard_coded/constant_prop_p1 test case to fail in the pregen
grade, since one of the things it tests, arithmetic constant propagation,
is explicitly disabled in this grade.