-
Bug
-
Resolution: Fixed
-
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/jdk/f7e0a098
-
Review openjdk/jdk13u-dev/150
-
Review openjdk/jdk/2961
(2 links to)