62 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			C++
		
	
	
	
			
		
		
	
	
			62 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			C++
		
	
	
	
| // clang-format off
 | |
| // REQUIRES: lld, x86
 | |
| 
 | |
| // Test various interesting cases for AST reconstruction.
 | |
| // RUN: %clang_cl --target=x86_64-windows-msvc -Od -Z7 -c /Fo%t.obj -- %s
 | |
| // RUN: lld-link -debug:full -nodefaultlib -entry:main %t.obj -out:%t.exe -pdb:%t.pdb
 | |
| // RUN: env LLDB_USE_NATIVE_PDB_READER=1 %lldb -f %t.exe -s \
 | |
| // RUN:     %p/Inputs/bitfields.lldbinit 2>&1 | FileCheck %s
 | |
| 
 | |
| // Test trivial versions of each tag type.
 | |
| struct Struct {
 | |
|   int A : 5 = 6;
 | |
|   int B : 7 = 8;
 | |
|   unsigned C : 3 = 2;
 | |
|   unsigned D : 15 = 12345;
 | |
|   char E : 1 = 0;
 | |
|   char F : 2 = 1;
 | |
|   char G : 3 = 2;
 | |
|   // H should be at offset 0 of a new byte.
 | |
|   char H : 3 = 3;
 | |
| };
 | |
| 
 | |
| constexpr Struct TheStruct;
 | |
| 
 | |
| 
 | |
| int main(int argc, char **argv) {
 | |
|   return TheStruct.A;
 | |
| }
 | |
| 
 | |
| // CHECK: (lldb) target variable -T TheStruct
 | |
| // CHECK: (const Struct) TheStruct = {
 | |
| // CHECK:   (int:5) A = 6
 | |
| // CHECK:   (int:7) B = 8
 | |
| // CHECK:   (unsigned int:3) C = 2
 | |
| // CHECK:   (unsigned int:15) D = 12345
 | |
| // CHECK:   (char:1) E = '\0'
 | |
| // CHECK:   (char:2) F = '\x01'
 | |
| // CHECK:   (char:3) G = '\x02'
 | |
| // CHECK:   (char:3) H = '\x03'
 | |
| // CHECK: }
 | |
| //
 | |
| // CHECK: target modules dump ast
 | |
| // CHECK: Dumping clang ast for 1 modules.
 | |
| // CHECK: TranslationUnitDecl {{.*}}
 | |
| // CHECK: |-CXXRecordDecl {{.*}} struct Struct definition
 | |
| // CHECK: | |-FieldDecl {{.*}} A 'int'
 | |
| // CHECK: | | `-IntegerLiteral {{.*}} 'int' 5
 | |
| // CHECK: | |-FieldDecl {{.*}} B 'int'
 | |
| // CHECK: | | `-IntegerLiteral {{.*}} 'int' 7
 | |
| // CHECK: | |-FieldDecl {{.*}} C 'unsigned int'
 | |
| // CHECK: | | `-IntegerLiteral {{.*}} 'int' 3
 | |
| // CHECK: | |-FieldDecl {{.*}} D 'unsigned int'
 | |
| // CHECK: | | `-IntegerLiteral {{.*}} 'int' 15
 | |
| // CHECK: | |-FieldDecl {{.*}} E 'char'
 | |
| // CHECK: | | `-IntegerLiteral {{.*}} 'int' 1
 | |
| // CHECK: | |-FieldDecl {{.*}} F 'char'
 | |
| // CHECK: | | `-IntegerLiteral {{.*}} 'int' 2
 | |
| // CHECK: | |-FieldDecl {{.*}} G 'char'
 | |
| // CHECK: | | `-IntegerLiteral {{.*}} 'int' 3
 | |
| // CHECK: | `-FieldDecl {{.*}} H 'char'
 | |
| // CHECK: |   `-IntegerLiteral {{.*}} 'int' 3
 |