[M3devel] m3cc -enable-checking=all

Jay K jay.krell at cornell.edu
Mon May 31 11:50:59 CEST 2010


static void
m3cg_and (void)
{
  MTYPE (t);

  EXPR_REF (-2) = m3_build2 (BIT_AND_EXPR, m3_unsigned_type (t),
                             EXPR_REF (-2), EXPR_REF (-1));
  EXPR_POP ();
}


Why do we make the result unsigned?

 - Jay

----------------------------------------
> From: jay.krell at cornell.edu
> To: m3devel at elegosoft.com
> Date: Mon, 31 May 2010 08:44:27 +0000
> Subject: [M3devel] m3cc -enable-checking=all
>
>
>       Configure = Configure & " -enable-checking=all"
>
>
> enables a bunch of extra checks.
> That fail.
> With the current 4.3 backend.
> I'm going to look into some/all of this.
>
>
> .1079 = D.1078 & 1
> ../src/ConnectRdWr.m3:35: error: type mismatch in binary expression
> word_64
>
> int_64
>
> int_64
>
> D.1101 = D.1100 & 1
> ../src/ConnectRdWr.m3:35: error: type mismatch in binary expression
> word_64
>
> int_64
>
> int_64
>
> D.1121 = D.1120 & 1
> ../src/ConnectRdWr.m3:35: error: type mismatch in binary expression
> word_64
>
>
> I think this might be one and only one problem.
> The "tagged reference" checking using signed 1 instead of unsigned 1 in anding with the address.
>
> Probably positive constants that fit in the signed type of the same size shouldn't fail.
>
>  - Jay
>
>
 		 	   		  


More information about the M3devel mailing list