Hi,

   Could a gatekeeper please help review the fix for bug912?
http://bugs.open64.net/show_bug.cgi?id=912

The cut down bug case:

struct go7007 {
  int sensor_framerate;
  int fps_scale;
};
int vti_bitlen(struct go7007 *go)
{
 unsigned int i, max_time_incr = go->sensor_framerate / go->fps_scale;
 for (i = 31; (max_time_incr & ((1 << i) - 1)) == max_time_incr; --i);
 return i + 1;
}
### Assertion failure at line 2109 of
/fc/proj/ctires/open64/o64guru/src/Sat/trunk/osprey/be/cg/cgemit.cxx:
### Compiler Error in file bug912-cutdown.c during Assembly phase:
### literal for operand 1 is not in range
Analysis:
WHIRL dump snippet after WOPT:
 ......
 U4STID 50 <1,8,.preg_U4> T<8,.predef_U4,4> # max_time_incr {line: 1/8}
   U4U4LDID 50 <1,8,.preg_U4> T<8,.predef_U4,4> # max_time_incr
    U4U4LDID 50 <1,8,.preg_U4> T<8,.predef_U4,4> # max_time_incr
    I8INTCONST -2147483649 (0xffffffff7fffffff)
   U4BAND
  I4U4EQ
 FALSEBR L2562 {line: 0/0}

This is already wrong, U4BAND should not accept I8INTCONST kids.

((1 << 31) - 1) in such context should be codemapped to U4INTCONST
2147483647 (0x7fffffff)

Suggested patch:

--- a/osprey/be/opt/opt_htable.cxx
+++ b/osprey/be/opt/opt_htable.cxx
@@ -3679,7 +3679,10 @@ CODEMAP::Add_expr(WN *wn, OPT_STAB *opt_stab,
STMTREP *stmt, CANON_CR *ccr,
        if ((MTYPE_type_class(OPCODE_rtype(op)) & MTYPE_CLASS_INTEGER) != 0
 #ifdef TARG_X8664 // bug 7733
            && ! MTYPE_is_vector(OPCODE_rtype(op))
-           && ! MTYPE_is_vector(OPCODE_desc(op))
+           && ! MTYPE_is_vector(OPCODE_desc(op))
+            // bug912 open64.net. do not Canonicalize U4I4CVT
+            && ! (OPCODE_rtype(op) == MTYPE_U4 &&
+                  OPCODE_desc(op) == MTYPE_I4)
 #endif
           )
          return Canon_cvt(wn, opt_stab, stmt, ccr, cr, copyprop);
Could a gatekeeper please help review ? Thanks

Regards
Gang
------------------------------------------------------------------------------
All the data continuously generated in your IT infrastructure 
contains a definitive record of customers, application performance, 
security threats, fraudulent activity, and more. Splunk takes this 
data and makes sense of it. IT sense. And common sense.
http://p.sf.net/sfu/splunk-novd2d
_______________________________________________
Open64-devel mailing list
Open64-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/open64-devel

Reply via email to