Function clobber_return_register

Richard Kenner kenner@vlsi1.ultra.nyu.edu
Thu Dec 12 05:17:00 GMT 2002


    So can I see this abort on mainline, or is it only reproducible
    in ACT trees?

Well, it isn't an abort, just bad code generated (the restore of $0 is
deleted).

I doubt the Ada sources matter since there isn't much involved at that level,
so that shouldn't be an issue.  However, I found out yesterday that it
requires the following GCC patch (which has not yet been submitted: I'm
waiting for after the 3.3 release) in order to trigger it, though I strongly
doubt the patch itself is the problem:

*** explow.c    23 Aug 2002 12:00:35 -0000      1.91.6.1
--- explow.c    12 Dec 2002 13:08:50 -0000
*************** emit_stack_restore (save_level, sa, afte
*** 1077,1081 ****
--- 1077,1088 ----
 
    if (sa != 0)
+     {
      sa = validize_mem (sa);
+       /* This clobber prevents the scheduler from moving
+        references to variable arrays below the code
+        that deletes (pops) the arrays. */
+       emit_insn (gen_rtx_CLOBBER (VOIDmode,
+                  gen_rtx_MEM (BLKmode, stack_pointer_rtx)));
+     }
 
    if (after)



More information about the Gcc mailing list