1 // RUN: %clang_analyze_cc1 -std=c++14 -analyzer-checker=optin.performance -analyzer-config optin.performance.Padding:AllowedPad=20 -verify %s 2 3 // A class that has no fields and one base class should visit that base class 4 // instead. Note that despite having excess padding of 2, this is flagged 5 // because of its usage in an array of 100 elements below (`ais'). 6 // TODO: Add a note to the bug report with BugReport::addNote() to mention the 7 // variable using the class and also mention what class is inherting from what. 8 // expected-warning@+1{{Excessive padding in 'struct FakeIntSandwich'}} 9 struct FakeIntSandwich { 10 char c1; 11 int i; 12 char c2; 13 }; 14 15 struct AnotherIntSandwich : FakeIntSandwich { // no-warning 16 }; 17 18 // But we don't yet support multiple base classes. 19 struct IntSandwich {}; 20 struct TooManyBaseClasses : FakeIntSandwich, IntSandwich { // no-warning 21 }; 22 23 AnotherIntSandwich ais[100]; 24 25 struct Empty {}; 26 struct DoubleEmpty : Empty { // no-warning 27 Empty e; 28 }; 29