Skip to content

Commit 9ec3ccf

Browse files
committed
fix calls to FieldDecl::setBitWidth() in lldb
1 parent 813b4be commit 9ec3ccf

File tree

2 files changed

+29
-9
lines changed

2 files changed

+29
-9
lines changed

lldb/source/Plugins/TypeSystem/Clang/TypeSystemClang.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7433,6 +7433,8 @@ clang::FieldDecl *TypeSystemClang::AddFieldToRecordType(
74337433
bit_width = new (clang_ast)
74347434
clang::IntegerLiteral(clang_ast, bitfield_bit_size_apint,
74357435
clang_ast.IntTy, clang::SourceLocation());
7436+
bit_width = clang::ConstantExpr::Create(
7437+
clang_ast, bit_width, APValue(llvm::APSInt(bitfield_bit_size_apint)));
74367438
}
74377439

74387440
clang::RecordDecl *record_decl = ast->GetAsRecordDecl(type);

lldb/test/Shell/SymbolFile/DWARF/x86/no_unique_address-with-bitfields.cpp

Lines changed: 27 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,9 @@
1313
// CHECK: |-FieldDecl {{.*}} data 'char[5]'
1414
// CHECK-NEXT: |-FieldDecl {{.*}} padding 'Empty'
1515
// CHECK-NEXT: `-FieldDecl {{.*}} flag 'unsigned long'
16-
// CHECK-NEXT: `-IntegerLiteral {{.*}} 'int' 1
16+
// CHECK-NEXT: `-ConstantExpr {{.*}}
17+
// CHECK-NEXT: |-value: Int 1
18+
// CHECK-NEXT: `-IntegerLiteral {{.*}} 'int' 1
1719

1820
struct Empty {};
1921
struct Empty2 {};
@@ -33,7 +35,9 @@ Foo global;
3335
// CHECK-NEXT: |-FieldDecl {{.*}} p2 'Empty2'
3436
// CHECK-NEXT: |-FieldDecl {{.*}} p3 'Empty3'
3537
// CHECK-NEXT: `-FieldDecl {{.*}} flag 'unsigned long'
36-
// CHECK-NEXT: `-IntegerLiteral {{.*}} 'int' 1
38+
// CHECK-NEXT: `-ConstantExpr {{.*}}
39+
// CHECK-NEXT: |-value: Int 1
40+
// CHECK-NEXT: `-IntegerLiteral {{.*}} 'int' 1
3741

3842
struct ConsecutiveOverlap {
3943
char data[5];
@@ -51,10 +55,14 @@ ConsecutiveOverlap global2;
5155
// CHECK: |-FieldDecl {{.*}} data 'char[5]'
5256
// CHECK-NEXT: |-FieldDecl {{.*}} p1 'Empty'
5357
// CHECK-NEXT: |-FieldDecl {{.*}} f1 'unsigned long'
54-
// CHECK-NEXT: | `-IntegerLiteral {{.*}} 'int' 1
58+
// CHECK-NEXT: | `-ConstantExpr {{.*}}
59+
// CHECK-NEXT: | |-value: Int 1
60+
// CHECK-NEXT: | `-IntegerLiteral {{.*}} 'int' 1
5561
// CHECK-NEXT: |-FieldDecl {{.*}} p2 'Empty2'
5662
// CHECK-NEXT: `-FieldDecl {{.*}} f2 'unsigned long'
57-
// CHECK-NEXT: `-IntegerLiteral {{.*}} 'int' 1
63+
// CHECK-NEXT: | `-ConstantExpr {{.*}}
64+
// CHECK-NEXT: | |-value: Int 1
65+
// CHECK-NEXT: | `-IntegerLiteral {{.*}} 'int' 1
5866

5967
struct MultipleAtOffsetZero {
6068
char data[5];
@@ -74,10 +82,14 @@ MultipleAtOffsetZero global3;
7482
// CHECK: |-FieldDecl {{.*}} data 'char[5]'
7583
// CHECK-NEXT: |-FieldDecl {{.*}} p1 'Empty'
7684
// CHECK-NEXT: |-FieldDecl {{.*}} f1 'unsigned long'
77-
// CHECK-NEXT: | `-IntegerLiteral {{.*}} 'int' 1
85+
// CHECK-NEXT: | `-ConstantExpr {{.*}}
86+
// CHECK-NEXT: | |-value: Int 1
87+
// CHECK-NEXT: | `-IntegerLiteral {{.*}} 'int' 1
7888
// CHECK-NEXT: |-FieldDecl {{.*}} p2 'Empty'
7989
// CHECK-NEXT: `-FieldDecl {{.*}} f2 'unsigned long'
80-
// CHECK-NEXT: `-IntegerLiteral {{.*}} 'int' 1
90+
// CHECK-NEXT: | `-ConstantExpr {{.*}}
91+
// CHECK-NEXT: | |-value: Int 1
92+
// CHECK-NEXT: | `-IntegerLiteral {{.*}} 'int' 1
8193

8294
struct MultipleEmpty {
8395
char data[5];
@@ -93,12 +105,18 @@ MultipleEmpty global4;
93105

94106
// CHECK: CXXRecordDecl {{.*}} struct FieldBitfieldOverlap definition
95107
// CHECK: |-FieldDecl {{.*}} a 'int'
96-
// CHECK-NEXT: | `-IntegerLiteral {{.*}} 'int' 3
108+
// CHECK-NEXT: | `-ConstantExpr {{.*}}
109+
// CHECK-NEXT: | |-value: Int 3
110+
// CHECK-NEXT: | `-IntegerLiteral {{.*}} 'int' 3
97111
// CHECK-NEXT: |-FieldDecl {{.*}} p1 'Empty'
98112
// CHECK-NEXT: |-FieldDecl {{.*}} b 'int'
99-
// CHECK-NEXT: | `-IntegerLiteral {{.*}} 'int' 6
113+
// CHECK-NEXT: | `-ConstantExpr {{.*}}
114+
// CHECK-NEXT: | |-value: Int 6
115+
// CHECK-NEXT: | `-IntegerLiteral {{.*}} 'int' 6
100116
// CHECK-NEXT: `-FieldDecl {{.*}} c 'int'
101-
// CHECK-NEXT: `-IntegerLiteral {{.*}} 'int' 1
117+
// CHECK-NEXT: `-ConstantExpr {{.*}}
118+
// CHECK-NEXT: |-value: Int 1
119+
// CHECK-NEXT: `-IntegerLiteral {{.*}} 'int' 1
102120

103121
struct FieldBitfieldOverlap {
104122
int a : 3;

0 commit comments

Comments
 (0)