digitalmars.D.bugs - [Issue 8525] New: optimizer loops infinitely
- d-bugmail puremagic.com (36/36) Aug 08 2012 http://d.puremagic.com/issues/show_bug.cgi?id=8525
- d-bugmail puremagic.com (17/17) Aug 08 2012 http://d.puremagic.com/issues/show_bug.cgi?id=8525
- d-bugmail puremagic.com (6/6) Aug 08 2012 http://d.puremagic.com/issues/show_bug.cgi?id=8525
http://d.puremagic.com/issues/show_bug.cgi?id=8525
Summary: optimizer loops infinitely
Product: D
Version: D2
Platform: All
OS/Version: Other
Status: NEW
Severity: normal
Priority: P2
Component: DMD
AssignedTo: nobody puremagic.com
ReportedBy: dawg dawgfoto.de
OpenBSD-only
cat > bug.d << CODE
class Foo
{
int[] elements;
final int bar()
{
return elements[0];
}
}
CODE
dmd -c -O bug.d
----
The bug is caused by infinitely performing two associative transformations.
- cgelem.c(4444): Replace (a op1 (b op2 c)) with ((a op2 b) op1 c)
- cgelem.c(4471): Replace ((a op c1) op c2) with (a op (c2 op c1))
It only happens on OpenBSD because folding 'c2 op c1' fails in evalu8 due to a
fenv.h workaround.
The proposed fix is to perform the first transformation only if 'b' is not a
constant.
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Aug 08 2012
http://d.puremagic.com/issues/show_bug.cgi?id=8525
There is another similar bug.
cat > bug.d << CODE
int get(int[] devt)
{
return devt[$ - 1];
}
CODE
dmd -c -O bug.d
----
This can be reproduced on non-OpenBSD platforms by deactivating evalu8,
i.e. defining 'elem * evalu8(elem *e) { return e; }'. This is effectively
what this functions does on OpenBSD.
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Aug 08 2012
http://d.puremagic.com/issues/show_bug.cgi?id=8525 https://github.com/D-Programming-Language/dmd/pull/1076 -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Aug 08 2012









d-bugmail puremagic.com 