[m-dev.] Looks like a GCC problem

Ralph Becket rafe at cs.mu.OZ.AU
Mon Feb 17 16:54:58 AEDT 2003

Fergus Henderson, Monday, 17 February 2003:
> I couldn't reproduce this one.
> Which version of gcc are you using?
> Can you add "EXTRA_MGNUCFLAGS=--verbose" to Mmake.params,
> so that it prints out the exact gcc invocation?

How odd.  I've just scratched that workspace, checked out a brand new
one and retried with the same results.  The only thing I'm adding here
is an Mmake.params file with "LIBGRADES = asm_fast.gc.tr.debug" line.

The version of gcc I'm using on ceres is 2.95.4.

> In general, these result from the use of memcpy(), memcmp(), 
> bzero(), or structure assignment.  The work-around is to use
> MR_memcpy(), MR_assign_struct(), etc. -- see
> runtime/mercury_reg_workarounds.h.  Unfortunately GCC
> won't give you the exact line number, just the name of the
> function which is affected.  Look for recent changes to
> that function, or try splitting it up, commenting out
> parts, etc. until you figure out which part of the function
> is causing the problem.

Will do.  The only function in this family in the file is strcpy.
Adding MR_strcpy as

MR_strcpy(void *dest, const void *src)
        char            *d = (char *) dest;
        const char      *s = (const char *) src;

        while((*d++ = *s++) != '\0');

to mercury_reg_workarounds.[ch] doesn't fix the problem.  Nor does
commenting out the switch in mercury_ml_expand_body.h where GCC reports the

I'll keep looking.

mercury-developers mailing list
Post messages to:       mercury-developers at cs.mu.oz.au
Administrative Queries: owner-mercury-developers at cs.mu.oz.au
Subscriptions:          mercury-developers-request at cs.mu.oz.au

More information about the developers mailing list