1 // RUN: %clang_cc1 -analyze -analyzer-checker=core,alpha.core.IdenticalExpr -verify %s 2 3 /* Only one expected warning per function allowed at the very end. */ 4 5 /* '!=' operator*/ 6 7 /* '!=' with float */ 8 int checkNotEqualFloatLiteralCompare1(void) { 9 return (5.14F != 5.14F); // no warning 10 } 11 12 int checkNotEqualFloatLiteralCompare2(void) { 13 return (6.14F != 7.14F); // no warning 14 } 15 16 int checkNotEqualFloatDeclCompare1(void) { 17 float f = 7.1F; 18 float g = 7.1F; 19 return (f != g); // no warning 20 } 21 22 int checkNotEqualFloatDeclCompare12(void) { 23 float f = 7.1F; 24 return (f != f); // no warning 25 } 26 27 int checkNotEqualFloatDeclCompare3(void) { 28 float f = 7.1F; 29 return (f != 7.1F); // no warning 30 } 31 32 int checkNotEqualFloatDeclCompare4(void) { 33 float f = 7.1F; 34 return (7.1F != f); // no warning 35 } 36 37 int checkNotEqualFloatDeclCompare5(void) { 38 float f = 7.1F; 39 int t = 7; 40 return (t != f); // no warning 41 } 42 43 int checkNotEqualFloatDeclCompare6(void) { 44 float f = 7.1F; 45 int t = 7; 46 return (f != t); // no warning 47 } 48 49 50 51 int checkNotEqualCastFloatDeclCompare11(void) { 52 float f = 7.1F; 53 return ((int)f != (int)f); // expected-warning {{comparison of identical expressions always evaluates to false}} 54 } 55 int checkNotEqualCastFloatDeclCompare12(void) { 56 float f = 7.1F; 57 return ((char)f != (int)f); // no warning 58 } 59 int checkNotEqualBinaryOpFloatCompare1(void) { 60 int res; 61 float f= 3.14F; 62 res = (f + 3.14F != f + 3.14F); // no warning 63 return (0); 64 } 65 int checkNotEqualBinaryOpFloatCompare2(void) { 66 float f = 7.1F; 67 float g = 7.1F; 68 return (f + 3.14F != g + 3.14F); // no warning 69 } 70 int checkNotEqualBinaryOpFloatCompare3(void) { 71 int res; 72 float f= 3.14F; 73 res = ((int)f + 3.14F != (int)f + 3.14F); // no warning 74 return (0); 75 } 76 int checkNotEqualBinaryOpFloatCompare4(void) { 77 int res; 78 float f= 3.14F; 79 res = ((int)f + 3.14F != (char)f + 3.14F); // no warning 80 return (0); 81 } 82 83 int checkNotEqualNestedBinaryOpFloatCompare1(void) { 84 int res; 85 int t= 1; 86 int u= 2; 87 float f= 3.14F; 88 res = (((int)f + (3.14F - u)*t) != ((int)f + (3.14F - u)*t)); // no warning 89 return (0); 90 } 91 92 int checkNotEqualNestedBinaryOpFloatCompare2(void) { 93 int res; 94 int t= 1; 95 int u= 2; 96 float f= 3.14F; 97 res = (((int)f + (u - 3.14F)*t) != ((int)f + (3.14F - u)*t)); // no warning 98 return (0); 99 } 100 101 int checkNotEqualNestedBinaryOpFloatCompare3(void) { 102 int res; 103 int t= 1; 104 int u= 2; 105 float f= 3.14F; 106 res = (((int)f + (u - 3.14F)*t) != ((int)f + (3.14F - u)*(f + t != f + t))); // no warning 107 return (0); 108 } 109 110 111 112 113 /* end '!=' with float*/ 114 115 /* '!=' with int*/ 116 117 int checkNotEqualIntLiteralCompare1(void) { 118 return (5 != 5); // expected-warning {{comparison of identical expressions always evaluates to false}} 119 } 120 121 int checkNotEqualIntLiteralCompare2(void) { 122 return (6 != 7); // no warning 123 } 124 125 int checkNotEqualIntDeclCompare1(void) { 126 int f = 7; 127 int g = 7; 128 return (f != g); // no warning 129 } 130 131 int checkNotEqualIntDeclCompare3(void) { 132 int f = 7; 133 return (f != 7); // no warning 134 } 135 136 int checkNotEqualIntDeclCompare4(void) { 137 int f = 7; 138 return (7 != f); // no warning 139 } 140 141 int checkNotEqualCastIntDeclCompare11(void) { 142 int f = 7; 143 return ((int)f != (int)f); // expected-warning {{comparison of identical expressions always evaluates to false}} 144 } 145 int checkNotEqualCastIntDeclCompare12(void) { 146 int f = 7; 147 return ((char)f != (int)f); // no warning 148 } 149 int checkNotEqualBinaryOpIntCompare1(void) { 150 int res; 151 int t= 1; 152 int u= 2; 153 int f= 4; 154 res = (f + 4 != f + 4); // expected-warning {{comparison of identical expressions always evaluates to false}} 155 return (0); 156 } 157 int checkNotEqualBinaryOpIntCompare2(void) { 158 int f = 7; 159 int g = 7; 160 return (f + 4 != g + 4); // no warning 161 } 162 163 164 int checkNotEqualBinaryOpIntCompare3(void) { 165 int res; 166 int t= 1; 167 int u= 2; 168 int f= 4; 169 res = ((int)f + 4 != (int)f + 4); // expected-warning {{comparison of identical expressions always evaluates to false}} 170 return (0); 171 } 172 int checkNotEqualBinaryOpIntCompare4(void) { 173 int res; 174 int t= 1; 175 int u= 2; 176 int f= 4; 177 res = ((int)f + 4 != (char)f + 4); // no warning 178 return (0); 179 } 180 int checkNotEqualBinaryOpIntCompare5(void) { 181 int res; 182 int t= 1; 183 int u= 2; 184 res = (u + t != u + t); // expected-warning {{comparison of identical expressions always evaluates to false}} 185 return (0); 186 } 187 188 int checkNotEqualNestedBinaryOpIntCompare1(void) { 189 int res; 190 int t= 1; 191 int u= 2; 192 int f= 3; 193 res = (((int)f + (3 - u)*t) != ((int)f + (3 - u)*t)); // expected-warning {{comparison of identical expressions always evaluates to false}} 194 return (0); 195 } 196 197 int checkNotEqualNestedBinaryOpIntCompare2(void) { 198 int res; 199 int t= 1; 200 int u= 2; 201 int f= 3; 202 res = (((int)f + (u - 3)*t) != ((int)f + (3 - u)*t)); // no warning 203 return (0); 204 } 205 206 int checkNotEqualNestedBinaryOpIntCompare3(void) { 207 int res; 208 int t= 1; 209 int u= 2; 210 int f= 3; 211 res = (((int)f + (u - 3)*t) != ((int)f + (3 - u)*(t + 1 != t + 1))); // expected-warning {{comparison of identical expressions always evaluates to false}} 212 return (0); 213 } 214 215 /* end '!=' int */ 216 217 218 219 /* '!=' with int pointer */ 220 221 int checkNotEqualIntPointerLiteralCompare1(void) { 222 int* p = 0; 223 return (p != 0); // no warning 224 } 225 226 int checkNotEqualIntPointerLiteralCompare2(void) { 227 return (6 != 7); // no warning 228 } 229 230 int checkNotEqualIntPointerDeclCompare1(void) { 231 int k = 3; 232 int* f = &k; 233 int* g = &k; 234 return (f != g); // no warning 235 } 236 237 int checkNotEqualCastIntPointerDeclCompare11(void) { 238 int k = 7; 239 int* f = &k; 240 return ((int*)f != (int*)f); // expected-warning {{comparison of identical expressions always evaluates to false}} 241 } 242 int checkNotEqualCastIntPointerDeclCompare12(void) { 243 int k = 7; 244 int* f = &k; 245 return ((int*)((char*)f) != (int*)f); // no warning 246 } 247 int checkNotEqualBinaryOpIntPointerCompare1(void) { 248 int k = 7; 249 int res; 250 int* f= &k; 251 res = (f + 4 != f + 4); // expected-warning {{comparison of identical expressions always evaluates to false}} 252 return (0); 253 } 254 int checkNotEqualBinaryOpIntPointerCompare2(void) { 255 int k = 7; 256 int* f = &k; 257 int* g = &k; 258 return (f + 4 != g + 4); // no warning 259 } 260 261 262 int checkNotEqualBinaryOpIntPointerCompare3(void) { 263 int k = 7; 264 int res; 265 int* f= &k; 266 res = ((int*)f + 4 != (int*)f + 4); // expected-warning {{comparison of identical expressions always evaluates to false}} 267 return (0); 268 } 269 int checkNotEqualBinaryOpIntPointerCompare4(void) { 270 int k = 7; 271 int res; 272 int* f= &k; 273 res = ((int*)f + 4 != (int*)((char*)f) + 4); // no warning 274 return (0); 275 } 276 277 int checkNotEqualNestedBinaryOpIntPointerCompare1(void) { 278 int res; 279 int k = 7; 280 int t= 1; 281 int* u= &k+2; 282 int* f= &k+3; 283 res = ((f + (3)*t) != (f + (3)*t)); // expected-warning {{comparison of identical expressions always evaluates to false}} 284 return (0); 285 } 286 287 int checkNotEqualNestedBinaryOpIntPointerCompare2(void) { 288 int res; 289 int k = 7; 290 int t= 1; 291 int* u= &k+2; 292 int* f= &k+3; 293 res = (((3)*t + f) != (f + (3)*t)); // no warning 294 return (0); 295 } 296 /* end '!=' int* */ 297 298 /* end '!=' */ 299 300 301 302 /* EQ operator */ 303 304 int checkEqualIntPointerDeclCompare(void) { 305 int k = 3; 306 int* f = &k; 307 int* g = &k; 308 return (f == g); // no warning 309 } 310 311 int checkEqualIntPointerDeclCompare0(void) { 312 int k = 3; 313 int* f = &k; 314 return (f+1 == f+1); // expected-warning {{comparison of identical expressions always evaluates to true}} 315 } 316 317 /* EQ with float*/ 318 319 int checkEqualFloatLiteralCompare1(void) { 320 return (5.14F == 5.14F); // no warning 321 } 322 323 int checkEqualFloatLiteralCompare2(void) { 324 return (6.14F == 7.14F); // no warning 325 } 326 327 int checkEqualFloatDeclCompare1(void) { 328 float f = 7.1F; 329 float g = 7.1F; 330 return (f == g); // no warning 331 } 332 333 int checkEqualFloatDeclCompare12(void) { 334 float f = 7.1F; 335 return (f == f); // no warning 336 } 337 338 339 int checkEqualFloatDeclCompare3(void) { 340 float f = 7.1F; 341 return (f == 7.1F); // no warning 342 } 343 344 int checkEqualFloatDeclCompare4(void) { 345 float f = 7.1F; 346 return (7.1F == f); // no warning 347 } 348 349 int checkEqualFloatDeclCompare5(void) { 350 float f = 7.1F; 351 int t = 7; 352 return (t == f); // no warning 353 } 354 355 int checkEqualFloatDeclCompare6(void) { 356 float f = 7.1F; 357 int t = 7; 358 return (f == t); // no warning 359 } 360 361 362 363 364 int checkEqualCastFloatDeclCompare11(void) { 365 float f = 7.1F; 366 return ((int)f == (int)f); // expected-warning {{comparison of identical expressions always evaluates to true}} 367 } 368 int checkEqualCastFloatDeclCompare12(void) { 369 float f = 7.1F; 370 return ((char)f == (int)f); // no warning 371 } 372 int checkEqualBinaryOpFloatCompare1(void) { 373 int res; 374 float f= 3.14F; 375 res = (f + 3.14F == f + 3.14F); // no warning 376 return (0); 377 } 378 int checkEqualBinaryOpFloatCompare2(void) { 379 float f = 7.1F; 380 float g = 7.1F; 381 return (f + 3.14F == g + 3.14F); // no warning 382 } 383 int checkEqualBinaryOpFloatCompare3(void) { 384 int res; 385 float f= 3.14F; 386 res = ((int)f + 3.14F == (int)f + 3.14F); // no warning 387 return (0); 388 } 389 int checkEqualBinaryOpFloatCompare4(void) { 390 int res; 391 float f= 3.14F; 392 res = ((int)f + 3.14F == (char)f + 3.14F); // no warning 393 return (0); 394 } 395 396 int checkEqualNestedBinaryOpFloatCompare1(void) { 397 int res; 398 int t= 1; 399 int u= 2; 400 float f= 3.14F; 401 res = (((int)f + (3.14F - u)*t) == ((int)f + (3.14F - u)*t)); // no warning 402 return (0); 403 } 404 405 int checkEqualNestedBinaryOpFloatCompare2(void) { 406 int res; 407 int t= 1; 408 int u= 2; 409 float f= 3.14F; 410 res = (((int)f + (u - 3.14F)*t) == ((int)f + (3.14F - u)*t)); // no warning 411 return (0); 412 } 413 414 int checkEqualNestedBinaryOpFloatCompare3(void) { 415 int res; 416 int t= 1; 417 int u= 2; 418 float f= 3.14F; 419 res = (((int)f + (u - 3.14F)*t) == ((int)f + (3.14F - u)*(f + t == f + t))); // no warning 420 return (0); 421 } 422 423 424 425 426 427 /* Equal with int*/ 428 429 int checkEqualIntLiteralCompare1(void) { 430 return (5 == 5); // expected-warning {{comparison of identical expressions always evaluates to true}} 431 } 432 433 int checkEqualIntLiteralCompare2(void) { 434 return (6 == 7); // no warning 435 } 436 437 int checkEqualIntDeclCompare1(void) { 438 int f = 7; 439 int g = 7; 440 return (f == g); // no warning 441 } 442 443 int checkEqualCastIntDeclCompare11(void) { 444 int f = 7; 445 return ((int)f == (int)f); // expected-warning {{comparison of identical expressions always evaluates to true}} 446 } 447 int checkEqualCastIntDeclCompare12(void) { 448 int f = 7; 449 return ((char)f == (int)f); // no warning 450 } 451 452 int checkEqualIntDeclCompare3(void) { 453 int f = 7; 454 return (f == 7); // no warning 455 } 456 457 int checkEqualIntDeclCompare4(void) { 458 int f = 7; 459 return (7 == f); // no warning 460 } 461 462 int checkEqualBinaryOpIntCompare1(void) { 463 int res; 464 int t= 1; 465 int u= 2; 466 int f= 4; 467 res = (f + 4 == f + 4); // expected-warning {{comparison of identical expressions always evaluates to true}} 468 return (0); 469 } 470 int checkEqualBinaryOpIntCompare2(void) { 471 int f = 7; 472 int g = 7; 473 return (f + 4 == g + 4); // no warning 474 } 475 476 477 int checkEqualBinaryOpIntCompare3(void) { 478 int res; 479 int t= 1; 480 int u= 2; 481 int f= 4; 482 res = ((int)f + 4 == (int)f + 4); // expected-warning {{comparison of identical expressions always evaluates to true}} 483 return (0); 484 485 } 486 int checkEqualBinaryOpIntCompare4(void) { 487 int res; 488 int t= 1; 489 int u= 2; 490 int f= 4; 491 res = ((int)f + 4 == (char)f + 4); // no warning 492 return (0); 493 } 494 int checkEqualBinaryOpIntCompare5(void) { 495 int res; 496 int t= 1; 497 int u= 2; 498 res = (u + t == u + t); // expected-warning {{comparison of identical expressions always evaluates to true}} 499 return (0); 500 } 501 502 int checkEqualNestedBinaryOpIntCompare1(void) { 503 int res; 504 int t= 1; 505 int u= 2; 506 int f= 3; 507 res = (((int)f + (3 - u)*t) == ((int)f + (3 - u)*t)); // expected-warning {{comparison of identical expressions always evaluates to true}} 508 return (0); 509 } 510 511 int checkEqualNestedBinaryOpIntCompare2(void) { 512 int res; 513 int t= 1; 514 int u= 2; 515 int f= 3; 516 res = (((int)f + (u - 3)*t) == ((int)f + (3 - u)*t)); // no warning 517 return (0); 518 } 519 520 int checkEqualNestedBinaryOpIntCompare3(void) { 521 int res; 522 int t= 1; 523 int u= 2; 524 int f= 3; 525 res = (((int)f + (u - 3)*t) == ((int)f + (3 - u)*(t + 1 == t + 1))); // expected-warning {{comparison of identical expressions always evaluates to true}} 526 return (0); 527 } 528 529 530 /* end EQ int */ 531 532 /* end EQ */ 533 534 535 /* LT */ 536 537 /* LT with float */ 538 539 int checkLessThanFloatLiteralCompare1(void) { 540 return (5.14F < 5.14F); // expected-warning {{comparison of identical expressions always evaluates to false}} 541 } 542 543 int checkLessThanFloatLiteralCompare2(void) { 544 return (6.14F < 7.14F); // no warning 545 } 546 547 int checkLessThanFloatDeclCompare1(void) { 548 float f = 7.1F; 549 float g = 7.1F; 550 return (f < g); // no warning 551 } 552 553 int checkLessThanFloatDeclCompare12(void) { 554 float f = 7.1F; 555 return (f < f); // expected-warning {{comparison of identical expressions always evaluates to false}} 556 } 557 558 int checkLessThanFloatDeclCompare3(void) { 559 float f = 7.1F; 560 return (f < 7.1F); // no warning 561 } 562 563 int checkLessThanFloatDeclCompare4(void) { 564 float f = 7.1F; 565 return (7.1F < f); // no warning 566 } 567 568 int checkLessThanFloatDeclCompare5(void) { 569 float f = 7.1F; 570 int t = 7; 571 return (t < f); // no warning 572 } 573 574 int checkLessThanFloatDeclCompare6(void) { 575 float f = 7.1F; 576 int t = 7; 577 return (f < t); // no warning 578 } 579 580 581 int checkLessThanCastFloatDeclCompare11(void) { 582 float f = 7.1F; 583 return ((int)f < (int)f); // expected-warning {{comparison of identical expressions always evaluates to false}} 584 } 585 int checkLessThanCastFloatDeclCompare12(void) { 586 float f = 7.1F; 587 return ((char)f < (int)f); // no warning 588 } 589 int checkLessThanBinaryOpFloatCompare1(void) { 590 int res; 591 float f= 3.14F; 592 res = (f + 3.14F < f + 3.14F); // no warning 593 return (0); 594 } 595 int checkLessThanBinaryOpFloatCompare2(void) { 596 float f = 7.1F; 597 float g = 7.1F; 598 return (f + 3.14F < g + 3.14F); // no warning 599 } 600 int checkLessThanBinaryOpFloatCompare3(void) { 601 int res; 602 float f= 3.14F; 603 res = ((int)f + 3.14F < (int)f + 3.14F); // no warning 604 return (0); 605 } 606 int checkLessThanBinaryOpFloatCompare4(void) { 607 int res; 608 float f= 3.14F; 609 res = ((int)f + 3.14F < (char)f + 3.14F); // no warning 610 return (0); 611 } 612 613 int checkLessThanNestedBinaryOpFloatCompare1(void) { 614 int res; 615 int t= 1; 616 int u= 2; 617 float f= 3.14F; 618 res = (((int)f + (3.14F - u)*t) < ((int)f + (3.14F - u)*t)); // no warning 619 return (0); 620 } 621 622 int checkLessThanNestedBinaryOpFloatCompare2(void) { 623 int res; 624 int t= 1; 625 int u= 2; 626 float f= 3.14F; 627 res = (((int)f + (u - 3.14F)*t) < ((int)f + (3.14F - u)*t)); // no warning 628 return (0); 629 } 630 631 int checkLessThanNestedBinaryOpFloatCompare3(void) { 632 int res; 633 int t= 1; 634 int u= 2; 635 float f= 3.14F; 636 res = (((int)f + (u - 3.14F)*t) < ((int)f + (3.14F - u)*(f + t < f + t))); // no warning 637 return (0); 638 } 639 640 /* end LT with float */ 641 642 /* LT with int */ 643 644 645 int checkLessThanIntLiteralCompare1(void) { 646 return (5 < 5); // expected-warning {{comparison of identical expressions always evaluates to false}} 647 } 648 649 int checkLessThanIntLiteralCompare2(void) { 650 return (6 < 7); // no warning 651 } 652 653 int checkLessThanIntDeclCompare1(void) { 654 int f = 7; 655 int g = 7; 656 return (f < g); // no warning 657 } 658 659 int checkLessThanIntDeclCompare3(void) { 660 int f = 7; 661 return (f < 7); // no warning 662 } 663 664 int checkLessThanIntDeclCompare4(void) { 665 int f = 7; 666 return (7 < f); // no warning 667 } 668 669 int checkLessThanIntDeclCompare5(void) { 670 int f = 7; 671 int t = 7; 672 return (t < f); // no warning 673 } 674 675 int checkLessThanIntDeclCompare6(void) { 676 int f = 7; 677 int t = 7; 678 return (f < t); // no warning 679 } 680 681 int checkLessThanCastIntDeclCompare11(void) { 682 int f = 7; 683 return ((int)f < (int)f); // expected-warning {{comparison of identical expressions always evaluates to false}} 684 } 685 int checkLessThanCastIntDeclCompare12(void) { 686 int f = 7; 687 return ((char)f < (int)f); // no warning 688 } 689 int checkLessThanBinaryOpIntCompare1(void) { 690 int res; 691 int f= 3; 692 res = (f + 3 < f + 3); // expected-warning {{comparison of identical expressions always evaluates to false}} 693 return (0); 694 } 695 int checkLessThanBinaryOpIntCompare2(void) { 696 int f = 7; 697 int g = 7; 698 return (f + 3 < g + 3); // no warning 699 } 700 int checkLessThanBinaryOpIntCompare3(void) { 701 int res; 702 int f= 3; 703 res = ((int)f + 3 < (int)f + 3); // expected-warning {{comparison of identical expressions always evaluates to false}} 704 return (0); 705 } 706 int checkLessThanBinaryOpIntCompare4(void) { 707 int res; 708 int f= 3; 709 res = ((int)f + 3 < (char)f + 3); // no warning 710 return (0); 711 } 712 713 int checkLessThanNestedBinaryOpIntCompare1(void) { 714 int res; 715 int t= 1; 716 int u= 2; 717 int f= 3; 718 res = (((int)f + (3 - u)*t) < ((int)f + (3 - u)*t)); // expected-warning {{comparison of identical expressions always evaluates to false}} 719 return (0); 720 } 721 722 int checkLessThanNestedBinaryOpIntCompare2(void) { 723 int res; 724 int t= 1; 725 int u= 2; 726 int f= 3; 727 res = (((int)f + (u - 3)*t) < ((int)f + (3 - u)*t)); // no warning 728 return (0); 729 } 730 731 int checkLessThanNestedBinaryOpIntCompare3(void) { 732 int res; 733 int t= 1; 734 int u= 2; 735 int f= 3; 736 res = (((int)f + (u - 3)*t) < ((int)f + (3 - u)*(t + u < t + u))); // expected-warning {{comparison of identical expressions always evaluates to false}} 737 return (0); 738 } 739 740 /* end LT with int */ 741 742 /* end LT */ 743 744 745 /* GT */ 746 747 /* GT with float */ 748 749 int checkGreaterThanFloatLiteralCompare1(void) { 750 return (5.14F > 5.14F); // expected-warning {{comparison of identical expressions always evaluates to false}} 751 } 752 753 int checkGreaterThanFloatLiteralCompare2(void) { 754 return (6.14F > 7.14F); // no warning 755 } 756 757 int checkGreaterThanFloatDeclCompare1(void) { 758 float f = 7.1F; 759 float g = 7.1F; 760 761 return (f > g); // no warning 762 } 763 764 int checkGreaterThanFloatDeclCompare12(void) { 765 float f = 7.1F; 766 return (f > f); // expected-warning {{comparison of identical expressions always evaluates to false}} 767 } 768 769 770 int checkGreaterThanFloatDeclCompare3(void) { 771 float f = 7.1F; 772 return (f > 7.1F); // no warning 773 } 774 775 int checkGreaterThanFloatDeclCompare4(void) { 776 float f = 7.1F; 777 return (7.1F > f); // no warning 778 } 779 780 int checkGreaterThanFloatDeclCompare5(void) { 781 float f = 7.1F; 782 int t = 7; 783 return (t > f); // no warning 784 } 785 786 int checkGreaterThanFloatDeclCompare6(void) { 787 float f = 7.1F; 788 int t = 7; 789 return (f > t); // no warning 790 } 791 792 int checkGreaterThanCastFloatDeclCompare11(void) { 793 float f = 7.1F; 794 return ((int)f > (int)f); // expected-warning {{comparison of identical expressions always evaluates to false}} 795 } 796 int checkGreaterThanCastFloatDeclCompare12(void) { 797 float f = 7.1F; 798 return ((char)f > (int)f); // no warning 799 } 800 int checkGreaterThanBinaryOpFloatCompare1(void) { 801 int res; 802 float f= 3.14F; 803 res = (f + 3.14F > f + 3.14F); // no warning 804 return (0); 805 } 806 int checkGreaterThanBinaryOpFloatCompare2(void) { 807 float f = 7.1F; 808 float g = 7.1F; 809 return (f + 3.14F > g + 3.14F); // no warning 810 } 811 int checkGreaterThanBinaryOpFloatCompare3(void) { 812 int res; 813 float f= 3.14F; 814 res = ((int)f + 3.14F > (int)f + 3.14F); // no warning 815 return (0); 816 } 817 int checkGreaterThanBinaryOpFloatCompare4(void) { 818 int res; 819 float f= 3.14F; 820 res = ((int)f + 3.14F > (char)f + 3.14F); // no warning 821 return (0); 822 } 823 824 int checkGreaterThanNestedBinaryOpFloatCompare1(void) { 825 int res; 826 int t= 1; 827 int u= 2; 828 float f= 3.14F; 829 res = (((int)f + (3.14F - u)*t) > ((int)f + (3.14F - u)*t)); // no warning 830 return (0); 831 } 832 833 int checkGreaterThanNestedBinaryOpFloatCompare2(void) { 834 int res; 835 int t= 1; 836 int u= 2; 837 float f= 3.14F; 838 res = (((int)f + (u - 3.14F)*t) > ((int)f + (3.14F - u)*t)); // no warning 839 return (0); 840 } 841 842 int checkGreaterThanNestedBinaryOpFloatCompare3(void) { 843 int res; 844 int t= 1; 845 int u= 2; 846 float f= 3.14F; 847 res = (((int)f + (u - 3.14F)*t) > ((int)f + (3.14F - u)*(f + t > f + t))); // no warning 848 return (0); 849 } 850 851 /* end GT with float */ 852 853 /* GT with int */ 854 855 856 int checkGreaterThanIntLiteralCompare1(void) { 857 return (5 > 5); // expected-warning {{comparison of identical expressions always evaluates to false}} 858 } 859 860 int checkGreaterThanIntLiteralCompare2(void) { 861 return (6 > 7); // no warning 862 } 863 864 int checkGreaterThanIntDeclCompare1(void) { 865 int f = 7; 866 int g = 7; 867 868 return (f > g); // no warning 869 } 870 871 int checkGreaterThanIntDeclCompare3(void) { 872 int f = 7; 873 return (f > 7); // no warning 874 } 875 876 int checkGreaterThanIntDeclCompare4(void) { 877 int f = 7; 878 return (7 > f); // no warning 879 } 880 881 int checkGreaterThanCastIntDeclCompare11(void) { 882 int f = 7; 883 return ((int)f > (int)f); // expected-warning {{comparison of identical expressions always evaluates to false}} 884 } 885 int checkGreaterThanCastIntDeclCompare12(void) { 886 int f = 7; 887 return ((char)f > (int)f); // no warning 888 } 889 int checkGreaterThanBinaryOpIntCompare1(void) { 890 int res; 891 int f= 3; 892 res = (f + 3 > f + 3); // expected-warning {{comparison of identical expressions always evaluates to false}} 893 return (0); 894 } 895 int checkGreaterThanBinaryOpIntCompare2(void) { 896 int f = 7; 897 int g = 7; 898 return (f + 3 > g + 3); // no warning 899 } 900 int checkGreaterThanBinaryOpIntCompare3(void) { 901 int res; 902 int f= 3; 903 res = ((int)f + 3 > (int)f + 3); // expected-warning {{comparison of identical expressions always evaluates to false}} 904 return (0); 905 } 906 int checkGreaterThanBinaryOpIntCompare4(void) { 907 int res; 908 int f= 3; 909 res = ((int)f + 3 > (char)f + 3); // no warning 910 return (0); 911 } 912 913 int checkGreaterThanNestedBinaryOpIntCompare1(void) { 914 int res; 915 int t= 1; 916 int u= 2; 917 int f= 3; 918 res = (((int)f + (3 - u)*t) > ((int)f + (3 - u)*t)); // expected-warning {{comparison of identical expressions always evaluates to false}} 919 return (0); 920 } 921 922 int checkGreaterThanNestedBinaryOpIntCompare2(void) { 923 int res; 924 int t= 1; 925 int u= 2; 926 int f= 3; 927 res = (((int)f + (u - 3)*t) > ((int)f + (3 - u)*t)); // no warning 928 return (0); 929 } 930 931 int checkGreaterThanNestedBinaryOpIntCompare3(void) { 932 int res; 933 int t= 1; 934 int u= 2; 935 int f= 3; 936 res = (((int)f + (u - 3)*t) > ((int)f + (3 - u)*(t + u > t + u))); // expected-warning {{comparison of identical expressions always evaluates to false}} 937 return (0); 938 } 939 940 /* end GT with int */ 941 942 /* end GT */ 943