54 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			C++
		
	
	
	
			
		
		
	
	
			54 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			C++
		
	
	
	
// RUN: %clang_cc1 -triple i386-pc-windows -emit-llvm -gcodeview -debug-info-kind=limited -fms-compatibility %s -x c++ -o - | FileCheck %s
 | 
						|
 | 
						|
// Ensure we emit debug info for the full definition of base classes that will
 | 
						|
// be imported from a DLL.  Otherwise, the debugger wouldn't be able to show the
 | 
						|
// members.
 | 
						|
 | 
						|
// CHECK: !DICompositeType(tag: DW_TAG_structure_type, name: "ImportedAfterCompletion",
 | 
						|
// CHECK-NOT:              DIFlagFwdDecl
 | 
						|
// CHECK-SAME:             ){{$}}
 | 
						|
 | 
						|
// CHECK: !DICompositeType(tag: DW_TAG_structure_type, name: "OutOfLineCtor",
 | 
						|
// CHECK-SAME:             DIFlagFwdDecl
 | 
						|
// CHECK-SAME:             ){{$}}
 | 
						|
 | 
						|
// CHECK: !DICompositeType(tag: DW_TAG_structure_type, name: "ImportedBase",
 | 
						|
// CHECK-NOT:              DIFlagFwdDecl
 | 
						|
// CHECK-SAME:             ){{$}}
 | 
						|
 | 
						|
// CHECK: !DICompositeType(tag: DW_TAG_structure_type, name: "ImportedMethod",
 | 
						|
// CHECK-NOT:              DIFlagFwdDecl
 | 
						|
// CHECK-SAME:             ){{$}}
 | 
						|
 | 
						|
 | 
						|
struct ImportedAfterCompletion;
 | 
						|
ImportedAfterCompletion *force_fwd_decl;
 | 
						|
struct __declspec(dllimport) ImportedAfterCompletion {
 | 
						|
  virtual ~ImportedAfterCompletion();
 | 
						|
};
 | 
						|
 | 
						|
struct OutOfLineCtor {
 | 
						|
  OutOfLineCtor();
 | 
						|
  virtual void Foo();
 | 
						|
};
 | 
						|
 | 
						|
struct __declspec(dllimport) ImportedBase {
 | 
						|
  ImportedBase();
 | 
						|
  virtual void Foo();
 | 
						|
};
 | 
						|
 | 
						|
struct DerivedFromImported : public ImportedBase {};
 | 
						|
 | 
						|
struct ImportedMethod {
 | 
						|
  ImportedMethod();
 | 
						|
  virtual void Foo();
 | 
						|
  static void __declspec(dllimport) create();
 | 
						|
};
 | 
						|
 | 
						|
int main() {
 | 
						|
  ImportedAfterCompletion c;
 | 
						|
  OutOfLineCtor o;
 | 
						|
  DerivedFromImported d;
 | 
						|
  ImportedMethod m;
 | 
						|
}
 |