[M3devel] importing types not described to backend

Jay K jay.krell at cornell.edu
Fri Aug 27 20:35:00 CEST 2010


Very wierd:

MODULE Main;
IMPORT Color;
TYPE ColorT = RECORD a,b,c: REAL; END;

<*NOWARN*> PROCEDURE F1 (a,b,c,d,e,f:INTEGER; g:ColorT) =
BEGIN
END F1;

BEGIN
  F1(1,2,3,4,5,6,ColorT{1.0,2.0,3.0});
END Main.


This fails. If you remove the IMPORT, it worked.
The declare_record of ColorT comes and goes with that change.
So I guess the error really is in F1.


 - Jay

----------------------------------------
> From: jay.krell at cornell.edu
> To: m3devel at elegosoft.com
> Date: Fri, 27 Aug 2010 18:28:47 +0000
> Subject: [M3devel] importing types not described to backend
>
>
> This is distilled from m3-ui/anim3d/src/x-opengl/X_OpenGL_Base.m3
>
> INTERFACE Color;
> TYPE T = RECORD a,b,c:REAL; END;
> END Color.
>
>
> MODULE Main;
> IMPORT Color;
> TYPE ColorT = RECORD a,b,c: REAL; END;
>
>
> <*NOWARN*> PROCEDURE F1 (a,b,c,d,e,f:INTEGER; g:ColorT) =
> BEGIN
> END F1;
>
>
> <*NOWARN*> PROCEDURE F2 (a,b,c,d,e,f:INTEGER; g:Color.T) =
> BEGIN
> END F2;
>
>
> BEGIN
>   F1(1,2,3,4,5,6,ColorT{1.0,2.0,3.0});
>   F2(2,3,4,5,6,7,Color.T{2.0,3.0,4.0});
> END Main.
>
>
> On SPARC64_SOLARIS there is an assertion failure in the backend:
> /dev2/cm3/m3-sys/m3cc/SPARC64_SOLARIS/gcc/m3cgc1  -mno-app-regs  -quiet -fno-reorder-blocks -funwind-tables -fPIC   -m64  -gstabs+ Main.mc -o Main.ms
> ../Main.m3: In function 'Main__F1':
> ../Main.m3:13: internal compiler error: in function_arg_record_value, at config/sparc/sparc.c:5038
>
>
> I fixed it so F1 is ok.
> But still F2 isn't.
> The error is reported for F1, though that is wrong. If you comment out F2, it compiles ok.
>
>
> The problem as I understand is we don't tell the backend about imported types.
>  There is nothing in the IR about them, judging from -y and a quick look at parse.c.
>
>
> I intend to fix this if I don't here any objections.
> I'm hoping it isn't too much work.
> I believe it will mostly/all be in m3front.
>
>
> My opinion of our gcc backend drops..
>
>
> Perhaps the time is better used on a C front end.
> Though in this case, I think the work is shared, the same stuff would be missing there too.
>
>
> Thanks,
>  - Jay
>
 		 	   		  


More information about the M3devel mailing list