blob: 214acca78e6f488e44d2c0463ec3e1220d2ad42e [file] [log] [blame]
// RUN: %clang_analyze_cc1 -analyzer-checker=core -analyzer-output=text -triple x86_64-linux-gnu -Wno-shift-count-overflow -verify %s
#define offsetof(type,memb) ((unsigned long)&((type*)0)->memb)
typedef struct {
unsigned long guest_counter;
unsigned int guest_fpc;
} S;
// no crash
int left_shift_overflow_no_crash(unsigned int i) {
unsigned shift = 323U; // expected-note{{'shift' initialized to 323}}
switch (i) { // expected-note{{Control jumps to 'case 8:' at line 14}}
case offsetof(S, guest_fpc):
return 3 << shift; // expected-warning{{The result of the left shift is undefined due to shifting by '323', which is greater or equal to the width of type 'int'}}
// expected-note@-1{{The result of the left shift is undefined due to shifting by '323', which is greater or equal to the width of type 'int'}}
default:
break;
}
return 0;
}