Author: fengzhou
Date: 2011-03-07 12:16:16 -0500 (Mon, 07 Mar 2011)
New Revision: 3510
Modified:
trunk/osprey/be/opt/opt_bdce.cxx
Log:
Fix bug #544. Added a cvt operation for the operands if they are longer than
32-bit.
Code Reviewer: Fred Chow
Modified: trunk/osprey/be/opt/opt_bdce.cxx
===================================================================
--- trunk/osprey/be/opt/opt_bdce.cxx 2011-03-07 12:11:28 UTC (rev 3509)
+++ trunk/osprey/be/opt/opt_bdce.cxx 2011-03-07 17:16:16 UTC (rev 3510)
@@ -1452,6 +1452,7 @@
opr == OPR_ADD || opr == OPR_SUB || opr == OPR_MPY ||
opr == OPR_BAND || opr == OPR_BIOR || opr == OPR_BNOR ||
opr == OPR_BXOR || opr == OPR_LAND || opr == OPR_LIOR)) {
+ INT index;
// change the operation to 32-bit, which is good for 32-bit target
cr->Set_dtyp(Mtype_TransferSize(MTYPE_I4, cr->Dtyp()));
if (cr->Dsctyp() != MTYPE_V)
@@ -1459,6 +1460,18 @@
new_cr->Set_dtyp(Mtype_TransferSize(MTYPE_I4, new_cr->Dtyp()));
if (new_cr->Dsctyp() != MTYPE_V)
new_cr->Set_dsctyp(Mtype_TransferSize(MTYPE_I4, new_cr->Dsctyp()));
+
+ for (index = 0; index < new_cr->Kid_count(); index++) {
+ CODEREP *opnd = new_cr->Opnd(index);
+
+ if (new_cr->Dtyp() != opnd->Dtyp()) {
+ OPCODE opc = OPCODE_make_op(OPR_CVT, new_cr->Dtyp(),
opnd->Dtyp());
+ CODEREP *cvt_cr = Htable()->Add_unary_node(opc, opnd);
+
+ new_cr->Set_opnd(index, cvt_cr);
+ need_rehash = TRUE;
+ }
+ }
}
#endif
// can also apply to some BAND and BIOR with constants
------------------------------------------------------------------------------
What You Don't Know About Data Connectivity CAN Hurt You
This paper provides an overview of data connectivity, details
its effect on application quality, and explores various alternative
solutions. http://p.sf.net/sfu/progress-d2d
_______________________________________________
Open64-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/open64-devel