mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
Unlike Clang, Swift's DeclContexts are not all Decls. However, I believe each DeclContext that is /serialized/ will be either a decl, a TranslationUnit, or a FuncExpr for a function with an actual declaration. This might turn out to be wrong if (a) SIL needs proper DeclContexts for variables in function bodies, or (b) we need to serialize anonymous closure default arguments. Along with an extension of the ConstructorDecl placeholder code, this allows us to round-trip empty structs. Swift SVN r5532
72 lines
2.5 KiB
Swift
72 lines
2.5 KiB
Swift
// RUN: rm -rf %t
|
|
// RUN: mkdir %t
|
|
// RUN: %swift -emit-module -o %t/def_struct.swiftmodule %S/Inputs/def_struct.swift
|
|
// RUN: llvm-bcanalyzer %t/def_struct.swiftmodule | FileCheck %s
|
|
// RUN: %swift -emit-llvm -I=%t %s | FileCheck %s -check-prefix=LLVM
|
|
|
|
import def_struct
|
|
|
|
// LLVM: define {{.*}} @top_level_code() {
|
|
// LLVM: call void @_TV10def_struct5EmptyCfMS0_FT_S0_
|
|
// LLVM: }
|
|
var a : Empty
|
|
|
|
// CHECK: # Toplevel Blocks: 5
|
|
|
|
// CHECK: Block ID #0 (BLOCKINFO_BLOCK):
|
|
// CHECK-NEXT: Num Instances: 1
|
|
|
|
// CHECK: Block ID #8 (CONTROL_BLOCK):
|
|
// CHECK-NEXT: Num Instances: 1
|
|
// CHECK-NEXT: Total Size:
|
|
// CHECK-NEXT: Percent of file:
|
|
// CHECK-NEXT: Num SubBlocks: 0
|
|
// CHECK-NEXT: Num Abbrevs: 1
|
|
// CHECK-NEXT: Num Records: 1
|
|
// CHECK-NEXT: Percent Abbrevs: 100.0000%
|
|
|
|
// CHECK: Block ID #9 (INPUT_BLOCK):
|
|
// CHECK-NEXT: Num Instances: 1
|
|
// CHECK-NEXT: Total Size:
|
|
// CHECK-NEXT: Percent of file:
|
|
// CHECK-NEXT: Num SubBlocks: 0
|
|
// CHECK-NEXT: Num Abbrevs: 1
|
|
// CHECK-NEXT: Num Records: 1
|
|
// CHECK-NEXT: Percent Abbrevs: 100.0000%
|
|
// CHECK: Count # Bits %% Abv Record Kind
|
|
// CHECK-NEXT: 1 {{[0-9]+}} 100.00 SOURCE_FILE
|
|
|
|
// CHECK: Block ID #10 (DECLS_AND_TYPES_BLOCK):
|
|
// CHECK-NEXT: Num Instances: 1
|
|
// CHECK-NEXT: Total Size:
|
|
// CHECK-NEXT: Percent of file:
|
|
// CHECK-NEXT: Num SubBlocks: 0
|
|
// CHECK-NEXT: Num Abbrevs:
|
|
// CHECK-NEXT: Num Records: 7
|
|
// CHECK-NEXT: Percent Abbrevs: 100.0000%
|
|
|
|
// CHECK: Count # Bits %% Abv Record Kind
|
|
// CHECK-NEXT: 2 {{[0-9]+}} 100.00 NAME_HACK
|
|
// CHECK-NEXT: 1 {{[0-9]+}} 100.00 DECL_CONTEXT
|
|
// CHECK-NEXT: 1 {{[0-9]+}} 100.00 VAR_DECL
|
|
// CHECK-NEXT: 1 {{[0-9]+}} 100.00 CONSTRUCTOR_DECL
|
|
// CHECK-NEXT: 1 {{[0-9]+}} 100.00 STRUCT_DECL
|
|
// CHECK-NEXT: 1 {{[0-9]+}} 100.00 STRUCT_TYPE
|
|
|
|
// CHECK: Block ID #11 (INDEX_BLOCK):
|
|
// CHECK-NEXT: Num Instances: 1
|
|
// CHECK-NEXT: Total Size:
|
|
// CHECK-NEXT: Percent of file:
|
|
// CHECK-NEXT: Num SubBlocks: 0
|
|
// CHECK-NEXT: Num Abbrevs: 2
|
|
// CHECK-NEXT: Num Records: 3
|
|
// CHECK-NEXT: Percent Abbrevs: 100.0000%
|
|
|
|
// CHECK: Count # Bits %% Abv Record Kind
|
|
// CHECK-NEXT: 1 {{[0-9]+}} 100.00 TOP_LEVEL_DECLS
|
|
// CHECK-NEXT: 1 {{[0-9]+}} 100.00 DECL_OFFSETS
|
|
// CHECK-NEXT: 1 {{[0-9]+}} 100.00 TYPE_OFFSETS
|
|
|
|
// CHECK-NOT: FALL_BACK_TO_TRANSLATION_UNIT
|
|
|