You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by "Xiaoming Gu (JIRA)" <ji...@apache.org> on 2008/11/19 16:34:44 UTC

[jira] Created: (HARMONY-6023) [drlvm][jit] Incorrect int64 lower for MOVSX and MOV

[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.


[jira] Updated: (HARMONY-6023) [drlvm][jit] Illegal CDQ deletion in int64 lowerer

Posted by "Xiaoming Gu (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/HARMONY-6023?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Xiaoming Gu updated HARMONY-6023:
---------------------------------

    Summary: [drlvm][jit] Illegal CDQ deletion in int64 lowerer  (was: [drlvm][jit] Incorrect int64 lower for MOVSX and MOV)

> [drlvm][jit] Illegal CDQ deletion in int64 lowerer
> --------------------------------------------------
>
>                 Key: HARMONY-6023
>                 URL: https://issues.apache.org/jira/browse/HARMONY-6023
>             Project: Harmony
>          Issue Type: Bug
>         Environment: IA32 Windows
>            Reporter: Xiaoming Gu
>         Attachments: H6023-V1.patch
>
>
> 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.


[jira] Commented: (HARMONY-6023) [drlvm][jit] Illegal CDQ deletion in int64 lowerer

Posted by "Xiaoming Gu (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/HARMONY-6023?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12651483#action_12651483 ] 

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

The patch is included into the patch for H6027. (https://issues.apache.org/jira/browse/HARMONY-6027) 

> [drlvm][jit] Illegal CDQ deletion in int64 lowerer
> --------------------------------------------------
>
>                 Key: HARMONY-6023
>                 URL: https://issues.apache.org/jira/browse/HARMONY-6023
>             Project: Harmony
>          Issue Type: Bug
>         Environment: IA32 Windows
>            Reporter: Xiaoming Gu
>         Attachments: H6023-V1.patch
>
>
> 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.


[jira] Commented: (HARMONY-6023) [drlvm][jit] Incorrect int64 lower for MOVSX and MOV

Posted by "Xiaoming Gu (JIRA)" <ji...@apache.org>.
    [ 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.


[jira] Updated: (HARMONY-6023) [drlvm][jit] Incorrect int64 lower for MOVSX and MOV

Posted by "Xiaoming Gu (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/HARMONY-6023?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Xiaoming Gu updated HARMONY-6023:
---------------------------------

    Attachment: H6023-V1.patch

This message is for V1 patch.

Some code is added in i8l pass to detect the interference use of the def of CDQ.

(The patch for H6024 is included.) 

> [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
>         Attachments: H6023-V1.patch
>
>
> 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.