[Issue 1149] Optimizer: obsolete array length loads, common subexpr. elimin. not working
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Wed Feb 22 20:20:59 PST 2012
http://d.puremagic.com/issues/show_bug.cgi?id=1149
--- Comment #6 from yebblies <yebblies at gmail.com> 2012-02-23 15:20:57 EST ---
(In reply to comment #5)
> (In reply to comment #4)
>
> > Oops. I tried to disable it for floating point and ended up disabling it for
> > all non-integers.
>
> I have tried it with this code:
>
> void main() {
> int[] arr;
> arr.length = 4;
> arr[0] = 1;
> arr[1] = 1;
> arr[2] = 1;
> arr[3] = 1;
> }
>
>
> And I am seeing something similar to the uint[] case.
Yeah, the optimization in my patch is effectively disabled.
I changed it to integer-only because it was crashing in some floating point
code - but the most significant word of an array isn't an integer, it's a
pointer.
I've tracked to codegen down, it seems like 'fnstsw ax' destroys eax and it
never gets restored. Without the optimization loading the pointer into eax
never gets picked up as a cse and removed in the first place.
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
More information about the Digitalmars-d-bugs
mailing list