Home | History | Annotate | Download | only in webkit
      1 // Copyright 2013 the V8 project authors. All rights reserved.
      2 // Copyright (C) 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
      3 //
      4 // Redistribution and use in source and binary forms, with or without
      5 // modification, are permitted provided that the following conditions
      6 // are met:
      7 // 1.  Redistributions of source code must retain the above copyright
      8 //     notice, this list of conditions and the following disclaimer.
      9 // 2.  Redistributions in binary form must reproduce the above copyright
     10 //     notice, this list of conditions and the following disclaimer in the
     11 //     documentation and/or other materials provided with the distribution.
     12 //
     13 // THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND ANY
     14 // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
     15 // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
     16 // DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY
     17 // DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
     18 // (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
     19 // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
     20 // ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
     21 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
     22 // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     23 
     24 description(
     25 "Tests loop codegen when the condition is a logical node."
     26 );
     27 
     28 function while_or_eq()
     29 {
     30     var a = 0;
     31     while (a == 0 || a == 0)
     32         return true;
     33     return false;
     34 }
     35 
     36 shouldBeTrue("while_or_eq()");
     37 
     38 function while_or_neq()
     39 {
     40     var a = 0;
     41     while (a != 1 || a != 1)
     42         return true;
     43     return false;
     44 }
     45 
     46 shouldBeTrue("while_or_neq()");
     47 
     48 function while_or_less()
     49 {
     50     var a = 0;
     51     while (a < 1 || a < 1)
     52         return true;
     53     return false;
     54 }
     55 
     56 shouldBeTrue("while_or_less()");
     57 
     58 function while_or_lesseq()
     59 {
     60     var a = 0;
     61     while (a <= 1 || a <= 1)
     62         return true;
     63     return false;
     64 }
     65 
     66 shouldBeTrue("while_or_lesseq()");
     67 
     68 function while_and_eq()
     69 {
     70     var a = 0;
     71     while (a == 0 && a == 0)
     72         return true;
     73     return false;
     74 }
     75 
     76 shouldBeTrue("while_and_eq()");
     77 
     78 function while_and_neq()
     79 {
     80     var a = 0;
     81     while (a != 1 && a != 1)
     82         return true;
     83     return false;
     84 }
     85 
     86 shouldBeTrue("while_and_neq()");
     87 
     88 function while_and_less()
     89 {
     90     var a = 0;
     91     while (a < 1 && a < 1)
     92         return true;
     93     return false;
     94 }
     95 
     96 shouldBeTrue("while_and_less()");
     97 
     98 function while_and_lesseq()
     99 {
    100     var a = 0;
    101     while (a <= 1 && a <= 1)
    102         return true;
    103     return false;
    104 }
    105 
    106 shouldBeTrue("while_and_lesseq()");
    107 
    108 function for_or_eq()
    109 {
    110     for (var a = 0; a == 0 || a == 0; )
    111         return true;
    112     return false;
    113 }
    114 
    115 shouldBeTrue("for_or_eq()");
    116 
    117 function for_or_neq()
    118 {
    119     for (var a = 0; a != 1 || a != 1; )
    120         return true;
    121     return false;
    122 }
    123 
    124 shouldBeTrue("for_or_neq()");
    125 
    126 function for_or_less()
    127 {
    128     for (var a = 0; a < 1 || a < 1; )
    129         return true;
    130     return false;
    131 }
    132 
    133 shouldBeTrue("for_or_less()");
    134 
    135 function for_or_lesseq()
    136 {
    137     for (var a = 0; a <= 1 || a <= 1; )
    138         return true;
    139     return false;
    140 }
    141 
    142 shouldBeTrue("for_or_lesseq()");
    143 
    144 function for_and_eq()
    145 {
    146     for (var a = 0; a == 0 && a == 0; )
    147         return true;
    148     return false;
    149 }
    150 
    151 shouldBeTrue("for_and_eq()");
    152 
    153 function for_and_neq()
    154 {
    155     for (var a = 0; a != 1 && a != 1; )
    156         return true;
    157     return false;
    158 }
    159 
    160 shouldBeTrue("for_and_neq()");
    161 
    162 function for_and_less()
    163 {
    164     for (var a = 0; a < 1 && a < 1; )
    165         return true;
    166     return false;
    167 }
    168 
    169 shouldBeTrue("for_and_less()");
    170 
    171 function for_and_lesseq()
    172 {
    173     for (var a = 0; a <= 1 && a <= 1; )
    174         return true;
    175     return false;
    176 }
    177 
    178 shouldBeTrue("for_and_lesseq()");
    179 
    180 function dowhile_or_eq()
    181 {
    182     var a = 0;
    183     var i = 0;
    184     do {
    185         if (i > 0)
    186             return true;
    187         i++;
    188     } while (a == 0 || a == 0)
    189     return false;
    190 }
    191 
    192 shouldBeTrue("dowhile_or_eq()");
    193 
    194 function dowhile_or_neq()
    195 {
    196     var a = 0;
    197     var i = 0;
    198     do {
    199         if (i > 0)
    200             return true;
    201         i++;
    202     } while (a != 1 || a != 1)
    203     return false;
    204 }
    205 
    206 shouldBeTrue("dowhile_or_neq()");
    207 
    208 function dowhile_or_less()
    209 {
    210     var a = 0;
    211     var i = 0;
    212     do {
    213         if (i > 0)
    214             return true;
    215         i++;
    216     } while (a < 1 || a < 1)
    217     return false;
    218 }
    219 
    220 shouldBeTrue("dowhile_or_less()");
    221 
    222 function dowhile_or_lesseq()
    223 {
    224     var a = 0;
    225     var i = 0;
    226     do {
    227         if (i > 0)
    228             return true;
    229         i++;
    230     } while (a <= 1 || a <= 1)
    231     return false;
    232 }
    233 
    234 shouldBeTrue("dowhile_or_lesseq()");
    235 
    236 function dowhile_and_eq()
    237 {
    238     var a = 0;
    239     var i = 0;
    240     do {
    241         if (i > 0)
    242             return true;
    243         i++;
    244     } while (a == 0 && a == 0)
    245     return false;
    246 }
    247 
    248 shouldBeTrue("dowhile_and_eq()");
    249 
    250 function dowhile_and_neq()
    251 {
    252     var a = 0;
    253     var i = 0;
    254     do {
    255         if (i > 0)
    256             return true;
    257         i++;
    258     } while (a != 1 && a != 1)
    259     return false;
    260 }
    261 
    262 shouldBeTrue("dowhile_and_neq()");
    263 
    264 function dowhile_and_less()
    265 {
    266     var a = 0;
    267     var i = 0;
    268     do {
    269         if (i > 0)
    270             return true;
    271         i++;
    272     } while (a < 1 && a < 1)
    273     return false;
    274 }
    275 
    276 shouldBeTrue("dowhile_and_less()");
    277 
    278 function dowhile_and_lesseq()
    279 {
    280     var a = 0;
    281     var i = 0;
    282     do {
    283         if (i > 0)
    284             return true;
    285         i++;
    286     } while (a <= 1 && a <= 1)
    287     return false;
    288 }
    289 
    290 shouldBeTrue("dowhile_and_lesseq()");
    291 
    292 function while_not_or_eq()
    293 {
    294     var a = 0;
    295     while (!(a == 0 || a == 0))
    296         return true;
    297     return false;
    298 }
    299 
    300 shouldBeFalse("while_not_or_eq()");
    301 
    302 function while_not_or_neq()
    303 {
    304     var a = 0;
    305     while (!(a != 1 || a != 1))
    306         return true;
    307     return false;
    308 }
    309 
    310 shouldBeFalse("while_not_or_neq()");
    311 
    312 function while_not_or_less()
    313 {
    314     var a = 0;
    315     while (!(a < 1 || a < 1))
    316         return true;
    317     return false;
    318 }
    319 
    320 shouldBeFalse("while_not_or_less()");
    321 
    322 function while_not_or_lesseq()
    323 {
    324     var a = 0;
    325     while (!(a <= 1 || a <= 1))
    326         return true;
    327     return false;
    328 }
    329 
    330 shouldBeFalse("while_not_or_lesseq()");
    331 
    332 function while_not_and_eq()
    333 {
    334     var a = 0;
    335     while (!(a == 0 && a == 0))
    336         return true;
    337     return false;
    338 }
    339 
    340 shouldBeFalse("while_not_and_eq()");
    341 
    342 function while_not_and_neq()
    343 {
    344     var a = 0;
    345     while (!(a != 1 && a != 1))
    346         return true;
    347     return false;
    348 }
    349 
    350 shouldBeFalse("while_not_and_neq()");
    351 
    352 function while_not_and_less()
    353 {
    354     var a = 0;
    355     while (!(a < 1 && a < 1))
    356         return true;
    357     return false;
    358 }
    359 
    360 shouldBeFalse("while_not_and_less()");
    361 
    362 function while_not_and_lesseq()
    363 {
    364     var a = 0;
    365     while (!(a <= 1 && a <= 1))
    366         return true;
    367     return false;
    368 }
    369 
    370 shouldBeFalse("while_not_and_lesseq()");
    371 
    372 function for_not_or_eq()
    373 {
    374     for (var a = 0; !(a == 0 || a == 0); )
    375         return true;
    376     return false;
    377 }
    378 
    379 shouldBeFalse("for_not_or_eq()");
    380 
    381 function for_not_or_neq()
    382 {
    383     for (var a = 0; !(a != 1 || a != 1); )
    384         return true;
    385     return false;
    386 }
    387 
    388 shouldBeFalse("for_not_or_neq()");
    389 
    390 function for_not_or_less()
    391 {
    392     for (var a = 0; !(a < 1 || a < 1); )
    393         return true;
    394     return false;
    395 }
    396 
    397 shouldBeFalse("for_not_or_less()");
    398 
    399 function for_not_or_lesseq()
    400 {
    401     for (var a = 0; !(a <= 1 || a <= 1); )
    402         return true;
    403     return false;
    404 }
    405 
    406 shouldBeFalse("for_not_or_lesseq()");
    407 
    408 function for_not_and_eq()
    409 {
    410     for (var a = 0; !(a == 0 && a == 0); )
    411         return true;
    412     return false;
    413 }
    414 
    415 shouldBeFalse("for_not_and_eq()");
    416 
    417 function for_not_and_neq()
    418 {
    419     for (var a = 0; !(a != 1 && a != 1); )
    420         return true;
    421     return false;
    422 }
    423 
    424 shouldBeFalse("for_not_and_neq()");
    425 
    426 function for_not_and_less()
    427 {
    428     for (var a = 0; !(a < 1 && a < 1); )
    429         return true;
    430     return false;
    431 }
    432 
    433 shouldBeFalse("for_not_and_less()");
    434 
    435 function for_not_and_lesseq()
    436 {
    437     for (var a = 0; !(a <= 1 && a <= 1); )
    438         return true;
    439     return false;
    440 }
    441 
    442 shouldBeFalse("for_not_and_lesseq()");
    443 
    444 function dowhile_not_or_eq()
    445 {
    446     var a = 0;
    447     var i = 0;
    448     do {
    449         if (i > 0)
    450             return true;
    451         i++;
    452     } while (!(a == 0 || a == 0))
    453     return false;
    454 }
    455 
    456 shouldBeFalse("dowhile_not_or_eq()");
    457 
    458 function dowhile_not_or_neq()
    459 {
    460     var a = 0;
    461     var i = 0;
    462     do {
    463         if (i > 0)
    464             return true;
    465         i++;
    466     } while (!(a != 1 || a != 1))
    467     return false;
    468 }
    469 
    470 shouldBeFalse("dowhile_not_or_neq()");
    471 
    472 function dowhile_not_or_less()
    473 {
    474     var a = 0;
    475     var i = 0;
    476     do {
    477         if (i > 0)
    478             return true;
    479         i++;
    480     } while (!(a < 1 || a < 1))
    481     return false;
    482 }
    483 
    484 shouldBeFalse("dowhile_not_or_less()");
    485 
    486 function dowhile_not_or_lesseq()
    487 {
    488     var a = 0;
    489     var i = 0;
    490     do {
    491         if (i > 0)
    492             return true;
    493         i++;
    494     } while (!(a <= 1 || a <= 1))
    495     return false;
    496 }
    497 
    498 shouldBeFalse("dowhile_not_or_lesseq()");
    499 
    500 function dowhile_not_and_eq()
    501 {
    502     var a = 0;
    503     var i = 0;
    504     do {
    505         if (i > 0)
    506             return true;
    507         i++;
    508     } while (!(a == 0 && a == 0))
    509     return false;
    510 }
    511 
    512 shouldBeFalse("dowhile_not_and_eq()");
    513 
    514 function dowhile_not_and_neq()
    515 {
    516     var a = 0;
    517     var i = 0;
    518     do {
    519         if (i > 0)
    520             return true;
    521         i++;
    522     } while (!(a != 1 && a != 1))
    523     return false;
    524 }
    525 
    526 shouldBeFalse("dowhile_not_and_neq()");
    527 
    528 function dowhile_not_and_less()
    529 {
    530     var a = 0;
    531     var i = 0;
    532     do {
    533         if (i > 0)
    534             return true;
    535         i++;
    536     } while (!(a < 1 && a < 1))
    537     return false;
    538 }
    539 
    540 shouldBeFalse("dowhile_not_and_less()");
    541 
    542 function dowhile_not_and_lesseq()
    543 {
    544     var a = 0;
    545     var i = 0;
    546     do {
    547         if (i > 0)
    548             return true;
    549         i++;
    550     } while (!(a <= 1 && a <= 1))
    551     return false;
    552 }
    553 
    554 shouldBeFalse("dowhile_not_and_lesseq()");
    555 
    556 function float_while_or_eq()
    557 {
    558     var a = 0.1;
    559     while (a == 0.1 || a == 0.1)
    560         return true;
    561     return false;
    562 }
    563 
    564 shouldBeTrue("float_while_or_eq()");
    565 
    566 function float_while_or_neq()
    567 {
    568     var a = 0.1;
    569     while (a != 1.1 || a != 1.1)
    570         return true;
    571     return false;
    572 }
    573 
    574 shouldBeTrue("float_while_or_neq()");
    575 
    576 function float_while_or_less()
    577 {
    578     var a = 0.1;
    579     while (a < 1.1 || a < 1.1)
    580         return true;
    581     return false;
    582 }
    583 
    584 shouldBeTrue("float_while_or_less()");
    585 
    586 function float_while_or_lesseq()
    587 {
    588     var a = 0.1;
    589     while (a <= 1.1 || a <= 1.1)
    590         return true;
    591     return false;
    592 }
    593 
    594 shouldBeTrue("float_while_or_lesseq()");
    595 
    596 function float_while_and_eq()
    597 {
    598     var a = 0.1;
    599     while (a == 0.1 && a == 0.1)
    600         return true;
    601     return false;
    602 }
    603 
    604 shouldBeTrue("float_while_and_eq()");
    605 
    606 function float_while_and_neq()
    607 {
    608     var a = 0.1;
    609     while (a != 1.1 && a != 1.1)
    610         return true;
    611     return false;
    612 }
    613 
    614 shouldBeTrue("float_while_and_neq()");
    615 
    616 function float_while_and_less()
    617 {
    618     var a = 0.1;
    619     while (a < 1.1 && a < 1.1)
    620         return true;
    621     return false;
    622 }
    623 
    624 shouldBeTrue("float_while_and_less()");
    625 
    626 function float_while_and_lesseq()
    627 {
    628     var a = 0.1;
    629     while (a <= 1.1 && a <= 1.1)
    630         return true;
    631     return false;
    632 }
    633 
    634 shouldBeTrue("float_while_and_lesseq()");
    635 
    636 function float_for_or_eq()
    637 {
    638     for (var a = 0.1; a == 0.1 || a == 0.1; )
    639         return true;
    640     return false;
    641 }
    642 
    643 shouldBeTrue("float_for_or_eq()");
    644 
    645 function float_for_or_neq()
    646 {
    647     for (var a = 0.1; a != 1.1 || a != 1.1; )
    648         return true;
    649     return false;
    650 }
    651 
    652 shouldBeTrue("float_for_or_neq()");
    653 
    654 function float_for_or_less()
    655 {
    656     for (var a = 0.1; a < 1.1 || a < 1.1; )
    657         return true;
    658     return false;
    659 }
    660 
    661 shouldBeTrue("float_for_or_less()");
    662 
    663 function float_for_or_lesseq()
    664 {
    665     for (var a = 0.1; a <= 1.1 || a <= 1.1; )
    666         return true;
    667     return false;
    668 }
    669 
    670 shouldBeTrue("float_for_or_lesseq()");
    671 
    672 function float_for_and_eq()
    673 {
    674     for (var a = 0.1; a == 0.1 && a == 0.1; )
    675         return true;
    676     return false;
    677 }
    678 
    679 shouldBeTrue("float_for_and_eq()");
    680 
    681 function float_for_and_neq()
    682 {
    683     for (var a = 0.1; a != 1.1 && a != 1.1; )
    684         return true;
    685     return false;
    686 }
    687 
    688 shouldBeTrue("float_for_and_neq()");
    689 
    690 function float_for_and_less()
    691 {
    692     for (var a = 0.1; a < 1.1 && a < 1.1; )
    693         return true;
    694     return false;
    695 }
    696 
    697 shouldBeTrue("float_for_and_less()");
    698 
    699 function float_for_and_lesseq()
    700 {
    701     for (var a = 0.1; a <= 1.1 && a <= 1.1; )
    702         return true;
    703     return false;
    704 }
    705 
    706 shouldBeTrue("float_for_and_lesseq()");
    707 
    708 function float_dowhile_or_eq()
    709 {
    710     var a = 0.1;
    711     var i = 0.1;
    712     do {
    713         if (i > 0.1)
    714             return true;
    715         i++;
    716     } while (a == 0.1 || a == 0.1)
    717     return false;
    718 }
    719 
    720 shouldBeTrue("float_dowhile_or_eq()");
    721 
    722 function float_dowhile_or_neq()
    723 {
    724     var a = 0.1;
    725     var i = 0.1;
    726     do {
    727         if (i > 0.1)
    728             return true;
    729         i++;
    730     } while (a != 1.1 || a != 1.1)
    731     return false;
    732 }
    733 
    734 shouldBeTrue("float_dowhile_or_neq()");
    735 
    736 function float_dowhile_or_less()
    737 {
    738     var a = 0.1;
    739     var i = 0.1;
    740     do {
    741         if (i > 0.1)
    742             return true;
    743         i++;
    744     } while (a < 1.1 || a < 1.1)
    745     return false;
    746 }
    747 
    748 shouldBeTrue("float_dowhile_or_less()");
    749 
    750 function float_dowhile_or_lesseq()
    751 {
    752     var a = 0.1;
    753     var i = 0.1;
    754     do {
    755         if (i > 0.1)
    756             return true;
    757         i++;
    758     } while (a <= 1.1 || a <= 1.1)
    759     return false;
    760 }
    761 
    762 shouldBeTrue("float_dowhile_or_lesseq()");
    763 
    764 function float_dowhile_and_eq()
    765 {
    766     var a = 0.1;
    767     var i = 0.1;
    768     do {
    769         if (i > 0.1)
    770             return true;
    771         i++;
    772     } while (a == 0.1 && a == 0.1)
    773     return false;
    774 }
    775 
    776 shouldBeTrue("float_dowhile_and_eq()");
    777 
    778 function float_dowhile_and_neq()
    779 {
    780     var a = 0.1;
    781     var i = 0.1;
    782     do {
    783         if (i > 0.1)
    784             return true;
    785         i++;
    786     } while (a != 1.1 && a != 1.1)
    787     return false;
    788 }
    789 
    790 shouldBeTrue("float_dowhile_and_neq()");
    791 
    792 function float_dowhile_and_less()
    793 {
    794     var a = 0.1;
    795     var i = 0.1;
    796     do {
    797         if (i > 0.1)
    798             return true;
    799         i++;
    800     } while (a < 1.1 && a < 1.1)
    801     return false;
    802 }
    803 
    804 shouldBeTrue("float_dowhile_and_less()");
    805 
    806 function float_dowhile_and_lesseq()
    807 {
    808     var a = 0.1;
    809     var i = 0.1;
    810     do {
    811         if (i > 0.1)
    812             return true;
    813         i++;
    814     } while (a <= 1.1 && a <= 1.1)
    815     return false;
    816 }
    817 
    818 shouldBeTrue("float_dowhile_and_lesseq()");
    819 
    820 function float_while_not_or_eq()
    821 {
    822     var a = 0.1;
    823     while (!(a == 0.1 || a == 0.1))
    824         return true;
    825     return false;
    826 }
    827 
    828 shouldBeFalse("float_while_not_or_eq()");
    829 
    830 function float_while_not_or_neq()
    831 {
    832     var a = 0.1;
    833     while (!(a != 1.1 || a != 1.1))
    834         return true;
    835     return false;
    836 }
    837 
    838 shouldBeFalse("float_while_not_or_neq()");
    839 
    840 function float_while_not_or_less()
    841 {
    842     var a = 0.1;
    843     while (!(a < 1.1 || a < 1.1))
    844         return true;
    845     return false;
    846 }
    847 
    848 shouldBeFalse("float_while_not_or_less()");
    849 
    850 function float_while_not_or_lesseq()
    851 {
    852     var a = 0.1;
    853     while (!(a <= 1.1 || a <= 1.1))
    854         return true;
    855     return false;
    856 }
    857 
    858 shouldBeFalse("float_while_not_or_lesseq()");
    859 
    860 function float_while_not_and_eq()
    861 {
    862     var a = 0.1;
    863     while (!(a == 0.1 && a == 0.1))
    864         return true;
    865     return false;
    866 }
    867 
    868 shouldBeFalse("float_while_not_and_eq()");
    869 
    870 function float_while_not_and_neq()
    871 {
    872     var a = 0.1;
    873     while (!(a != 1.1 && a != 1.1))
    874         return true;
    875     return false;
    876 }
    877 
    878 shouldBeFalse("float_while_not_and_neq()");
    879 
    880 function float_while_not_and_less()
    881 {
    882     var a = 0.1;
    883     while (!(a < 1.1 && a < 1.1))
    884         return true;
    885     return false;
    886 }
    887 
    888 shouldBeFalse("float_while_not_and_less()");
    889 
    890 function float_while_not_and_lesseq()
    891 {
    892     var a = 0.1;
    893     while (!(a <= 1.1 && a <= 1.1))
    894         return true;
    895     return false;
    896 }
    897 
    898 shouldBeFalse("float_while_not_and_lesseq()");
    899 
    900 function float_for_not_or_eq()
    901 {
    902     for (var a = 0.1; !(a == 0.1 || a == 0.1); )
    903         return true;
    904     return false;
    905 }
    906 
    907 shouldBeFalse("float_for_not_or_eq()");
    908 
    909 function float_for_not_or_neq()
    910 {
    911     for (var a = 0.1; !(a != 1.1 || a != 1.1); )
    912         return true;
    913     return false;
    914 }
    915 
    916 shouldBeFalse("float_for_not_or_neq()");
    917 
    918 function float_for_not_or_less()
    919 {
    920     for (var a = 0.1; !(a < 1.1 || a < 1.1); )
    921         return true;
    922     return false;
    923 }
    924 
    925 shouldBeFalse("float_for_not_or_less()");
    926 
    927 function float_for_not_or_lesseq()
    928 {
    929     for (var a = 0.1; !(a <= 1.1 || a <= 1.1); )
    930         return true;
    931     return false;
    932 }
    933 
    934 shouldBeFalse("float_for_not_or_lesseq()");
    935 
    936 function float_for_not_and_eq()
    937 {
    938     for (var a = 0.1; !(a == 0.1 && a == 0.1); )
    939         return true;
    940     return false;
    941 }
    942 
    943 shouldBeFalse("float_for_not_and_eq()");
    944 
    945 function float_for_not_and_neq()
    946 {
    947     for (var a = 0.1; !(a != 1.1 && a != 1.1); )
    948         return true;
    949     return false;
    950 }
    951 
    952 shouldBeFalse("float_for_not_and_neq()");
    953 
    954 function float_for_not_and_less()
    955 {
    956     for (var a = 0.1; !(a < 1.1 && a < 1.1); )
    957         return true;
    958     return false;
    959 }
    960 
    961 shouldBeFalse("float_for_not_and_less()");
    962 
    963 function float_for_not_and_lesseq()
    964 {
    965     for (var a = 0.1; !(a <= 1.1 && a <= 1.1); )
    966         return true;
    967     return false;
    968 }
    969 
    970 shouldBeFalse("float_for_not_and_lesseq()");
    971 
    972 function float_dowhile_not_or_eq()
    973 {
    974     var a = 0.1;
    975     var i = 0.1;
    976     do {
    977         if (i > 0.1)
    978             return true;
    979         i++;
    980     } while (!(a == 0.1 || a == 0.1))
    981     return false;
    982 }
    983 
    984 shouldBeFalse("float_dowhile_not_or_eq()");
    985 
    986 function float_dowhile_not_or_neq()
    987 {
    988     var a = 0.1;
    989     var i = 0.1;
    990     do {
    991         if (i > 0.1)
    992             return true;
    993         i++;
    994     } while (!(a != 1.1 || a != 1.1))
    995     return false;
    996 }
    997 
    998 shouldBeFalse("float_dowhile_not_or_neq()");
    999 
   1000 function float_dowhile_not_or_less()
   1001 {
   1002     var a = 0.1;
   1003     var i = 0.1;
   1004     do {
   1005         if (i > 0.1)
   1006             return true;
   1007         i++;
   1008     } while (!(a < 1.1 || a < 1.1))
   1009     return false;
   1010 }
   1011 
   1012 shouldBeFalse("float_dowhile_not_or_less()");
   1013 
   1014 function float_dowhile_not_or_lesseq()
   1015 {
   1016     var a = 0.1;
   1017     var i = 0.1;
   1018     do {
   1019         if (i > 0.1)
   1020             return true;
   1021         i++;
   1022     } while (!(a <= 1.1 || a <= 1.1))
   1023     return false;
   1024 }
   1025 
   1026 shouldBeFalse("float_dowhile_not_or_lesseq()");
   1027 
   1028 function float_dowhile_not_and_eq()
   1029 {
   1030     var a = 0.1;
   1031     var i = 0.1;
   1032     do {
   1033         if (i > 0.1)
   1034             return true;
   1035         i++;
   1036     } while (!(a == 0.1 && a == 0.1))
   1037     return false;
   1038 }
   1039 
   1040 shouldBeFalse("float_dowhile_not_and_eq()");
   1041 
   1042 function float_dowhile_not_and_neq()
   1043 {
   1044     var a = 0.1;
   1045     var i = 0.1;
   1046     do {
   1047         if (i > 0.1)
   1048             return true;
   1049         i++;
   1050     } while (!(a != 1.1 && a != 1.1))
   1051     return false;
   1052 }
   1053 
   1054 shouldBeFalse("float_dowhile_not_and_neq()");
   1055 
   1056 function float_dowhile_not_and_less()
   1057 {
   1058     var a = 0.1;
   1059     var i = 0.1;
   1060     do {
   1061         if (i > 0.1)
   1062             return true;
   1063         i++;
   1064     } while (!(a < 1.1 && a < 1.1))
   1065     return false;
   1066 }
   1067 
   1068 shouldBeFalse("float_dowhile_not_and_less()");
   1069 
   1070 function float_dowhile_not_and_lesseq()
   1071 {
   1072     var a = 0.1;
   1073     var i = 0.1;
   1074     do {
   1075         if (i > 0.1)
   1076             return true;
   1077         i++;
   1078     } while (!(a <= 1.1 && a <= 1.1))
   1079     return false;
   1080 }
   1081