Relates :
|
3rd input of Math.fma() is processed as a temp not as an input: diff --git a/src/share/vm/c1/c1_LIR.cpp b/src/share/vm/c1/c1_LIR.cpp --- a/src/share/vm/c1/c1_LIR.cpp +++ b/src/share/vm/c1/c1_LIR.cpp @@ -677,9 +677,7 @@ // LIR_Op3 case lir_idiv: - case lir_irem: - case lir_fmad: - case lir_fmaf: { + case lir_irem: { assert(op->as_Op3() != NULL, "must be"); LIR_Op3* op3= (LIR_Op3*)op; @@ -697,6 +695,17 @@ break; } + case lir_fmad: + case lir_fmaf: { + assert(op->as_Op3() != NULL, "must be"); + LIR_Op3* op3= (LIR_Op3*)op; + assert(op3->_info == NULL, "no info"); + do_input(op3->_opr1); + do_input(op3->_opr2); + do_input(op3->_opr3); + do_output(op3->_result); + break; + } // LIR_OpJavaCall case lir_static_call: