| // RUN: %clang_analyze_cc1 -analyzer-checker=core -analyzer-store=region -verify %s |
| bool PR14634_implicit(int x) { |
| void intAsBoolAsSwitchCondition(int c) { |
| switch ((bool)c) { // expected-warning {{switch condition has boolean value}} |
| switch ((int)(bool)c) { // no-warning |
| int *&castToIntPtrLValueRef(char *p) { |
| return (int *&)*(int *)p; |
| bool testCastToIntPtrLValueRef(char *p, int *s) { |
| return castToIntPtrLValueRef(p) != s; // no-crash |
| int *&&castToIntPtrRValueRef(char *p) { |
| return (int *&&)*(int *)p; |
| bool testCastToIntPtrRValueRef(char *p, int *s) { |
| return castToIntPtrRValueRef(p) != s; // no-crash |
| bool retrievePointerFromBoolean(int *p) { |
| *reinterpret_cast<int **>(&q) = p; |