[M3devel] alpha32 atomic exchange char/widechar?

Jay K jay.krell at cornell.edu
Sun Apr 25 15:26:43 CEST 2010


aha, gcc 4.3 hits the same assertion failure with -O1 or -O2.
I should have noticed that earlier.

 - Jay

----------------------------------------
> From: jay.krell at cornell.edu
> To: m3devel at elegosoft.com
> Subject: alpha32 atomic exchange char/widechar?
> Date: Sun, 25 Apr 2010 00:00:57 +0000
>
>
> 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