|View Issue Details [ Jump to Notes ]||[ Issue History ] [ Print ]|
|ID||Project||Category||View Status||Date Submitted||Last Update|
|0000441||mercury||Bug||public||2017-10-18 22:47||2017-10-18 23:42|
|Target Version||Fixed in Version|
|Summary||0000441: Invalid C code for program in hlc.gc grade|
|Description||The attached program compiles and runs successfully in the asm_fast.gc grade. The generated C code|
fails to compile in the hlc.gc grade with the following error:
Mercury/cs/test_vfm2.c: In function ‘test_vfm2__hello_1_f_0’:
Mercury/cs/test_vfm2.c:130:18: error: void value not ignored as it ought to be
HeadVar__2_2 = vfm2__printLine_2_f_0(TypeCtorInfo_5_5, TypeCtorInfo_6_6, ((MR_Box) (Var_4)), FIO_3);
** Error making `Mercury/os/test_vfm2.o'.
This is using rotd-2017-10-15 (although it also occurs with old roads).
|Tags||No tags attached.|
The problem is NOT we generate the line that the error message is for.
The problem is that vfm2.m knows that fio is a dummy type, and makes
the return type of vfm2__printline_2_f_0 void accordingly, even though it keeps
the definition of fio(T) *private*. This means that fio is NOT known to be a dummy
type anywhere but inside the vfm2 module.
We will need to split the concept of "dummy type" into two: dummy types
that are known to be dummy everywhere, and those known to be dummy
only in their defining module.
|2017-10-18 22:47||juliensf||New Issue|
|2017-10-18 22:47||juliensf||File Added: vfm2_bug.tar.gz|
|2017-10-18 23:28||zs||Assigned To||=> zs|
|2017-10-18 23:28||zs||Status||new => assigned|
|2017-10-18 23:42||zs||Note Added: 0000958|