Note: This website is archived. For up-to-date information about D projects and development, please visit wiki.dlang.org.

Changeset 622

Show
Ignore:
Timestamp:
08/21/10 23:51:30 (14 years ago)
Author:
walter
Message:

bugzilla 4691 Incorrect comparison of double and long

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • branches/dmd-1.x/src/backend/cg87.c

    r577 r622  
    18031803                else 
    18041804                    goto ret1; 
    18051805 
    18061806            case OPconst: 
    18071807                if (loadconst(e, 0) || tybasic(e->Ety) == TYldouble 
    18081808                                    || tybasic(e->Ety) == TYildouble) 
    18091809{ 
    18101810//printf("ret 1, loadconst(e) = %d\n", loadconst(e)); 
    18111811                    goto ret1; 
    18121812} 
    18131813                goto ret0; 
    18141814 
    18151815            case OPvar: 
    18161816            case OPind: 
    18171817                if (tybasic(e->Ety) == TYldouble || 
    18181818                    tybasic(e->Ety) == TYildouble) 
    18191819                    goto ret1; 
    18201820            case OPu16_d: 
    18211821            case OPs16_d: 
    18221822            case OPs32_d: 
     1823                goto ret0; 
     1824 
    18231825            case OPs64_d: 
    1824                 goto ret0
     1826                goto ret1
    18251827 
    18261828            default: 
    18271829                goto ret1; 
    18281830        } 
    18291831 
    18301832ret1:   return 1; 
    18311833ret0:   return 0; 
    18321834} 
    18331835 
    18341836/******************************* 
    18351837 * Perform an assignment to a long double/double/float. 
    18361838 */ 
    18371839 
    18381840code *eq87(elem *e,regm_t *pretregs) 
    18391841{ 
    18401842        regm_t retregs; 
    18411843        code *c1,*c2; 
    18421844        code cs; 
    18431845        unsigned op1; 
    18441846        unsigned op2; 
  • trunk/src/backend/cg87.c

    r577 r622  
    18031803                else 
    18041804                    goto ret1; 
    18051805 
    18061806            case OPconst: 
    18071807                if (loadconst(e, 0) || tybasic(e->Ety) == TYldouble 
    18081808                                    || tybasic(e->Ety) == TYildouble) 
    18091809{ 
    18101810//printf("ret 1, loadconst(e) = %d\n", loadconst(e)); 
    18111811                    goto ret1; 
    18121812} 
    18131813                goto ret0; 
    18141814 
    18151815            case OPvar: 
    18161816            case OPind: 
    18171817                if (tybasic(e->Ety) == TYldouble || 
    18181818                    tybasic(e->Ety) == TYildouble) 
    18191819                    goto ret1; 
    18201820            case OPu16_d: 
    18211821            case OPs16_d: 
    18221822            case OPs32_d: 
     1823                goto ret0; 
     1824 
    18231825            case OPs64_d: 
    1824                 goto ret0
     1826                goto ret1
    18251827 
    18261828            default: 
    18271829                goto ret1; 
    18281830        } 
    18291831 
    18301832ret1:   return 1; 
    18311833ret0:   return 0; 
    18321834} 
    18331835 
    18341836/******************************* 
    18351837 * Perform an assignment to a long double/double/float. 
    18361838 */ 
    18371839 
    18381840code *eq87(elem *e,regm_t *pretregs) 
    18391841{ 
    18401842        regm_t retregs; 
    18411843        code *c1,*c2; 
    18421844        code cs; 
    18431845        unsigned op1; 
    18441846        unsigned op2;