[M3devel] barrier labels?

Jay K jay.krell at cornell.edu
Sun Jul 11 13:46:43 CEST 2010


Tony, six years ago you introduce what is now:


http://modula3.elegosoft.com/cgi-bin/cvsweb.cgi/cm3/m3-sys/m3cc/gcc/gcc/m3cg/parse.c.diff?r1=1.5;r2=1.6


static void
m3cg_set_label (void)
{
...
  if (barrier)
    {
...
      {
        rtx list = DECL_STRUCT_FUNCTION (current_function_decl)->x_nonlocal_goto_handler_labels;
        DECL_STRUCT_FUNCTION (current_function_decl)->x_nonlocal_goto_handler_labels
          = gen_rtx_EXPR_LIST (VOIDmode, r, list);
      }
...


I'm not sure what to do here for gcc 4.5.
  The data has moved around and isn't available this early. I suppose we could hang some information on and
    deal with it later in compilation.


DECL_NONLOCAL(l) = true; seems promising, but it caused very bad code to be produced (incorrect, not inefficient).
I didn't look into why. The bad code was changing the stack pointer where it should leave it alone.


gcc-4.5 is working for me now (cm3 built with it can built itself), at least with -O1, AMD64_DARWIN.
And Juno/mentor/tetris work without optimization, I'll test optimized later.
Next I'll test -O2, -O3, m3-sys/m3tests.


Do we have good exception handling tests?
I know that cm3 uses exceptions, like, looking for cm3.cfg.


I'll poke around more..


 - Jay
 		 	   		  


More information about the M3devel mailing list