Bug 578 – GDC evaluates rvalue of array assignment repeatedly
Status
RESOLVED
Resolution
FIXED
Severity
major
Priority
P2
Component
dmd
Product
D
Version
D2
Platform
x86
OS
All
Creation time
2006-11-19T19:35:00Z
Last change time
2015-06-09T01:31:22Z
Keywords
wrong-code
Assigned to
dvdfrdmn
Creator
akaquinn
Comments
Comment #0 by akaquinn — 2006-11-19T19:35:31Z
In array assignments of a scalar into an array (ie emulating memset), the expression is evaluated repeatedly. It is NOT evaluated repeatedly in DMD.
This error appears to exist in every version of GDC (0.19, latest 0.20 from SVN, latest trunk from SVN)
Reproduction:
Script started on Sun 19 Nov 2006 05:36:34 PM PST
[gregor@glapgor test]$ cat test.d
extern (C) int printf(char *, ...);
int main()
{
int[10] a;
a[] = printf("Ha-HAH\n");
return 0;
}
[gregor@glapgor test]$ gdc test.d
[gregor@glapgor test]$ ./a.out
Ha-HAH
Ha-HAH
Ha-HAH
Ha-HAH
Ha-HAH
Ha-HAH
Ha-HAH
Ha-HAH
Ha-HAH
Ha-HAH
[gregor@glapgor test]$ exit
exit
Script done on Sun 19 Nov 2006 05:36:42 PM PST
Comment #1 by thomas-dloop — 2006-11-25T12:05:42Z
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
[email protected] schrieb am 2006-11-20:
> http://d.puremagic.com/issues/show_bug.cgi?id=578
> In array assignments of a scalar into an array (ie emulating memset), the
> expression is evaluated repeatedly. It is NOT evaluated repeatedly in DMD.
>
> This error appears to exist in every version of GDC (0.19, latest 0.20 from
> SVN, latest trunk from SVN)
>
> Reproduction:
>
> Script started on Sun 19 Nov 2006 05:36:34 PM PST
> [gregor@glapgor test]$ cat test.d
> extern (C) int printf(char *, ...);
>
> int main()
> {
> int[10] a;
> a[] = printf("Ha-HAH\n");
> return 0;
> }
>
> [gregor@glapgor test]$ gdc test.d
> [gregor@glapgor test]$ ./a.out
> Ha-HAH
> Ha-HAH
> Ha-HAH
> Ha-HAH
> Ha-HAH
> Ha-HAH
> Ha-HAH
> Ha-HAH
> Ha-HAH
> Ha-HAH
> [gregor@glapgor test]$ exit
> exit
>
> Script done on Sun 19 Nov 2006 05:36:42 PM PST
Added to DStress as
http://dstress.kuehne.cn/run/o/opSliceAssign_03_A.d
Thomas
-----BEGIN PGP SIGNATURE-----
iD8DBQFFaH0OLK5blCcjpWoRAgb0AKCWUy7kuVK82gTg08nWkx+TDDPceACfaHLZ
J9zICH1VU9on6PrL74WyJM4=
=1ff3
-----END PGP SIGNATURE-----