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-----
Comment #2 by braddr — 2006-11-25T15:08:23Z
Mass reassignment of gdc bugs from me to David.
Comment #3 by dvdfrdmn — 2006-12-16T21:23:14Z
Fixed in GDC 0.20