Skip to content

version-20_01_2

@zsomogyi zsomogyi tagged this 01 May 13:47
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.
Assets 2
Loading