- 
    Bug 
- 
    Resolution: Fixed
- 
     P3 P3
- 
    11, 16, 17
- 
        b14
- 
        aarch64
| Issue | Fix Version | Assignee | Priority | Status | Resolution | Resolved In Build | 
|---|---|---|---|---|---|---|
| JDK-8263780 | 13.0.7 | Sergey Nazarkin | P3 | Resolved | Fixed | b04 | 
| JDK-8263739 | 11.0.12-oracle | Dukebot | P3 | Resolved | Fixed | b01 | 
| JDK-8263873 | 11.0.12 | Nick Gasson | P3 | Resolved | Fixed | b01 | 
                    Around line 177 we have:
LIR_Opr tmp = new_pointer_register();
if (Assembler::operand_valid_for_add_sub_immediate(large_disp)) {
__ add(tmp, tmp, LIR_OprFact::intptrConst(large_disp)); <---
index = tmp;
} else {
This is supposed to be calculating "tmp = index + large_disp" but it actually does "large_disp = tmp + tmp".
On line 157 if index is a constant we add it to large_disp and set index to LIR_OprFact::illegalOpr. Then on line 194:
// at this point we either have base + index or base + displacement
if (large_disp == 0) {
return new LIR_Address(base, index, type); <----
} else {
If the displacement and constant index sum to zero we end up passing an illegal value into LIR_Address, triggering an assert.
LIR_Opr tmp = new_pointer_register();
if (Assembler::operand_valid_for_add_sub_immediate(large_disp)) {
__ add(tmp, tmp, LIR_OprFact::intptrConst(large_disp)); <---
index = tmp;
} else {
This is supposed to be calculating "tmp = index + large_disp" but it actually does "large_disp = tmp + tmp".
On line 157 if index is a constant we add it to large_disp and set index to LIR_OprFact::illegalOpr. Then on line 194:
// at this point we either have base + index or base + displacement
if (large_disp == 0) {
return new LIR_Address(base, index, type); <----
} else {
If the displacement and constant index sum to zero we end up passing an illegal value into LIR_Address, triggering an assert.
- backported by
- 
                    JDK-8263739 AArch64: two potential bugs in C1 LIRGenerator::generate_address() -           
- Resolved
 
-         
- 
                    JDK-8263780 AArch64: two potential bugs in C1 LIRGenerator::generate_address() -           
- Resolved
 
-         
- 
                    JDK-8263873 AArch64: two potential bugs in C1 LIRGenerator::generate_address() -           
- Resolved
 
-         
- links to
- 
                     Commit
        openjdk/jdk13u-dev/a117b8b5 Commit
        openjdk/jdk13u-dev/a117b8b5
- 
                     Commit
        openjdk/jdk/f7e0a098 Commit
        openjdk/jdk/f7e0a098
- 
                     Review
        openjdk/jdk13u-dev/150 Review
        openjdk/jdk13u-dev/150
- 
                     Review
        openjdk/jdk/2961 Review
        openjdk/jdk/2961
             (2 links to)