[M3devel] alpha32 atomic exchange char/widechar?

Jay K jay.krell at cornell.edu
Sun Apr 25 02:00:57 CEST 2010


Tony, any idea why on Alpha32 atomic exchange of char/widechar would hit assertion failures in the compiler?
It works on Alpha64, and it works on Alpha32 from C (gcc 4.3.0)
  So it isn't for lacking the necessary instructions.
  It works with ev4 or ev6, just more efficiently with ev6.

I edited Atomic.mg to just:

(* Copyright (C) 1989, Digital Equipment Corporation           *)
(* All rights reserved.                                        *)
(* See the file COPYRIGHT for a full description.              *)

GENERIC MODULE Atomic(Rep, Impl);

PROCEDURE Swap (VAR var: T; val: Rep.T; order: Order): Rep.T =
  BEGIN
RETURN Impl.Swap (var, val, Order.Sequential);
  END Swap;

BEGIN
END Atomic.

and then I get:

../ALPHA32_VMS/AtomicChar.m3 => ../src/atomic/Atomic.mg:9: internal compiler error: in emit_move_insn, at expr.c:3379
../ALPHA32_VMS/AtomicWideChar.m3 => ../src/atomic/Atomic.mg: In function 'AtomicWideChar__Swap':
../ALPHA32_VMS/AtomicWideChar.m3 => ../src/atomic/Atomic.mg:9: internal compiler error: in emit_move_insn, at expr.c:3379
Please submit a full bug report,

rtx
emit_move_insn (rtx x, rtx y)
{
  enum machine_mode mode = GET_MODE (x);
  rtx y_cst = NULL_RTX;
  rtx last_insn, set;

  gcc_assert (mode != BLKmode
          && (GET_MODE (y) == mode || GET_MODE (y) == VOIDmode));

I'll dig a bit.

 - Jay
 		 	   		  


More information about the M3devel mailing list