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.