harmony-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Xiaoming Gu (JIRA)" <j...@apache.org>
Subject [jira] Commented: (HARMONY-6023) [drlvm][jit] Incorrect int64 lower for MOVSX and MOV
Date Thu, 20 Nov 2008 03:18:47 GMT

    [ https://issues.apache.org/jira/browse/HARMONY-6023?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12649249#action_12649249
] 

Xiaoming Gu commented on HARMONY-6023:
--------------------------------------

I checked the code for i8l pass in Ia32I8Lowerer.cpp and found the bug caused by an incorrect
CDQ deletion.

====before i8l pass (after 1st cg_dce)====
BB_50
  PersistentId = 45
  ExecCnt = 94957.8
  Loop: Depth=2, !hdr, hdr=BB_44
  Predcessors: BB_49 
  Successors:  BB_51 [Prob=1] UN_173 [Prob=1e-007](loopexit) 
	I170: (AD:t229:int64) =I8PseudoInst/MOVSX (AU:t228:I_32) 
	I171: (AD:v5:int64) =I8PseudoInst/MOV (AU:t229:int64) 
	I172: (AD:t231:I_32) =CopyPseudoInst/MOV (AU:t230[t27+t176*t183(4)+t121(12)]:I_32) 
	I173: (AD:v4:I_32) =CopyPseudoInst/MOV (AU:t231:I_32) 
	I174: (AD:t233:int64) =I8PseudoInst/AND (AU:t229:int64,t232(4294967295):int64) 
        ....

====in the middle of i8l pass (lowered but before CDQ deletion)====
BB_50
  PersistentId = 45
  ExecCnt = 94957.8
  Loop: Depth=2, !hdr, hdr=BB_44
  Predcessors: BB_49 
  Successors:  BB_51 [Prob=1] UN_173 [Prob=1e-007](loopexit) 
	I783: o1017:U_32 =MOV t228:I_32 
	I784: o1018:I_32 =CDQ o1017:U_32 
	I785: (AD:o960:U_32) =CopyPseudoInst/MOV (AU:o1017:U_32) 
	I786: (AD:o961:I_32) =CopyPseudoInst/MOV (AU:o1018:I_32) 
	I172: (AD:t231:I_32) =CopyPseudoInst/MOV (AU:t230[t27+t176*t183(4)+t121(12)]:I_32) 
	I173: (AD:v4:I_32) =CopyPseudoInst/MOV (AU:t231:I_32) 
	I787: o1019:U_32 (ID:v25(EFLGS):U_32) =AND o1017:U_32,o1021(4294967295):U_32 
	I788: o1020:I_32 (ID:v25(EFLGS):U_32) =AND o1018:I_32,o1022(0):I_32 
        ....

====after i8l pass====
BB_50
  PersistentId = 45
  ExecCnt = 94957.8
  Loop: Depth=2, !hdr, hdr=BB_44
  Predcessors: BB_49 
  Successors:  BB_51 [Prob=1] UN_173 [Prob=1e-007](loopexit) 
	I783: o1017:U_32 =MOV t228:I_32 
	I785: (AD:o960:U_32) =CopyPseudoInst/MOV (AU:o1017:U_32) 
	I786: (AD:o961:I_32) =CopyPseudoInst/MOV (AU:o1018:I_32) 
	I172: (AD:t231:I_32) =CopyPseudoInst/MOV (AU:t230[t27+t176*t183(4)+t121(12)]:I_32) 
	I173: (AD:v4:I_32) =CopyPseudoInst/MOV (AU:t231:I_32) 
	I1111: (AD:o1019:U_32) =CopyPseudoInst/MOV (AU:o1017:U_32) 
	I1112: (AD:o1020:I_32) =CopyPseudoInst/MOV (AU:o1426(0):I_32) 
        ....

The current code for CDQ deletion assumes there is no use for the def of CDQ between CDQ itself
and the related AND. So with I788, I784 is deleted uncarefully.

> [drlvm][jit] Incorrect int64 lower for MOVSX and MOV
> ----------------------------------------------------
>
>                 Key: HARMONY-6023
>                 URL: https://issues.apache.org/jira/browse/HARMONY-6023
>             Project: Harmony
>          Issue Type: Bug
>         Environment: IA32 Windows
>            Reporter: Xiaoming Gu
>
> This bug happens in java.math.Division.divide() if early_prop bypassed. Following are
the details:
>     before i8l pass
> 	I170: (AD:t229:int64) =I8PseudoInst/MOVSX (AU:t228:I_32) 
> 	I171: (AD:v5:int64) =I8PseudoInst/MOV (AU:t229:int64) 
>     after i8l pass
> 	I783: o1017:U_32 =MOV t228:I_32 
> 	I785: (AD:o960:U_32) =CopyPseudoInst/MOV (AU:o1017:U_32) 
> 	I786: (AD:o961:I_32) =CopyPseudoInst/MOV (AU:o1018:I_32) 
> o1018 is not defined, which will cause an assertion error in webmaker pass.
> (It looks there is nothing between early_prop and this bug. But with early_prop, I786
is deleted by the second cg_dce before webmaker. I don't know why I786 is not deleted if early_prop
bypassed. With some investigation, I think there might be something wrong with liveness calculation
during cg_dce. I'll do more when this bug is fixed.)

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message