brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.1 KiB · f819aac Raw
40 lines · c
1// RUN: %clang_analyze_cc1 -analyzer-checker=core,alpha.core,debug.ExprInspection -verify -analyzer-config eagerly-assume=false -triple x86_64-pc-linux-gnu %s2 3// RUN: %clang_analyze_cc1 -analyzer-checker=core,alpha.core,debug.ExprInspection -verify -analyzer-config eagerly-assume=false -triple i386-pc-linux-gnu  %s4 5int clang_analyzer_eval(int);6 7typedef struct {8  int a : 1;9  int b[2];10} BITFIELD_CAST;11 12void array_struct_bitfield_1() {13  BITFIELD_CAST ff = {0};14  BITFIELD_CAST *pff = &ff;15  clang_analyzer_eval(*((int *)pff + 1) == 0); // expected-warning{{TRUE}}16  ff.b[0] = 3;17  clang_analyzer_eval(*((int *)pff + 1) == 3); // expected-warning{{TRUE}}18}19 20int array_struct_bitfield_2() {21  BITFIELD_CAST ff = {0};22  BITFIELD_CAST *pff = &ff;23  int a = *((int *)pff + 2); // expected-warning{{Assigned value is uninitialized [core.uninitialized.Assign]}}24  return a;25}26 27typedef struct {28  unsigned int a : 1;29  unsigned int x : 31;30  unsigned int c : 1;31  int b[2];32} mystruct;33 34void array_struct_bitfield_3() {35  mystruct ff;36  mystruct *pff = &ff;37  ff.b[0] = 3;38  clang_analyzer_eval(*((int *)pff + 2) == 3); // expected-warning{{TRUE}}39}40