[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