Files
swift-mirror/test/Serialization/function.swift
Jordan Rose 93be189ca4 [serialization] Add support for niladic function decls.
Like everything else, there are several caveats: no generic params, no
attributes, and (for now) no arguments. Pattern support is coming next.

Swift SVN r5701
2013-06-19 23:34:33 +00:00

87 lines
3.0 KiB
Swift

// RUN: rm -rf %t
// RUN: mkdir %t
// RUN: %swift -emit-module -o %t/def_func.swiftmodule %S/Inputs/def_func.swift
// RUN: llvm-bcanalyzer %t/def_func.swiftmodule | FileCheck %s
// RUN: %swift -emit-llvm -I=%t %s | FileCheck %s -check-prefix=LLVM
import def_func
// LLVM: define {{.*}} @top_level_code() {
// LLVM: [[VAL:%.*]] = call i64 @_T8def_func7getZeroFT_Bi64_()
// LLVM: store i64 [[VAL]], i64* @_T8function3rawBi64_, align 8
// LLVM: }
var raw = getZero()
// Check that 'raw' is a Builtin.Int64
var cooked = Int64(raw)
// CHECK: # Toplevel Blocks: 6
// 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:
// CHECK-NEXT: Percent Abbrevs: 100.0000%
// CHECK: Count # Bits %% Abv Record Kind
// CHECK-NEXT: 1 {{[0-9]+}} 100.00 FUNC_DECL
// CHECK-NEXT: 1 {{[0-9]+}} 100.00 FUNCTION_TYPE
// CHECK-NEXT: 1 {{[0-9]+}} 100.00 IDENTIFIER_TYPE
// CHECK-NEXT: 1 {{[0-9]+}} 100.00 TUPLE_TYPE
// CHECK-NEXT: 1 {{[0-9]+}} 100.00 BUILTIN_TYPE
// CHECK: Block ID #11 (IDENTIFIER_DATA_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 IDENTIFIER_DATA
// CHECK: Block ID #12 (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: 4
// 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 IDENTIFIER_OFFSETS
// 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