mirror of
https://github.com/carbon-language/carbon-lang.git
synced 2026-09-24 18:30:30 +01:00
Require file tests to specify a min-prelude (#5818)
Use `full.carbon` min-prelude for any tests using the full prelude. A few tests were using it unnecessarily and are changed to a more minimal one in the process. Any test which does not include some min-prelude will now fail with an error.
This commit is contained in:
@@ -2,6 +2,8 @@
|
||||
// Exceptions. See /LICENSE for license information.
|
||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
//
|
||||
// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/primitives.carbon
|
||||
//
|
||||
// AUTOUPDATE
|
||||
// TIP: To test this file alone, run:
|
||||
// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/alias/builtins.carbon
|
||||
|
||||
@@ -2,6 +2,8 @@
|
||||
// Exceptions. See /LICENSE for license information.
|
||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
//
|
||||
// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/full.carbon
|
||||
//
|
||||
// AUTOUPDATE
|
||||
// TIP: To test this file alone, run:
|
||||
// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/array/bound_values.carbon
|
||||
|
||||
@@ -2,6 +2,8 @@
|
||||
// Exceptions. See /LICENSE for license information.
|
||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
//
|
||||
// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/full.carbon
|
||||
//
|
||||
// AUTOUPDATE
|
||||
// TIP: To test this file alone, run:
|
||||
// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/builtins/bool/eq.carbon
|
||||
|
||||
@@ -2,6 +2,8 @@
|
||||
// Exceptions. See /LICENSE for license information.
|
||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
//
|
||||
// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/full.carbon
|
||||
//
|
||||
// AUTOUPDATE
|
||||
// TIP: To test this file alone, run:
|
||||
// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/builtins/bool/neq.carbon
|
||||
|
||||
+21
-19
@@ -2,6 +2,8 @@
|
||||
// Exceptions. See /LICENSE for license information.
|
||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
//
|
||||
// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/full.carbon
|
||||
//
|
||||
// AUTOUPDATE
|
||||
// TIP: To test this file alone, run:
|
||||
// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/builtins/print/char.carbon
|
||||
@@ -26,7 +28,7 @@ fn Main() {
|
||||
// CHECK:STDOUT: %Int.type: type = generic_class_type @Int [concrete]
|
||||
// CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete]
|
||||
// CHECK:STDOUT: %PrintChar.type.c95: type = fn_type @PrintChar.loc13 [concrete]
|
||||
// CHECK:STDOUT: %PrintChar.type.c95: type = fn_type @PrintChar.loc15 [concrete]
|
||||
// CHECK:STDOUT: %PrintChar.843: %PrintChar.type.c95 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete]
|
||||
// CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete]
|
||||
@@ -71,27 +73,27 @@ fn Main() {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @Main() {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %PrintChar.ref.loc17: %PrintChar.type.c95 = name_ref PrintChar, file.%PrintChar.decl [concrete = constants.%PrintChar.843]
|
||||
// CHECK:STDOUT: %PrintChar.ref.loc19: %PrintChar.type.c95 = name_ref PrintChar, file.%PrintChar.decl [concrete = constants.%PrintChar.843]
|
||||
// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8]
|
||||
// CHECK:STDOUT: %impl.elem0.loc17: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956]
|
||||
// CHECK:STDOUT: %bound_method.loc17_13.1: <bound method> = bound_method %int_1, %impl.elem0.loc17 [concrete = constants.%Convert.bound.ab5]
|
||||
// CHECK:STDOUT: %specific_fn.loc17: <specific function> = specific_function %impl.elem0.loc17, @Convert.3(constants.%int_32) [concrete = constants.%Convert.specific_fn]
|
||||
// CHECK:STDOUT: %bound_method.loc17_13.2: <bound method> = bound_method %int_1, %specific_fn.loc17 [concrete = constants.%bound_method.9a1]
|
||||
// CHECK:STDOUT: %int.convert_checked.loc17: init %i32 = call %bound_method.loc17_13.2(%int_1) [concrete = constants.%int_1.5d2]
|
||||
// CHECK:STDOUT: %.loc17_13.1: %i32 = value_of_initializer %int.convert_checked.loc17 [concrete = constants.%int_1.5d2]
|
||||
// CHECK:STDOUT: %.loc17_13.2: %i32 = converted %int_1, %.loc17_13.1 [concrete = constants.%int_1.5d2]
|
||||
// CHECK:STDOUT: %print.char.loc17: init %i32 = call %PrintChar.ref.loc17(%.loc17_13.2)
|
||||
// CHECK:STDOUT: %impl.elem0.loc19: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956]
|
||||
// CHECK:STDOUT: %bound_method.loc19_13.1: <bound method> = bound_method %int_1, %impl.elem0.loc19 [concrete = constants.%Convert.bound.ab5]
|
||||
// CHECK:STDOUT: %specific_fn.loc19: <specific function> = specific_function %impl.elem0.loc19, @Convert.3(constants.%int_32) [concrete = constants.%Convert.specific_fn]
|
||||
// CHECK:STDOUT: %bound_method.loc19_13.2: <bound method> = bound_method %int_1, %specific_fn.loc19 [concrete = constants.%bound_method.9a1]
|
||||
// CHECK:STDOUT: %int.convert_checked.loc19: init %i32 = call %bound_method.loc19_13.2(%int_1) [concrete = constants.%int_1.5d2]
|
||||
// CHECK:STDOUT: %.loc19_13.1: %i32 = value_of_initializer %int.convert_checked.loc19 [concrete = constants.%int_1.5d2]
|
||||
// CHECK:STDOUT: %.loc19_13.2: %i32 = converted %int_1, %.loc19_13.1 [concrete = constants.%int_1.5d2]
|
||||
// CHECK:STDOUT: %print.char.loc19: init %i32 = call %PrintChar.ref.loc19(%.loc19_13.2)
|
||||
// CHECK:STDOUT: %Core.ref: <namespace> = name_ref Core, imports.%Core [concrete = imports.%Core]
|
||||
// CHECK:STDOUT: %PrintChar.ref.loc18: %PrintChar.type.089 = name_ref PrintChar, imports.%Core.PrintChar [concrete = constants.%PrintChar.d75]
|
||||
// CHECK:STDOUT: %PrintChar.ref.loc20: %PrintChar.type.089 = name_ref PrintChar, imports.%Core.PrintChar [concrete = constants.%PrintChar.d75]
|
||||
// CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc]
|
||||
// CHECK:STDOUT: %impl.elem0.loc18: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956]
|
||||
// CHECK:STDOUT: %bound_method.loc18_18.1: <bound method> = bound_method %int_2, %impl.elem0.loc18 [concrete = constants.%Convert.bound.ef9]
|
||||
// CHECK:STDOUT: %specific_fn.loc18: <specific function> = specific_function %impl.elem0.loc18, @Convert.3(constants.%int_32) [concrete = constants.%Convert.specific_fn]
|
||||
// CHECK:STDOUT: %bound_method.loc18_18.2: <bound method> = bound_method %int_2, %specific_fn.loc18 [concrete = constants.%bound_method.b92]
|
||||
// CHECK:STDOUT: %int.convert_checked.loc18: init %i32 = call %bound_method.loc18_18.2(%int_2) [concrete = constants.%int_2.ef8]
|
||||
// CHECK:STDOUT: %.loc18_18.1: %i32 = value_of_initializer %int.convert_checked.loc18 [concrete = constants.%int_2.ef8]
|
||||
// CHECK:STDOUT: %.loc18_18.2: %i32 = converted %int_2, %.loc18_18.1 [concrete = constants.%int_2.ef8]
|
||||
// CHECK:STDOUT: %print.char.loc18: init %i32 = call %PrintChar.ref.loc18(%.loc18_18.2)
|
||||
// CHECK:STDOUT: %impl.elem0.loc20: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956]
|
||||
// CHECK:STDOUT: %bound_method.loc20_18.1: <bound method> = bound_method %int_2, %impl.elem0.loc20 [concrete = constants.%Convert.bound.ef9]
|
||||
// CHECK:STDOUT: %specific_fn.loc20: <specific function> = specific_function %impl.elem0.loc20, @Convert.3(constants.%int_32) [concrete = constants.%Convert.specific_fn]
|
||||
// CHECK:STDOUT: %bound_method.loc20_18.2: <bound method> = bound_method %int_2, %specific_fn.loc20 [concrete = constants.%bound_method.b92]
|
||||
// CHECK:STDOUT: %int.convert_checked.loc20: init %i32 = call %bound_method.loc20_18.2(%int_2) [concrete = constants.%int_2.ef8]
|
||||
// CHECK:STDOUT: %.loc20_18.1: %i32 = value_of_initializer %int.convert_checked.loc20 [concrete = constants.%int_2.ef8]
|
||||
// CHECK:STDOUT: %.loc20_18.2: %i32 = converted %int_2, %.loc20_18.1 [concrete = constants.%int_2.ef8]
|
||||
// CHECK:STDOUT: %print.char.loc20: init %i32 = call %PrintChar.ref.loc20(%.loc20_18.2)
|
||||
// CHECK:STDOUT: <elided>
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
|
||||
+21
-19
@@ -2,6 +2,8 @@
|
||||
// Exceptions. See /LICENSE for license information.
|
||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
//
|
||||
// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/full.carbon
|
||||
//
|
||||
// AUTOUPDATE
|
||||
// TIP: To test this file alone, run:
|
||||
// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/builtins/print/int.carbon
|
||||
@@ -27,7 +29,7 @@ fn Main() {
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete]
|
||||
// CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete]
|
||||
// CHECK:STDOUT: %Print.type.980: type = fn_type @Print.loc13 [concrete]
|
||||
// CHECK:STDOUT: %Print.type.980: type = fn_type @Print.loc15 [concrete]
|
||||
// CHECK:STDOUT: %Print.b7c: %Print.type.980 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete]
|
||||
// CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete]
|
||||
@@ -72,27 +74,27 @@ fn Main() {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @Main() {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %Print.ref.loc17: %Print.type.980 = name_ref Print, file.%Print.decl [concrete = constants.%Print.b7c]
|
||||
// CHECK:STDOUT: %Print.ref.loc19: %Print.type.980 = name_ref Print, file.%Print.decl [concrete = constants.%Print.b7c]
|
||||
// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8]
|
||||
// CHECK:STDOUT: %impl.elem0.loc17: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956]
|
||||
// CHECK:STDOUT: %bound_method.loc17_9.1: <bound method> = bound_method %int_1, %impl.elem0.loc17 [concrete = constants.%Convert.bound.ab5]
|
||||
// CHECK:STDOUT: %specific_fn.loc17: <specific function> = specific_function %impl.elem0.loc17, @Convert.3(constants.%int_32) [concrete = constants.%Convert.specific_fn]
|
||||
// CHECK:STDOUT: %bound_method.loc17_9.2: <bound method> = bound_method %int_1, %specific_fn.loc17 [concrete = constants.%bound_method.9a1]
|
||||
// CHECK:STDOUT: %int.convert_checked.loc17: init %i32 = call %bound_method.loc17_9.2(%int_1) [concrete = constants.%int_1.5d2]
|
||||
// CHECK:STDOUT: %.loc17_9.1: %i32 = value_of_initializer %int.convert_checked.loc17 [concrete = constants.%int_1.5d2]
|
||||
// CHECK:STDOUT: %.loc17_9.2: %i32 = converted %int_1, %.loc17_9.1 [concrete = constants.%int_1.5d2]
|
||||
// CHECK:STDOUT: %print.int.loc17: init %empty_tuple.type = call %Print.ref.loc17(%.loc17_9.2)
|
||||
// CHECK:STDOUT: %impl.elem0.loc19: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956]
|
||||
// CHECK:STDOUT: %bound_method.loc19_9.1: <bound method> = bound_method %int_1, %impl.elem0.loc19 [concrete = constants.%Convert.bound.ab5]
|
||||
// CHECK:STDOUT: %specific_fn.loc19: <specific function> = specific_function %impl.elem0.loc19, @Convert.3(constants.%int_32) [concrete = constants.%Convert.specific_fn]
|
||||
// CHECK:STDOUT: %bound_method.loc19_9.2: <bound method> = bound_method %int_1, %specific_fn.loc19 [concrete = constants.%bound_method.9a1]
|
||||
// CHECK:STDOUT: %int.convert_checked.loc19: init %i32 = call %bound_method.loc19_9.2(%int_1) [concrete = constants.%int_1.5d2]
|
||||
// CHECK:STDOUT: %.loc19_9.1: %i32 = value_of_initializer %int.convert_checked.loc19 [concrete = constants.%int_1.5d2]
|
||||
// CHECK:STDOUT: %.loc19_9.2: %i32 = converted %int_1, %.loc19_9.1 [concrete = constants.%int_1.5d2]
|
||||
// CHECK:STDOUT: %print.int.loc19: init %empty_tuple.type = call %Print.ref.loc19(%.loc19_9.2)
|
||||
// CHECK:STDOUT: %Core.ref: <namespace> = name_ref Core, imports.%Core [concrete = imports.%Core]
|
||||
// CHECK:STDOUT: %Print.ref.loc18: %Print.type.6ed = name_ref Print, imports.%Core.Print [concrete = constants.%Print.723]
|
||||
// CHECK:STDOUT: %Print.ref.loc20: %Print.type.6ed = name_ref Print, imports.%Core.Print [concrete = constants.%Print.723]
|
||||
// CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc]
|
||||
// CHECK:STDOUT: %impl.elem0.loc18: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956]
|
||||
// CHECK:STDOUT: %bound_method.loc18_14.1: <bound method> = bound_method %int_2, %impl.elem0.loc18 [concrete = constants.%Convert.bound.ef9]
|
||||
// CHECK:STDOUT: %specific_fn.loc18: <specific function> = specific_function %impl.elem0.loc18, @Convert.3(constants.%int_32) [concrete = constants.%Convert.specific_fn]
|
||||
// CHECK:STDOUT: %bound_method.loc18_14.2: <bound method> = bound_method %int_2, %specific_fn.loc18 [concrete = constants.%bound_method.b92]
|
||||
// CHECK:STDOUT: %int.convert_checked.loc18: init %i32 = call %bound_method.loc18_14.2(%int_2) [concrete = constants.%int_2.ef8]
|
||||
// CHECK:STDOUT: %.loc18_14.1: %i32 = value_of_initializer %int.convert_checked.loc18 [concrete = constants.%int_2.ef8]
|
||||
// CHECK:STDOUT: %.loc18_14.2: %i32 = converted %int_2, %.loc18_14.1 [concrete = constants.%int_2.ef8]
|
||||
// CHECK:STDOUT: %print.int.loc18: init %empty_tuple.type = call %Print.ref.loc18(%.loc18_14.2)
|
||||
// CHECK:STDOUT: %impl.elem0.loc20: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956]
|
||||
// CHECK:STDOUT: %bound_method.loc20_14.1: <bound method> = bound_method %int_2, %impl.elem0.loc20 [concrete = constants.%Convert.bound.ef9]
|
||||
// CHECK:STDOUT: %specific_fn.loc20: <specific function> = specific_function %impl.elem0.loc20, @Convert.3(constants.%int_32) [concrete = constants.%Convert.specific_fn]
|
||||
// CHECK:STDOUT: %bound_method.loc20_14.2: <bound method> = bound_method %int_2, %specific_fn.loc20 [concrete = constants.%bound_method.b92]
|
||||
// CHECK:STDOUT: %int.convert_checked.loc20: init %i32 = call %bound_method.loc20_14.2(%int_2) [concrete = constants.%int_2.ef8]
|
||||
// CHECK:STDOUT: %.loc20_14.1: %i32 = value_of_initializer %int.convert_checked.loc20 [concrete = constants.%int_2.ef8]
|
||||
// CHECK:STDOUT: %.loc20_14.2: %i32 = converted %int_2, %.loc20_14.1 [concrete = constants.%int_2.ef8]
|
||||
// CHECK:STDOUT: %print.int.loc20: init %empty_tuple.type = call %Print.ref.loc20(%.loc20_14.2)
|
||||
// CHECK:STDOUT: <elided>
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
|
||||
@@ -2,6 +2,8 @@
|
||||
// Exceptions. See /LICENSE for license information.
|
||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
//
|
||||
// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/full.carbon
|
||||
//
|
||||
// AUTOUPDATE
|
||||
// TIP: To test this file alone, run:
|
||||
// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/builtins/read/char.carbon
|
||||
|
||||
+83
-82
@@ -2,6 +2,7 @@
|
||||
// Exceptions. See /LICENSE for license information.
|
||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
//
|
||||
// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/destroy.carbon
|
||||
// TODO: Add ranges and switch to "--dump-sem-ir-ranges=only".
|
||||
// EXTRA-ARGS: --dump-sem-ir-ranges=if-present
|
||||
//
|
||||
@@ -61,7 +62,7 @@ class Class(T:! type) {
|
||||
// CHECK:STDOUT: import Core//prelude
|
||||
// CHECK:STDOUT: import Core//prelude/...
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/destroy, Destroy, loaded [concrete = constants.%Destroy.type]
|
||||
// CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -73,19 +74,19 @@ class Class(T:! type) {
|
||||
// CHECK:STDOUT: %Class.decl: %Class.type = class_decl @Class [concrete = constants.%Class.generic] {
|
||||
// CHECK:STDOUT: %T.patt: %pattern_type.98f = symbolic_binding_pattern T, 0 [concrete]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %T.loc14_13.1: type = bind_symbolic_name T, 0 [symbolic = %T.loc14_13.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %T.loc15_13.1: type = bind_symbolic_name T, 0 [symbolic = %T.loc15_13.2 (constants.%T)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: generic class @Class(%T.loc14_13.1: type) {
|
||||
// CHECK:STDOUT: %T.loc14_13.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc14_13.2 (constants.%T)]
|
||||
// CHECK:STDOUT: generic class @Class(%T.loc15_13.1: type) {
|
||||
// CHECK:STDOUT: %T.loc15_13.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc15_13.2 (constants.%T)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %MakeSelf.type: type = fn_type @MakeSelf, @Class(%T.loc14_13.2) [symbolic = %MakeSelf.type (constants.%MakeSelf.type)]
|
||||
// CHECK:STDOUT: %MakeSelf.type: type = fn_type @MakeSelf, @Class(%T.loc15_13.2) [symbolic = %MakeSelf.type (constants.%MakeSelf.type)]
|
||||
// CHECK:STDOUT: %MakeSelf: @Class.%MakeSelf.type (%MakeSelf.type) = struct_value () [symbolic = %MakeSelf (constants.%MakeSelf)]
|
||||
// CHECK:STDOUT: %MakeClass.type: type = fn_type @MakeClass, @Class(%T.loc14_13.2) [symbolic = %MakeClass.type (constants.%MakeClass.type)]
|
||||
// CHECK:STDOUT: %MakeClass.type: type = fn_type @MakeClass, @Class(%T.loc15_13.2) [symbolic = %MakeClass.type (constants.%MakeClass.type)]
|
||||
// CHECK:STDOUT: %MakeClass: @Class.%MakeClass.type (%MakeClass.type) = struct_value () [symbolic = %MakeClass (constants.%MakeClass)]
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F, @Class(%T.loc14_13.2) [symbolic = %F.type (constants.%F.type)]
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F, @Class(%T.loc15_13.2) [symbolic = %F.type (constants.%F.type)]
|
||||
// CHECK:STDOUT: %F: @Class.%F.type (%F.type) = struct_value () [symbolic = %F (constants.%F)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class {
|
||||
@@ -93,8 +94,8 @@ class Class(T:! type) {
|
||||
// CHECK:STDOUT: %return.patt: @MakeSelf.%pattern_type (%pattern_type.3c1) = return_slot_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt: @MakeSelf.%pattern_type (%pattern_type.3c1) = out_param_pattern %return.patt, call_param0 [concrete]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %.loc17_20: type = specific_constant constants.%Class, @Class(constants.%T) [symbolic = %Class (constants.%Class)]
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, %.loc17_20 [symbolic = %Class (constants.%Class)]
|
||||
// CHECK:STDOUT: %.loc18_20: type = specific_constant constants.%Class, @Class(constants.%T) [symbolic = %Class (constants.%Class)]
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, %.loc18_20 [symbolic = %Class (constants.%Class)]
|
||||
// CHECK:STDOUT: %return.param: ref @MakeSelf.%Class (%Class) = out_param call_param0
|
||||
// CHECK:STDOUT: %return: ref @MakeSelf.%Class (%Class) = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
@@ -103,10 +104,10 @@ class Class(T:! type) {
|
||||
// CHECK:STDOUT: %return.param_patt: @MakeClass.%pattern_type (%pattern_type.3c1) = out_param_pattern %return.patt, call_param0 [concrete]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %Class.ref: %Class.type = name_ref Class, file.%Class.decl [concrete = constants.%Class.generic]
|
||||
// CHECK:STDOUT: %T.ref: type = name_ref T, @Class.%T.loc14_13.1 [symbolic = %T (constants.%T)]
|
||||
// CHECK:STDOUT: %Class.loc18_28.2: type = class_type @Class, @Class(constants.%T) [symbolic = %Class.loc18_28.1 (constants.%Class)]
|
||||
// CHECK:STDOUT: %return.param: ref @MakeClass.%Class.loc18_28.1 (%Class) = out_param call_param0
|
||||
// CHECK:STDOUT: %return: ref @MakeClass.%Class.loc18_28.1 (%Class) = return_slot %return.param
|
||||
// CHECK:STDOUT: %T.ref: type = name_ref T, @Class.%T.loc15_13.1 [symbolic = %T (constants.%T)]
|
||||
// CHECK:STDOUT: %Class.loc19_28.2: type = class_type @Class, @Class(constants.%T) [symbolic = %Class.loc19_28.1 (constants.%Class)]
|
||||
// CHECK:STDOUT: %return.param: ref @MakeClass.%Class.loc19_28.1 (%Class) = out_param call_param0
|
||||
// CHECK:STDOUT: %return: ref @MakeClass.%Class.loc19_28.1 (%Class) = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %F.decl: @Class.%F.type (%F.type) = fn_decl @F [symbolic = @Class.%F (constants.%F)] {} {}
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type]
|
||||
@@ -123,7 +124,7 @@ class Class(T:! type) {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: generic fn @MakeSelf(@Class.%T.loc14_13.1: type) {
|
||||
// CHECK:STDOUT: generic fn @MakeSelf(@Class.%T.loc15_13.1: type) {
|
||||
// CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)]
|
||||
// CHECK:STDOUT: %Class: type = class_type @Class, @Class(%T) [symbolic = %Class (constants.%Class)]
|
||||
// CHECK:STDOUT: %pattern_type: type = pattern_type %Class [symbolic = %pattern_type (constants.%pattern_type.3c1)]
|
||||
@@ -134,50 +135,50 @@ class Class(T:! type) {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn() -> %return.param: @MakeSelf.%Class (%Class) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %.loc17_35.1: %empty_struct_type = struct_literal ()
|
||||
// CHECK:STDOUT: %.loc17_35.2: init @MakeSelf.%Class (%Class) = class_init (), %return [symbolic = %Class.val (constants.%Class.val)]
|
||||
// CHECK:STDOUT: %.loc17_36: init @MakeSelf.%Class (%Class) = converted %.loc17_35.1, %.loc17_35.2 [symbolic = %Class.val (constants.%Class.val)]
|
||||
// CHECK:STDOUT: return %.loc17_36 to %return
|
||||
// CHECK:STDOUT: %.loc18_35.1: %empty_struct_type = struct_literal ()
|
||||
// CHECK:STDOUT: %.loc18_35.2: init @MakeSelf.%Class (%Class) = class_init (), %return [symbolic = %Class.val (constants.%Class.val)]
|
||||
// CHECK:STDOUT: %.loc18_36: init @MakeSelf.%Class (%Class) = converted %.loc18_35.1, %.loc18_35.2 [symbolic = %Class.val (constants.%Class.val)]
|
||||
// CHECK:STDOUT: return %.loc18_36 to %return
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: generic fn @MakeClass(@Class.%T.loc14_13.1: type) {
|
||||
// CHECK:STDOUT: generic fn @MakeClass(@Class.%T.loc15_13.1: type) {
|
||||
// CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)]
|
||||
// CHECK:STDOUT: %Class.loc18_28.1: type = class_type @Class, @Class(%T) [symbolic = %Class.loc18_28.1 (constants.%Class)]
|
||||
// CHECK:STDOUT: %pattern_type: type = pattern_type %Class.loc18_28.1 [symbolic = %pattern_type (constants.%pattern_type.3c1)]
|
||||
// CHECK:STDOUT: %Class.loc19_28.1: type = class_type @Class, @Class(%T) [symbolic = %Class.loc19_28.1 (constants.%Class)]
|
||||
// CHECK:STDOUT: %pattern_type: type = pattern_type %Class.loc19_28.1 [symbolic = %pattern_type (constants.%pattern_type.3c1)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete: <witness> = require_complete_type %Class.loc18_28.1 [symbolic = %require_complete (constants.%require_complete.4f8)]
|
||||
// CHECK:STDOUT: %Class.val: @MakeClass.%Class.loc18_28.1 (%Class) = struct_value () [symbolic = %Class.val (constants.%Class.val)]
|
||||
// CHECK:STDOUT: %require_complete: <witness> = require_complete_type %Class.loc19_28.1 [symbolic = %require_complete (constants.%require_complete.4f8)]
|
||||
// CHECK:STDOUT: %Class.val: @MakeClass.%Class.loc19_28.1 (%Class) = struct_value () [symbolic = %Class.val (constants.%Class.val)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn() -> %return.param: @MakeClass.%Class.loc18_28.1 (%Class) {
|
||||
// CHECK:STDOUT: fn() -> %return.param: @MakeClass.%Class.loc19_28.1 (%Class) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %.loc18_40.1: %empty_struct_type = struct_literal ()
|
||||
// CHECK:STDOUT: %.loc18_40.2: init @MakeClass.%Class.loc18_28.1 (%Class) = class_init (), %return [symbolic = %Class.val (constants.%Class.val)]
|
||||
// CHECK:STDOUT: %.loc18_41: init @MakeClass.%Class.loc18_28.1 (%Class) = converted %.loc18_40.1, %.loc18_40.2 [symbolic = %Class.val (constants.%Class.val)]
|
||||
// CHECK:STDOUT: return %.loc18_41 to %return
|
||||
// CHECK:STDOUT: %.loc19_40.1: %empty_struct_type = struct_literal ()
|
||||
// CHECK:STDOUT: %.loc19_40.2: init @MakeClass.%Class.loc19_28.1 (%Class) = class_init (), %return [symbolic = %Class.val (constants.%Class.val)]
|
||||
// CHECK:STDOUT: %.loc19_41: init @MakeClass.%Class.loc19_28.1 (%Class) = converted %.loc19_40.1, %.loc19_40.2 [symbolic = %Class.val (constants.%Class.val)]
|
||||
// CHECK:STDOUT: return %.loc19_41 to %return
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: generic fn @F(@Class.%T.loc14_13.1: type) {
|
||||
// CHECK:STDOUT: generic fn @F(@Class.%T.loc15_13.1: type) {
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)]
|
||||
// CHECK:STDOUT: %Class.loc20_19.2: type = class_type @Class, @Class(%T) [symbolic = %Class.loc20_19.2 (constants.%Class)]
|
||||
// CHECK:STDOUT: %require_complete.loc20: <witness> = require_complete_type %Class.loc20_19.2 [symbolic = %require_complete.loc20 (constants.%require_complete.4f8)]
|
||||
// CHECK:STDOUT: %pattern_type: type = pattern_type %Class.loc20_19.2 [symbolic = %pattern_type (constants.%pattern_type.3c1)]
|
||||
// CHECK:STDOUT: %Class.loc21_19.2: type = class_type @Class, @Class(%T) [symbolic = %Class.loc21_19.2 (constants.%Class)]
|
||||
// CHECK:STDOUT: %require_complete.loc21: <witness> = require_complete_type %Class.loc21_19.2 [symbolic = %require_complete.loc21 (constants.%require_complete.4f8)]
|
||||
// CHECK:STDOUT: %pattern_type: type = pattern_type %Class.loc21_19.2 [symbolic = %pattern_type (constants.%pattern_type.3c1)]
|
||||
// CHECK:STDOUT: %MakeSelf.type: type = fn_type @MakeSelf, @Class(%T) [symbolic = %MakeSelf.type (constants.%MakeSelf.type)]
|
||||
// CHECK:STDOUT: %MakeSelf: @F.%MakeSelf.type (%MakeSelf.type) = struct_value () [symbolic = %MakeSelf (constants.%MakeSelf)]
|
||||
// CHECK:STDOUT: %MakeSelf.specific_fn.loc20_23.2: <specific function> = specific_function %MakeSelf, @MakeSelf(%T) [symbolic = %MakeSelf.specific_fn.loc20_23.2 (constants.%MakeSelf.specific_fn)]
|
||||
// CHECK:STDOUT: %MakeSelf.specific_fn.loc21_23.2: <specific function> = specific_function %MakeSelf, @MakeSelf(%T) [symbolic = %MakeSelf.specific_fn.loc21_23.2 (constants.%MakeSelf.specific_fn)]
|
||||
// CHECK:STDOUT: %MakeClass.type: type = fn_type @MakeClass, @Class(%T) [symbolic = %MakeClass.type (constants.%MakeClass.type)]
|
||||
// CHECK:STDOUT: %MakeClass: @F.%MakeClass.type (%MakeClass.type) = struct_value () [symbolic = %MakeClass (constants.%MakeClass)]
|
||||
// CHECK:STDOUT: %MakeClass.specific_fn.loc21_19.2: <specific function> = specific_function %MakeClass, @MakeClass(%T) [symbolic = %MakeClass.specific_fn.loc21_19.2 (constants.%MakeClass.specific_fn)]
|
||||
// CHECK:STDOUT: %Destroy.lookup_impl_witness: <witness> = lookup_impl_witness %Class.loc20_19.2, @Destroy [symbolic = %Destroy.lookup_impl_witness (constants.%Destroy.lookup_impl_witness)]
|
||||
// CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %Class.loc20_19.2, (%Destroy.lookup_impl_witness) [symbolic = %Destroy.facet (constants.%Destroy.facet)]
|
||||
// CHECK:STDOUT: %.loc21_5.4: type = fn_type_with_self_type constants.%Op.type.bae, %Destroy.facet [symbolic = %.loc21_5.4 (constants.%.d76)]
|
||||
// CHECK:STDOUT: %impl.elem0.loc21_5.3: @F.%.loc21_5.4 (%.d76) = impl_witness_access %Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc21_5.3 (constants.%impl.elem0)]
|
||||
// CHECK:STDOUT: %specific_impl_fn.loc21_5.3: <specific function> = specific_impl_function %impl.elem0.loc21_5.3, @Op.1(%Destroy.facet) [symbolic = %specific_impl_fn.loc21_5.3 (constants.%specific_impl_fn)]
|
||||
// CHECK:STDOUT: %ptr: type = ptr_type %Class.loc20_19.2 [symbolic = %ptr (constants.%ptr.955)]
|
||||
// CHECK:STDOUT: %require_complete.loc21: <witness> = require_complete_type %ptr [symbolic = %require_complete.loc21 (constants.%require_complete.2ae)]
|
||||
// CHECK:STDOUT: %MakeClass.specific_fn.loc22_19.2: <specific function> = specific_function %MakeClass, @MakeClass(%T) [symbolic = %MakeClass.specific_fn.loc22_19.2 (constants.%MakeClass.specific_fn)]
|
||||
// CHECK:STDOUT: %Destroy.lookup_impl_witness: <witness> = lookup_impl_witness %Class.loc21_19.2, @Destroy [symbolic = %Destroy.lookup_impl_witness (constants.%Destroy.lookup_impl_witness)]
|
||||
// CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %Class.loc21_19.2, (%Destroy.lookup_impl_witness) [symbolic = %Destroy.facet (constants.%Destroy.facet)]
|
||||
// CHECK:STDOUT: %.loc22_5.4: type = fn_type_with_self_type constants.%Op.type.bae, %Destroy.facet [symbolic = %.loc22_5.4 (constants.%.d76)]
|
||||
// CHECK:STDOUT: %impl.elem0.loc22_5.3: @F.%.loc22_5.4 (%.d76) = impl_witness_access %Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc22_5.3 (constants.%impl.elem0)]
|
||||
// CHECK:STDOUT: %specific_impl_fn.loc22_5.3: <specific function> = specific_impl_function %impl.elem0.loc22_5.3, @Op.1(%Destroy.facet) [symbolic = %specific_impl_fn.loc22_5.3 (constants.%specific_impl_fn)]
|
||||
// CHECK:STDOUT: %ptr: type = ptr_type %Class.loc21_19.2 [symbolic = %ptr (constants.%ptr.955)]
|
||||
// CHECK:STDOUT: %require_complete.loc22: <witness> = require_complete_type %ptr [symbolic = %require_complete.loc22 (constants.%require_complete.2ae)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn() {
|
||||
// CHECK:STDOUT: !entry:
|
||||
@@ -185,65 +186,65 @@ class Class(T:! type) {
|
||||
// CHECK:STDOUT: %c.patt: @F.%pattern_type (%pattern_type.3c1) = binding_pattern c [concrete]
|
||||
// CHECK:STDOUT: %c.var_patt: @F.%pattern_type (%pattern_type.3c1) = var_pattern %c.patt [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %c.var: ref @F.%Class.loc20_19.2 (%Class) = var %c.var_patt
|
||||
// CHECK:STDOUT: %.loc20_23: @F.%MakeSelf.type (%MakeSelf.type) = specific_constant @Class.%MakeSelf.decl, @Class(constants.%T) [symbolic = %MakeSelf (constants.%MakeSelf)]
|
||||
// CHECK:STDOUT: %MakeSelf.ref: @F.%MakeSelf.type (%MakeSelf.type) = name_ref MakeSelf, %.loc20_23 [symbolic = %MakeSelf (constants.%MakeSelf)]
|
||||
// CHECK:STDOUT: %MakeSelf.specific_fn.loc20_23.1: <specific function> = specific_function %MakeSelf.ref, @MakeSelf(constants.%T) [symbolic = %MakeSelf.specific_fn.loc20_23.2 (constants.%MakeSelf.specific_fn)]
|
||||
// CHECK:STDOUT: %.loc20_5.1: ref @F.%Class.loc20_19.2 (%Class) = splice_block %c.var {}
|
||||
// CHECK:STDOUT: %MakeSelf.call: init @F.%Class.loc20_19.2 (%Class) = call %MakeSelf.specific_fn.loc20_23.1() to %.loc20_5.1
|
||||
// CHECK:STDOUT: %c.var: ref @F.%Class.loc21_19.2 (%Class) = var %c.var_patt
|
||||
// CHECK:STDOUT: %.loc21_23: @F.%MakeSelf.type (%MakeSelf.type) = specific_constant @Class.%MakeSelf.decl, @Class(constants.%T) [symbolic = %MakeSelf (constants.%MakeSelf)]
|
||||
// CHECK:STDOUT: %MakeSelf.ref: @F.%MakeSelf.type (%MakeSelf.type) = name_ref MakeSelf, %.loc21_23 [symbolic = %MakeSelf (constants.%MakeSelf)]
|
||||
// CHECK:STDOUT: %MakeSelf.specific_fn.loc21_23.1: <specific function> = specific_function %MakeSelf.ref, @MakeSelf(constants.%T) [symbolic = %MakeSelf.specific_fn.loc21_23.2 (constants.%MakeSelf.specific_fn)]
|
||||
// CHECK:STDOUT: %.loc21_5.1: ref @F.%Class.loc21_19.2 (%Class) = splice_block %c.var {}
|
||||
// CHECK:STDOUT: %MakeSelf.call: init @F.%Class.loc21_19.2 (%Class) = call %MakeSelf.specific_fn.loc21_23.1() to %.loc21_5.1
|
||||
// CHECK:STDOUT: assign %c.var, %MakeSelf.call
|
||||
// CHECK:STDOUT: %.loc20_19: type = splice_block %Class.loc20_19.1 [symbolic = %Class.loc20_19.2 (constants.%Class)] {
|
||||
// CHECK:STDOUT: %.loc21_19: type = splice_block %Class.loc21_19.1 [symbolic = %Class.loc21_19.2 (constants.%Class)] {
|
||||
// CHECK:STDOUT: %Class.ref: %Class.type = name_ref Class, file.%Class.decl [concrete = constants.%Class.generic]
|
||||
// CHECK:STDOUT: %T.ref: type = name_ref T, @Class.%T.loc14_13.1 [symbolic = %T (constants.%T)]
|
||||
// CHECK:STDOUT: %Class.loc20_19.1: type = class_type @Class, @Class(constants.%T) [symbolic = %Class.loc20_19.2 (constants.%Class)]
|
||||
// CHECK:STDOUT: %T.ref: type = name_ref T, @Class.%T.loc15_13.1 [symbolic = %T (constants.%T)]
|
||||
// CHECK:STDOUT: %Class.loc21_19.1: type = class_type @Class, @Class(constants.%T) [symbolic = %Class.loc21_19.2 (constants.%Class)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %c: ref @F.%Class.loc20_19.2 (%Class) = bind_name c, %c.var
|
||||
// CHECK:STDOUT: %c: ref @F.%Class.loc21_19.2 (%Class) = bind_name c, %c.var
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %s.patt: @F.%pattern_type (%pattern_type.3c1) = binding_pattern s [concrete]
|
||||
// CHECK:STDOUT: %s.var_patt: @F.%pattern_type (%pattern_type.3c1) = var_pattern %s.patt [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %s.var: ref @F.%Class.loc20_19.2 (%Class) = var %s.var_patt
|
||||
// CHECK:STDOUT: %.loc21_19: @F.%MakeClass.type (%MakeClass.type) = specific_constant @Class.%MakeClass.decl, @Class(constants.%T) [symbolic = %MakeClass (constants.%MakeClass)]
|
||||
// CHECK:STDOUT: %MakeClass.ref: @F.%MakeClass.type (%MakeClass.type) = name_ref MakeClass, %.loc21_19 [symbolic = %MakeClass (constants.%MakeClass)]
|
||||
// CHECK:STDOUT: %MakeClass.specific_fn.loc21_19.1: <specific function> = specific_function %MakeClass.ref, @MakeClass(constants.%T) [symbolic = %MakeClass.specific_fn.loc21_19.2 (constants.%MakeClass.specific_fn)]
|
||||
// CHECK:STDOUT: %.loc21_5.1: ref @F.%Class.loc20_19.2 (%Class) = splice_block %s.var {}
|
||||
// CHECK:STDOUT: %MakeClass.call: init @F.%Class.loc20_19.2 (%Class) = call %MakeClass.specific_fn.loc21_19.1() to %.loc21_5.1
|
||||
// CHECK:STDOUT: %s.var: ref @F.%Class.loc21_19.2 (%Class) = var %s.var_patt
|
||||
// CHECK:STDOUT: %.loc22_19: @F.%MakeClass.type (%MakeClass.type) = specific_constant @Class.%MakeClass.decl, @Class(constants.%T) [symbolic = %MakeClass (constants.%MakeClass)]
|
||||
// CHECK:STDOUT: %MakeClass.ref: @F.%MakeClass.type (%MakeClass.type) = name_ref MakeClass, %.loc22_19 [symbolic = %MakeClass (constants.%MakeClass)]
|
||||
// CHECK:STDOUT: %MakeClass.specific_fn.loc22_19.1: <specific function> = specific_function %MakeClass.ref, @MakeClass(constants.%T) [symbolic = %MakeClass.specific_fn.loc22_19.2 (constants.%MakeClass.specific_fn)]
|
||||
// CHECK:STDOUT: %.loc22_5.1: ref @F.%Class.loc21_19.2 (%Class) = splice_block %s.var {}
|
||||
// CHECK:STDOUT: %MakeClass.call: init @F.%Class.loc21_19.2 (%Class) = call %MakeClass.specific_fn.loc22_19.1() to %.loc22_5.1
|
||||
// CHECK:STDOUT: assign %s.var, %MakeClass.call
|
||||
// CHECK:STDOUT: %.loc21_12.1: type = splice_block %Self.ref [symbolic = %Class.loc20_19.2 (constants.%Class)] {
|
||||
// CHECK:STDOUT: %.loc21_12.2: type = specific_constant constants.%Class, @Class(constants.%T) [symbolic = %Class.loc20_19.2 (constants.%Class)]
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, %.loc21_12.2 [symbolic = %Class.loc20_19.2 (constants.%Class)]
|
||||
// CHECK:STDOUT: %.loc22_12.1: type = splice_block %Self.ref [symbolic = %Class.loc21_19.2 (constants.%Class)] {
|
||||
// CHECK:STDOUT: %.loc22_12.2: type = specific_constant constants.%Class, @Class(constants.%T) [symbolic = %Class.loc21_19.2 (constants.%Class)]
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, %.loc22_12.2 [symbolic = %Class.loc21_19.2 (constants.%Class)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %s: ref @F.%Class.loc20_19.2 (%Class) = bind_name s, %s.var
|
||||
// CHECK:STDOUT: %impl.elem0.loc21_5.1: @F.%.loc21_5.4 (%.d76) = impl_witness_access constants.%Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc21_5.3 (constants.%impl.elem0)]
|
||||
// CHECK:STDOUT: %s: ref @F.%Class.loc21_19.2 (%Class) = bind_name s, %s.var
|
||||
// CHECK:STDOUT: %impl.elem0.loc22_5.1: @F.%.loc22_5.4 (%.d76) = impl_witness_access constants.%Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc22_5.3 (constants.%impl.elem0)]
|
||||
// CHECK:STDOUT: %bound_method.loc22_5.1: <bound method> = bound_method %.loc22_5.1, %impl.elem0.loc22_5.1
|
||||
// CHECK:STDOUT: %specific_impl_fn.loc22_5.1: <specific function> = specific_impl_function %impl.elem0.loc22_5.1, @Op.1(constants.%Destroy.facet) [symbolic = %specific_impl_fn.loc22_5.3 (constants.%specific_impl_fn)]
|
||||
// CHECK:STDOUT: %bound_method.loc22_5.2: <bound method> = bound_method %.loc22_5.1, %specific_impl_fn.loc22_5.1
|
||||
// CHECK:STDOUT: %addr.loc22_5.1: @F.%ptr (%ptr.955) = addr_of %.loc22_5.1
|
||||
// CHECK:STDOUT: %.loc22_5.2: init %empty_tuple.type = call %bound_method.loc22_5.2(%addr.loc22_5.1)
|
||||
// CHECK:STDOUT: %impl.elem0.loc22_5.2: @F.%.loc22_5.4 (%.d76) = impl_witness_access constants.%Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc22_5.3 (constants.%impl.elem0)]
|
||||
// CHECK:STDOUT: %bound_method.loc22_5.3: <bound method> = bound_method %s.var, %impl.elem0.loc22_5.2
|
||||
// CHECK:STDOUT: %specific_impl_fn.loc22_5.2: <specific function> = specific_impl_function %impl.elem0.loc22_5.2, @Op.1(constants.%Destroy.facet) [symbolic = %specific_impl_fn.loc22_5.3 (constants.%specific_impl_fn)]
|
||||
// CHECK:STDOUT: %bound_method.loc22_5.4: <bound method> = bound_method %s.var, %specific_impl_fn.loc22_5.2
|
||||
// CHECK:STDOUT: %addr.loc22_5.2: @F.%ptr (%ptr.955) = addr_of %s.var
|
||||
// CHECK:STDOUT: %.loc22_5.3: init %empty_tuple.type = call %bound_method.loc22_5.4(%addr.loc22_5.2)
|
||||
// CHECK:STDOUT: %impl.elem0.loc21_5.1: @F.%.loc22_5.4 (%.d76) = impl_witness_access constants.%Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc22_5.3 (constants.%impl.elem0)]
|
||||
// CHECK:STDOUT: %bound_method.loc21_5.1: <bound method> = bound_method %.loc21_5.1, %impl.elem0.loc21_5.1
|
||||
// CHECK:STDOUT: %specific_impl_fn.loc21_5.1: <specific function> = specific_impl_function %impl.elem0.loc21_5.1, @Op.1(constants.%Destroy.facet) [symbolic = %specific_impl_fn.loc21_5.3 (constants.%specific_impl_fn)]
|
||||
// CHECK:STDOUT: %specific_impl_fn.loc21_5.1: <specific function> = specific_impl_function %impl.elem0.loc21_5.1, @Op.1(constants.%Destroy.facet) [symbolic = %specific_impl_fn.loc22_5.3 (constants.%specific_impl_fn)]
|
||||
// CHECK:STDOUT: %bound_method.loc21_5.2: <bound method> = bound_method %.loc21_5.1, %specific_impl_fn.loc21_5.1
|
||||
// CHECK:STDOUT: %addr.loc21_5.1: @F.%ptr (%ptr.955) = addr_of %.loc21_5.1
|
||||
// CHECK:STDOUT: %.loc21_5.2: init %empty_tuple.type = call %bound_method.loc21_5.2(%addr.loc21_5.1)
|
||||
// CHECK:STDOUT: %impl.elem0.loc21_5.2: @F.%.loc21_5.4 (%.d76) = impl_witness_access constants.%Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc21_5.3 (constants.%impl.elem0)]
|
||||
// CHECK:STDOUT: %bound_method.loc21_5.3: <bound method> = bound_method %s.var, %impl.elem0.loc21_5.2
|
||||
// CHECK:STDOUT: %specific_impl_fn.loc21_5.2: <specific function> = specific_impl_function %impl.elem0.loc21_5.2, @Op.1(constants.%Destroy.facet) [symbolic = %specific_impl_fn.loc21_5.3 (constants.%specific_impl_fn)]
|
||||
// CHECK:STDOUT: %bound_method.loc21_5.4: <bound method> = bound_method %s.var, %specific_impl_fn.loc21_5.2
|
||||
// CHECK:STDOUT: %addr.loc21_5.2: @F.%ptr (%ptr.955) = addr_of %s.var
|
||||
// CHECK:STDOUT: %impl.elem0.loc21_5.2: @F.%.loc22_5.4 (%.d76) = impl_witness_access constants.%Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc22_5.3 (constants.%impl.elem0)]
|
||||
// CHECK:STDOUT: %bound_method.loc21_5.3: <bound method> = bound_method %c.var, %impl.elem0.loc21_5.2
|
||||
// CHECK:STDOUT: %specific_impl_fn.loc21_5.2: <specific function> = specific_impl_function %impl.elem0.loc21_5.2, @Op.1(constants.%Destroy.facet) [symbolic = %specific_impl_fn.loc22_5.3 (constants.%specific_impl_fn)]
|
||||
// CHECK:STDOUT: %bound_method.loc21_5.4: <bound method> = bound_method %c.var, %specific_impl_fn.loc21_5.2
|
||||
// CHECK:STDOUT: %addr.loc21_5.2: @F.%ptr (%ptr.955) = addr_of %c.var
|
||||
// CHECK:STDOUT: %.loc21_5.3: init %empty_tuple.type = call %bound_method.loc21_5.4(%addr.loc21_5.2)
|
||||
// CHECK:STDOUT: %impl.elem0.loc20_5.1: @F.%.loc21_5.4 (%.d76) = impl_witness_access constants.%Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc21_5.3 (constants.%impl.elem0)]
|
||||
// CHECK:STDOUT: %bound_method.loc20_5.1: <bound method> = bound_method %.loc20_5.1, %impl.elem0.loc20_5.1
|
||||
// CHECK:STDOUT: %specific_impl_fn.loc20_5.1: <specific function> = specific_impl_function %impl.elem0.loc20_5.1, @Op.1(constants.%Destroy.facet) [symbolic = %specific_impl_fn.loc21_5.3 (constants.%specific_impl_fn)]
|
||||
// CHECK:STDOUT: %bound_method.loc20_5.2: <bound method> = bound_method %.loc20_5.1, %specific_impl_fn.loc20_5.1
|
||||
// CHECK:STDOUT: %addr.loc20_5.1: @F.%ptr (%ptr.955) = addr_of %.loc20_5.1
|
||||
// CHECK:STDOUT: %.loc20_5.2: init %empty_tuple.type = call %bound_method.loc20_5.2(%addr.loc20_5.1)
|
||||
// CHECK:STDOUT: %impl.elem0.loc20_5.2: @F.%.loc21_5.4 (%.d76) = impl_witness_access constants.%Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc21_5.3 (constants.%impl.elem0)]
|
||||
// CHECK:STDOUT: %bound_method.loc20_5.3: <bound method> = bound_method %c.var, %impl.elem0.loc20_5.2
|
||||
// CHECK:STDOUT: %specific_impl_fn.loc20_5.2: <specific function> = specific_impl_function %impl.elem0.loc20_5.2, @Op.1(constants.%Destroy.facet) [symbolic = %specific_impl_fn.loc21_5.3 (constants.%specific_impl_fn)]
|
||||
// CHECK:STDOUT: %bound_method.loc20_5.4: <bound method> = bound_method %c.var, %specific_impl_fn.loc20_5.2
|
||||
// CHECK:STDOUT: %addr.loc20_5.2: @F.%ptr (%ptr.955) = addr_of %c.var
|
||||
// CHECK:STDOUT: %.loc20_5.3: init %empty_tuple.type = call %bound_method.loc20_5.4(%addr.loc20_5.2)
|
||||
// CHECK:STDOUT: return
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @Class(constants.%T) {
|
||||
// CHECK:STDOUT: %T.loc14_13.2 => constants.%T
|
||||
// CHECK:STDOUT: %T.loc15_13.2 => constants.%T
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %MakeSelf.type => constants.%MakeSelf.type
|
||||
@@ -266,7 +267,7 @@ class Class(T:! type) {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @MakeClass(constants.%T) {
|
||||
// CHECK:STDOUT: %T => constants.%T
|
||||
// CHECK:STDOUT: %Class.loc18_28.1 => constants.%Class
|
||||
// CHECK:STDOUT: %Class.loc19_28.1 => constants.%Class
|
||||
// CHECK:STDOUT: %pattern_type => constants.%pattern_type.3c1
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
|
||||
@@ -2,6 +2,8 @@
|
||||
// Exceptions. See /LICENSE for license information.
|
||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
//
|
||||
// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/full.carbon
|
||||
//
|
||||
// AUTOUPDATE
|
||||
// TIP: To test this file alone, run:
|
||||
// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/facet/aggregate_through_access.carbon
|
||||
|
||||
+1
@@ -2,6 +2,7 @@
|
||||
// Exceptions. See /LICENSE for license information.
|
||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
//
|
||||
// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/full.carbon
|
||||
// EXTRA-ARGS: --dump-sem-ir-ranges=if-present
|
||||
//
|
||||
// AUTOUPDATE
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
// Exceptions. See /LICENSE for license information.
|
||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
//
|
||||
// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/full.carbon
|
||||
// TODO: Add ranges and switch to "--dump-sem-ir-ranges=only".
|
||||
// EXTRA-ARGS: --dump-sem-ir-ranges=if-present
|
||||
//
|
||||
@@ -67,7 +68,7 @@ fn Run() {
|
||||
// CHECK:STDOUT: %x.var: ref %i32 = var %x.var_patt
|
||||
// CHECK:STDOUT: %str: String = string_literal "hello" [concrete = constants.%str]
|
||||
// CHECK:STDOUT: assign %x.var, <error>
|
||||
// CHECK:STDOUT: %.loc19: type = splice_block %i32 [concrete = constants.%i32] {
|
||||
// CHECK:STDOUT: %.loc20: type = splice_block %i32 [concrete = constants.%i32] {
|
||||
// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: }
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
// Exceptions. See /LICENSE for license information.
|
||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
//
|
||||
// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/full.carbon
|
||||
// TODO: Add ranges and switch to "--dump-sem-ir-ranges=only".
|
||||
// EXTRA-ARGS: --dump-sem-ir-ranges=if-present
|
||||
//
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
// Exceptions. See /LICENSE for license information.
|
||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
//
|
||||
// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/full.carbon
|
||||
// TODO: Add ranges and switch to "--dump-sem-ir-ranges=only".
|
||||
// EXTRA-ARGS: --dump-sem-ir-ranges=if-present
|
||||
//
|
||||
|
||||
+2
-1
@@ -2,6 +2,7 @@
|
||||
// Exceptions. See /LICENSE for license information.
|
||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
//
|
||||
// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/convert.carbon
|
||||
// TODO: Add ranges and switch to "--dump-sem-ir-ranges=only".
|
||||
// EXTRA-ARGS: --dump-sem-ir-ranges=if-present
|
||||
//
|
||||
@@ -314,7 +315,7 @@ fn Call() {
|
||||
// CHECK:STDOUT: %Main.import_ref.f50: type = import_ref Main//c, loc7_11, loaded [concrete = constants.%I.type]
|
||||
// CHECK:STDOUT: %Main.import_ref.742: %F.type.5d6 = import_ref Main//c, loc7_34, loaded [concrete = constants.%F.a2e]
|
||||
// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (%Main.import_ref.742), @I.impl [concrete]
|
||||
// CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/destroy, Destroy, loaded [concrete = constants.%Destroy.type]
|
||||
// CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
|
||||
+26
-24
@@ -5,6 +5,8 @@
|
||||
// TODO: Add ranges and switch to "--dump-sem-ir-ranges=only".
|
||||
// EXTRA-ARGS: --dump-sem-ir-ranges=if-present
|
||||
//
|
||||
// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/full.carbon
|
||||
//
|
||||
// AUTOUPDATE
|
||||
// TIP: To test this file alone, run:
|
||||
// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/index/fail_invalid_base.carbon
|
||||
@@ -85,9 +87,9 @@ var d: i32 = {.a: i32, .b: i32}[0];
|
||||
// CHECK:STDOUT: %a.var_patt: %pattern_type.7ce = var_pattern %a.patt [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %a.var: ref %i32 = var %a.var_patt [concrete]
|
||||
// CHECK:STDOUT: %.loc19: type = splice_block %i32.loc19 [concrete = constants.%i32] {
|
||||
// CHECK:STDOUT: %int_32.loc19: Core.IntLiteral = int_value 32 [concrete = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32.loc19: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: %.loc21: type = splice_block %i32.loc21 [concrete = constants.%i32] {
|
||||
// CHECK:STDOUT: %int_32.loc21: Core.IntLiteral = int_value 32 [concrete = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32.loc21: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %a: ref %i32 = bind_name a, %a.var [concrete = %a.var]
|
||||
// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {} {}
|
||||
@@ -96,9 +98,9 @@ var d: i32 = {.a: i32, .b: i32}[0];
|
||||
// CHECK:STDOUT: %b.var_patt: %pattern_type.7ce = var_pattern %b.patt [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %b.var: ref %i32 = var %b.var_patt [concrete]
|
||||
// CHECK:STDOUT: %.loc26: type = splice_block %i32.loc26 [concrete = constants.%i32] {
|
||||
// CHECK:STDOUT: %int_32.loc26: Core.IntLiteral = int_value 32 [concrete = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32.loc26: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: %.loc28: type = splice_block %i32.loc28 [concrete = constants.%i32] {
|
||||
// CHECK:STDOUT: %int_32.loc28: Core.IntLiteral = int_value 32 [concrete = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32.loc28: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %b: ref %i32 = bind_name b, %b.var [concrete = %b.var]
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
@@ -106,9 +108,9 @@ var d: i32 = {.a: i32, .b: i32}[0];
|
||||
// CHECK:STDOUT: %c.var_patt: %pattern_type.7ce = var_pattern %c.patt [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %c.var: ref %i32 = var %c.var_patt [concrete]
|
||||
// CHECK:STDOUT: %.loc32: type = splice_block %i32.loc32 [concrete = constants.%i32] {
|
||||
// CHECK:STDOUT: %int_32.loc32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32.loc32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: %.loc34: type = splice_block %i32.loc34 [concrete = constants.%i32] {
|
||||
// CHECK:STDOUT: %int_32.loc34: Core.IntLiteral = int_value 32 [concrete = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32.loc34: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %c: ref %i32 = bind_name c, %c.var [concrete = %c.var]
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
@@ -116,9 +118,9 @@ var d: i32 = {.a: i32, .b: i32}[0];
|
||||
// CHECK:STDOUT: %d.var_patt: %pattern_type.7ce = var_pattern %d.patt [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %d.var: ref %i32 = var %d.var_patt [concrete]
|
||||
// CHECK:STDOUT: %.loc38: type = splice_block %i32.loc38 [concrete = constants.%i32] {
|
||||
// CHECK:STDOUT: %int_32.loc38: Core.IntLiteral = int_value 32 [concrete = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32.loc38: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: %.loc40: type = splice_block %i32.loc40 [concrete = constants.%i32] {
|
||||
// CHECK:STDOUT: %int_32.loc40: Core.IntLiteral = int_value 32 [concrete = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32.loc40: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %d: ref %i32 = bind_name d, %d.var [concrete = %d.var]
|
||||
// CHECK:STDOUT: }
|
||||
@@ -128,24 +130,24 @@ var d: i32 = {.a: i32, .b: i32}[0];
|
||||
// CHECK:STDOUT: fn @__global_init() {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %N.ref: <namespace> = name_ref N, file.%N [concrete = file.%N]
|
||||
// CHECK:STDOUT: %int_0.loc19: Core.IntLiteral = int_value 0 [concrete = constants.%int_0]
|
||||
// CHECK:STDOUT: %int_0.loc21: Core.IntLiteral = int_value 0 [concrete = constants.%int_0]
|
||||
// CHECK:STDOUT: assign file.%a.var, <error>
|
||||
// CHECK:STDOUT: %F.ref: %F.type = name_ref F, file.%F.decl [concrete = constants.%F]
|
||||
// CHECK:STDOUT: %int_1.loc26: Core.IntLiteral = int_value 1 [concrete = constants.%int_1]
|
||||
// CHECK:STDOUT: %int_1.loc28: Core.IntLiteral = int_value 1 [concrete = constants.%int_1]
|
||||
// CHECK:STDOUT: assign file.%b.var, <error>
|
||||
// CHECK:STDOUT: %int_1.loc32: Core.IntLiteral = int_value 1 [concrete = constants.%int_1]
|
||||
// CHECK:STDOUT: %int_1.loc34: Core.IntLiteral = int_value 1 [concrete = constants.%int_1]
|
||||
// CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete = constants.%int_2]
|
||||
// CHECK:STDOUT: %.loc32_29.1: %struct_type.a.b.cfd = struct_literal (%int_1.loc32, %int_2)
|
||||
// CHECK:STDOUT: %int_0.loc32: Core.IntLiteral = int_value 0 [concrete = constants.%int_0]
|
||||
// CHECK:STDOUT: %struct: %struct_type.a.b.cfd = struct_value (%int_1.loc32, %int_2) [concrete = constants.%struct]
|
||||
// CHECK:STDOUT: %.loc32_29.2: %struct_type.a.b.cfd = converted %.loc32_29.1, %struct [concrete = constants.%struct]
|
||||
// CHECK:STDOUT: %.loc34_29.1: %struct_type.a.b.cfd = struct_literal (%int_1.loc34, %int_2)
|
||||
// CHECK:STDOUT: %int_0.loc34: Core.IntLiteral = int_value 0 [concrete = constants.%int_0]
|
||||
// CHECK:STDOUT: %struct: %struct_type.a.b.cfd = struct_value (%int_1.loc34, %int_2) [concrete = constants.%struct]
|
||||
// CHECK:STDOUT: %.loc34_29.2: %struct_type.a.b.cfd = converted %.loc34_29.1, %struct [concrete = constants.%struct]
|
||||
// CHECK:STDOUT: assign file.%c.var, <error>
|
||||
// CHECK:STDOUT: %int_32.loc38_19: Core.IntLiteral = int_value 32 [concrete = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32.loc38_19: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: %int_32.loc38_28: Core.IntLiteral = int_value 32 [concrete = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32.loc38_28: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: %int_32.loc40_19: Core.IntLiteral = int_value 32 [concrete = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32.loc40_19: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: %int_32.loc40_28: Core.IntLiteral = int_value 32 [concrete = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32.loc40_28: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: %struct_type.a.b: type = struct_type {.a: %i32, .b: %i32} [concrete = constants.%struct_type.a.b.501]
|
||||
// CHECK:STDOUT: %int_0.loc38: Core.IntLiteral = int_value 0 [concrete = constants.%int_0]
|
||||
// CHECK:STDOUT: %int_0.loc40: Core.IntLiteral = int_value 0 [concrete = constants.%int_0]
|
||||
// CHECK:STDOUT: assign file.%d.var, <error>
|
||||
// CHECK:STDOUT: return
|
||||
// CHECK:STDOUT: }
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
// Exceptions. See /LICENSE for license information.
|
||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
//
|
||||
// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/full.carbon
|
||||
// TODO: Add ranges and switch to "--dump-sem-ir-ranges=only".
|
||||
// EXTRA-ARGS: --dump-sem-ir-ranges=if-present
|
||||
//
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
// Exceptions. See /LICENSE for license information.
|
||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
//
|
||||
// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/none.carbon
|
||||
// ARGS: --include-diagnostic-kind --fuzzing compile --no-prelude-import --dump-sem-ir-ranges=only --phase=check %s
|
||||
//
|
||||
// AUTOUPDATE
|
||||
|
||||
@@ -2,6 +2,8 @@
|
||||
// Exceptions. See /LICENSE for license information.
|
||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
//
|
||||
// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/full.carbon
|
||||
//
|
||||
// AUTOUPDATE
|
||||
// TIP: To test this file alone, run:
|
||||
// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/operators/builtin/bit_and.carbon
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
// Exceptions. See /LICENSE for license information.
|
||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
//
|
||||
// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/bool.carbon
|
||||
// TODO: Add ranges and switch to "--dump-sem-ir-ranges=only".
|
||||
// EXTRA-ARGS: --dump-sem-ir-ranges=if-present
|
||||
//
|
||||
@@ -49,9 +50,9 @@ fn Main() {
|
||||
// CHECK:STDOUT: import Core//prelude
|
||||
// CHECK:STDOUT: import Core//prelude/...
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Core.Bool: %Bool.type = import_ref Core//prelude/types/bool, Bool, loaded [concrete = constants.%Bool]
|
||||
// CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/operators/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic]
|
||||
// CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/destroy, Destroy, loaded [concrete = constants.%Destroy.type]
|
||||
// CHECK:STDOUT: %Core.Bool: %Bool.type = import_ref Core//prelude/parts/bool, Bool, loaded [concrete = constants.%Bool]
|
||||
// CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic]
|
||||
// CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -71,13 +72,13 @@ fn Main() {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %x.var: ref bool = var %x.var_patt
|
||||
// CHECK:STDOUT: %int_12: Core.IntLiteral = int_value 12 [concrete = constants.%int_12]
|
||||
// CHECK:STDOUT: %.loc22_17.1: bool = converted %int_12, <error> [concrete = <error>]
|
||||
// CHECK:STDOUT: %.loc22_17.2: <error> = not <error> [concrete = <error>]
|
||||
// CHECK:STDOUT: %.loc23_17.1: bool = converted %int_12, <error> [concrete = <error>]
|
||||
// CHECK:STDOUT: %.loc23_17.2: <error> = not <error> [concrete = <error>]
|
||||
// CHECK:STDOUT: assign %x.var, <error>
|
||||
// CHECK:STDOUT: %.loc22_10.1: type = splice_block %.loc22_10.3 [concrete = bool] {
|
||||
// CHECK:STDOUT: %.loc23_10.1: type = splice_block %.loc23_10.3 [concrete = bool] {
|
||||
// CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [concrete = bool]
|
||||
// CHECK:STDOUT: %.loc22_10.2: type = value_of_initializer %bool.make_type [concrete = bool]
|
||||
// CHECK:STDOUT: %.loc22_10.3: type = converted %bool.make_type, %.loc22_10.2 [concrete = bool]
|
||||
// CHECK:STDOUT: %.loc23_10.2: type = value_of_initializer %bool.make_type [concrete = bool]
|
||||
// CHECK:STDOUT: %.loc23_10.3: type = converted %bool.make_type, %.loc23_10.2 [concrete = bool]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %x: ref bool = bind_name x, %x.var
|
||||
// CHECK:STDOUT: %Op.bound: <bound method> = bound_method %x.var, constants.%Op.8b7
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
// Exceptions. See /LICENSE for license information.
|
||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
//
|
||||
// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/full.carbon
|
||||
// TODO: Add ranges and switch to "--dump-sem-ir-ranges=only".
|
||||
// EXTRA-ARGS: --dump-sem-ir-ranges=if-present
|
||||
//
|
||||
@@ -68,7 +69,7 @@ fn Main() -> i32 {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @Main() -> %i32 {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %.loc21: %empty_struct_type = struct_literal ()
|
||||
// CHECK:STDOUT: %.loc22: %empty_struct_type = struct_literal ()
|
||||
// CHECK:STDOUT: %float: f64 = float_literal 3.4000000000000004 [concrete = constants.%float]
|
||||
// CHECK:STDOUT: %int_12: Core.IntLiteral = int_value 12 [concrete = constants.%int_12]
|
||||
// CHECK:STDOUT: %impl.elem1: <error> = impl_witness_access <error>, element1 [concrete = <error>]
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
// Exceptions. See /LICENSE for license information.
|
||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
//
|
||||
// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/full.carbon
|
||||
// TODO: Add ranges and switch to "--dump-sem-ir-ranges=only".
|
||||
// EXTRA-ARGS: --dump-sem-ir-ranges=if-present
|
||||
//
|
||||
@@ -65,7 +66,7 @@ fn Main() -> i32 {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @Main() -> %i32 {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %.loc19: %empty_struct_type = struct_literal ()
|
||||
// CHECK:STDOUT: %.loc20: %empty_struct_type = struct_literal ()
|
||||
// CHECK:STDOUT: %int_34: Core.IntLiteral = int_value 34 [concrete = constants.%int_34]
|
||||
// CHECK:STDOUT: return <error>
|
||||
// CHECK:STDOUT: }
|
||||
|
||||
+150
-149
@@ -2,6 +2,7 @@
|
||||
// Exceptions. See /LICENSE for license information.
|
||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
//
|
||||
// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/bool.carbon
|
||||
// TODO: Add ranges and switch to "--dump-sem-ir-ranges=only".
|
||||
// EXTRA-ARGS: --dump-sem-ir-ranges=if-present
|
||||
//
|
||||
@@ -68,8 +69,8 @@ fn PartialConstant(x: bool) {
|
||||
// CHECK:STDOUT: import Core//prelude
|
||||
// CHECK:STDOUT: import Core//prelude/...
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Core.Bool: %Bool.type = import_ref Core//prelude/types/bool, Bool, loaded [concrete = constants.%Bool]
|
||||
// CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/destroy, Destroy, loaded [concrete = constants.%Destroy.type]
|
||||
// CHECK:STDOUT: %Core.Bool: %Bool.type = import_ref Core//prelude/parts/bool, Bool, loaded [concrete = constants.%Bool]
|
||||
// CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -87,8 +88,8 @@ fn PartialConstant(x: bool) {
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.831 = out_param_pattern %return.patt, call_param0 [concrete]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [concrete = bool]
|
||||
// CHECK:STDOUT: %.loc14_11.1: type = value_of_initializer %bool.make_type [concrete = bool]
|
||||
// CHECK:STDOUT: %.loc14_11.2: type = converted %bool.make_type, %.loc14_11.1 [concrete = bool]
|
||||
// CHECK:STDOUT: %.loc15_11.1: type = value_of_initializer %bool.make_type [concrete = bool]
|
||||
// CHECK:STDOUT: %.loc15_11.2: type = converted %bool.make_type, %.loc15_11.1 [concrete = bool]
|
||||
// CHECK:STDOUT: %return.param: ref bool = out_param call_param0
|
||||
// CHECK:STDOUT: %return: ref bool = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
@@ -97,8 +98,8 @@ fn PartialConstant(x: bool) {
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.831 = out_param_pattern %return.patt, call_param0 [concrete]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [concrete = bool]
|
||||
// CHECK:STDOUT: %.loc15_11.1: type = value_of_initializer %bool.make_type [concrete = bool]
|
||||
// CHECK:STDOUT: %.loc15_11.2: type = converted %bool.make_type, %.loc15_11.1 [concrete = bool]
|
||||
// CHECK:STDOUT: %.loc16_11.1: type = value_of_initializer %bool.make_type [concrete = bool]
|
||||
// CHECK:STDOUT: %.loc16_11.2: type = converted %bool.make_type, %.loc16_11.1 [concrete = bool]
|
||||
// CHECK:STDOUT: %return.param: ref bool = out_param call_param0
|
||||
// CHECK:STDOUT: %return: ref bool = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
@@ -107,8 +108,8 @@ fn PartialConstant(x: bool) {
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.831 = out_param_pattern %return.patt, call_param0 [concrete]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [concrete = bool]
|
||||
// CHECK:STDOUT: %.loc17_12.1: type = value_of_initializer %bool.make_type [concrete = bool]
|
||||
// CHECK:STDOUT: %.loc17_12.2: type = converted %bool.make_type, %.loc17_12.1 [concrete = bool]
|
||||
// CHECK:STDOUT: %.loc18_12.1: type = value_of_initializer %bool.make_type [concrete = bool]
|
||||
// CHECK:STDOUT: %.loc18_12.2: type = converted %bool.make_type, %.loc18_12.1 [concrete = bool]
|
||||
// CHECK:STDOUT: %return.param: ref bool = out_param call_param0
|
||||
// CHECK:STDOUT: %return: ref bool = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
@@ -118,10 +119,10 @@ fn PartialConstant(x: bool) {
|
||||
// CHECK:STDOUT: %x.param_patt: %pattern_type.831 = value_param_pattern %x.patt, call_param0 [concrete]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %x.param: bool = value_param call_param0
|
||||
// CHECK:STDOUT: %.loc28_23.1: type = splice_block %.loc28_23.3 [concrete = bool] {
|
||||
// CHECK:STDOUT: %bool.make_type.loc28: init type = call constants.%Bool() [concrete = bool]
|
||||
// CHECK:STDOUT: %.loc28_23.2: type = value_of_initializer %bool.make_type.loc28 [concrete = bool]
|
||||
// CHECK:STDOUT: %.loc28_23.3: type = converted %bool.make_type.loc28, %.loc28_23.2 [concrete = bool]
|
||||
// CHECK:STDOUT: %.loc29_23.1: type = splice_block %.loc29_23.3 [concrete = bool] {
|
||||
// CHECK:STDOUT: %bool.make_type.loc29: init type = call constants.%Bool() [concrete = bool]
|
||||
// CHECK:STDOUT: %.loc29_23.2: type = value_of_initializer %bool.make_type.loc29 [concrete = bool]
|
||||
// CHECK:STDOUT: %.loc29_23.3: type = converted %bool.make_type.loc29, %.loc29_23.2 [concrete = bool]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %x: bool = bind_name x, %x.param
|
||||
// CHECK:STDOUT: }
|
||||
@@ -143,22 +144,22 @@ fn PartialConstant(x: bool) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %F.ref: %F.type = name_ref F, file.%F.decl [concrete = constants.%F]
|
||||
// CHECK:STDOUT: %F.call: init bool = call %F.ref()
|
||||
// CHECK:STDOUT: %.loc18_14.1: bool = value_of_initializer %F.call
|
||||
// CHECK:STDOUT: %.loc18_14.2: bool = converted %F.call, %.loc18_14.1
|
||||
// CHECK:STDOUT: %.loc18_14.3: bool = not %.loc18_14.2
|
||||
// CHECK:STDOUT: %.loc19_14.1: bool = value_of_initializer %F.call
|
||||
// CHECK:STDOUT: %.loc19_14.2: bool = converted %F.call, %.loc19_14.1
|
||||
// CHECK:STDOUT: %.loc19_14.3: bool = not %.loc19_14.2
|
||||
// CHECK:STDOUT: %true: bool = bool_literal true [concrete = constants.%true]
|
||||
// CHECK:STDOUT: if %.loc18_14.3 br !or.rhs else br !or.result(%true)
|
||||
// CHECK:STDOUT: if %.loc19_14.3 br !or.rhs else br !or.result(%true)
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !or.rhs:
|
||||
// CHECK:STDOUT: %G.ref: %G.type = name_ref G, file.%G.decl [concrete = constants.%G]
|
||||
// CHECK:STDOUT: %G.call: init bool = call %G.ref()
|
||||
// CHECK:STDOUT: %.loc18_14.4: bool = value_of_initializer %G.call
|
||||
// CHECK:STDOUT: %.loc18_14.5: bool = converted %G.call, %.loc18_14.4
|
||||
// CHECK:STDOUT: br !or.result(%.loc18_14.5)
|
||||
// CHECK:STDOUT: %.loc19_14.4: bool = value_of_initializer %G.call
|
||||
// CHECK:STDOUT: %.loc19_14.5: bool = converted %G.call, %.loc19_14.4
|
||||
// CHECK:STDOUT: br !or.result(%.loc19_14.5)
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !or.result:
|
||||
// CHECK:STDOUT: %.loc18_14.6: bool = block_arg !or.result
|
||||
// CHECK:STDOUT: return %.loc18_14.6
|
||||
// CHECK:STDOUT: %.loc19_14.6: bool = block_arg !or.result
|
||||
// CHECK:STDOUT: return %.loc19_14.6
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @Constant() {
|
||||
@@ -168,48 +169,8 @@ fn PartialConstant(x: bool) {
|
||||
// CHECK:STDOUT: %a.var_patt: %pattern_type.831 = var_pattern %a.patt [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %a.var: ref bool = var %a.var_patt
|
||||
// CHECK:STDOUT: %true.loc22_46: bool = bool_literal true [concrete = constants.%true]
|
||||
// CHECK:STDOUT: assign %a.var, %true.loc22_46
|
||||
// CHECK:STDOUT: br !.loc22_13
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !.loc22_13:
|
||||
// CHECK:STDOUT: %true.loc22_13: bool = bool_literal true [concrete = constants.%true]
|
||||
// CHECK:STDOUT: %.loc22_18.1: bool = not %true.loc22_13 [concrete = constants.%false]
|
||||
// CHECK:STDOUT: %true.loc22_18: bool = bool_literal true [concrete = constants.%true]
|
||||
// CHECK:STDOUT: if %.loc22_18.1 br !or.rhs.loc22 else br !or.result.loc22(%true.loc22_18)
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !or.rhs.loc22:
|
||||
// CHECK:STDOUT: %true.loc22_21: bool = bool_literal true [concrete = constants.%true]
|
||||
// CHECK:STDOUT: br !or.result.loc22(%true.loc22_21)
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !or.result.loc22:
|
||||
// CHECK:STDOUT: %.loc22_18.2: bool = block_arg !or.result.loc22 [concrete = constants.%true]
|
||||
// CHECK:STDOUT: if %.loc22_18.2 br !if.expr.then.loc22 else br !if.expr.else.loc22
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !if.expr.then.loc22:
|
||||
// CHECK:STDOUT: %bool.make_type.loc22: init type = call constants.%Bool() [concrete = bool]
|
||||
// CHECK:STDOUT: %.loc22_31.1: type = value_of_initializer %bool.make_type.loc22 [concrete = bool]
|
||||
// CHECK:STDOUT: %.loc22_31.2: type = converted %bool.make_type.loc22, %.loc22_31.1 [concrete = bool]
|
||||
// CHECK:STDOUT: br !if.expr.result.loc22(%.loc22_31.2)
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !if.expr.else.loc22:
|
||||
// CHECK:STDOUT: %.loc22_42: %empty_tuple.type = tuple_literal ()
|
||||
// CHECK:STDOUT: %.loc22_36: type = converted %.loc22_42, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: br !if.expr.result.loc22(%.loc22_36)
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !if.expr.result.loc22:
|
||||
// CHECK:STDOUT: %.loc22_10: type = block_arg !if.expr.result.loc22 [concrete = bool]
|
||||
// CHECK:STDOUT: br !.loc22_7
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !.loc22_7:
|
||||
// CHECK:STDOUT: %a: ref bool = bind_name a, %a.var
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %b.patt: %pattern_type.831 = binding_pattern b [concrete]
|
||||
// CHECK:STDOUT: %b.var_patt: %pattern_type.831 = var_pattern %b.patt [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %b.var: ref bool = var %b.var_patt
|
||||
// CHECK:STDOUT: %true.loc23_47: bool = bool_literal true [concrete = constants.%true]
|
||||
// CHECK:STDOUT: assign %b.var, %true.loc23_47
|
||||
// CHECK:STDOUT: %true.loc23_46: bool = bool_literal true [concrete = constants.%true]
|
||||
// CHECK:STDOUT: assign %a.var, %true.loc23_46
|
||||
// CHECK:STDOUT: br !.loc23_13
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !.loc23_13:
|
||||
@@ -219,8 +180,8 @@ fn PartialConstant(x: bool) {
|
||||
// CHECK:STDOUT: if %.loc23_18.1 br !or.rhs.loc23 else br !or.result.loc23(%true.loc23_18)
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !or.rhs.loc23:
|
||||
// CHECK:STDOUT: %false.loc23: bool = bool_literal false [concrete = constants.%false]
|
||||
// CHECK:STDOUT: br !or.result.loc23(%false.loc23)
|
||||
// CHECK:STDOUT: %true.loc23_21: bool = bool_literal true [concrete = constants.%true]
|
||||
// CHECK:STDOUT: br !or.result.loc23(%true.loc23_21)
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !or.result.loc23:
|
||||
// CHECK:STDOUT: %.loc23_18.2: bool = block_arg !or.result.loc23 [concrete = constants.%true]
|
||||
@@ -228,43 +189,43 @@ fn PartialConstant(x: bool) {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !if.expr.then.loc23:
|
||||
// CHECK:STDOUT: %bool.make_type.loc23: init type = call constants.%Bool() [concrete = bool]
|
||||
// CHECK:STDOUT: %.loc23_32.1: type = value_of_initializer %bool.make_type.loc23 [concrete = bool]
|
||||
// CHECK:STDOUT: %.loc23_32.2: type = converted %bool.make_type.loc23, %.loc23_32.1 [concrete = bool]
|
||||
// CHECK:STDOUT: br !if.expr.result.loc23(%.loc23_32.2)
|
||||
// CHECK:STDOUT: %.loc23_31.1: type = value_of_initializer %bool.make_type.loc23 [concrete = bool]
|
||||
// CHECK:STDOUT: %.loc23_31.2: type = converted %bool.make_type.loc23, %.loc23_31.1 [concrete = bool]
|
||||
// CHECK:STDOUT: br !if.expr.result.loc23(%.loc23_31.2)
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !if.expr.else.loc23:
|
||||
// CHECK:STDOUT: %.loc23_43: %empty_tuple.type = tuple_literal ()
|
||||
// CHECK:STDOUT: %.loc23_37: type = converted %.loc23_43, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: br !if.expr.result.loc23(%.loc23_37)
|
||||
// CHECK:STDOUT: %.loc23_42: %empty_tuple.type = tuple_literal ()
|
||||
// CHECK:STDOUT: %.loc23_36: type = converted %.loc23_42, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: br !if.expr.result.loc23(%.loc23_36)
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !if.expr.result.loc23:
|
||||
// CHECK:STDOUT: %.loc23_10: type = block_arg !if.expr.result.loc23 [concrete = bool]
|
||||
// CHECK:STDOUT: br !.loc23_7
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !.loc23_7:
|
||||
// CHECK:STDOUT: %b: ref bool = bind_name b, %b.var
|
||||
// CHECK:STDOUT: %a: ref bool = bind_name a, %a.var
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %c.patt: %pattern_type.831 = binding_pattern c [concrete]
|
||||
// CHECK:STDOUT: %c.var_patt: %pattern_type.831 = var_pattern %c.patt [concrete]
|
||||
// CHECK:STDOUT: %b.patt: %pattern_type.831 = binding_pattern b [concrete]
|
||||
// CHECK:STDOUT: %b.var_patt: %pattern_type.831 = var_pattern %b.patt [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %c.var: ref bool = var %c.var_patt
|
||||
// CHECK:STDOUT: %b.var: ref bool = var %b.var_patt
|
||||
// CHECK:STDOUT: %true.loc24_47: bool = bool_literal true [concrete = constants.%true]
|
||||
// CHECK:STDOUT: assign %c.var, %true.loc24_47
|
||||
// CHECK:STDOUT: assign %b.var, %true.loc24_47
|
||||
// CHECK:STDOUT: br !.loc24_13
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !.loc24_13:
|
||||
// CHECK:STDOUT: %false.loc24: bool = bool_literal false [concrete = constants.%false]
|
||||
// CHECK:STDOUT: %.loc24_19.1: bool = not %false.loc24 [concrete = constants.%true]
|
||||
// CHECK:STDOUT: %true.loc24_19: bool = bool_literal true [concrete = constants.%true]
|
||||
// CHECK:STDOUT: if %.loc24_19.1 br !or.rhs.loc24 else br !or.result.loc24(%true.loc24_19)
|
||||
// CHECK:STDOUT: %true.loc24_13: bool = bool_literal true [concrete = constants.%true]
|
||||
// CHECK:STDOUT: %.loc24_18.1: bool = not %true.loc24_13 [concrete = constants.%false]
|
||||
// CHECK:STDOUT: %true.loc24_18: bool = bool_literal true [concrete = constants.%true]
|
||||
// CHECK:STDOUT: if %.loc24_18.1 br !or.rhs.loc24 else br !or.result.loc24(%true.loc24_18)
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !or.rhs.loc24:
|
||||
// CHECK:STDOUT: %true.loc24_22: bool = bool_literal true [concrete = constants.%true]
|
||||
// CHECK:STDOUT: br !or.result.loc24(%true.loc24_22)
|
||||
// CHECK:STDOUT: %false.loc24: bool = bool_literal false [concrete = constants.%false]
|
||||
// CHECK:STDOUT: br !or.result.loc24(%false.loc24)
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !or.result.loc24:
|
||||
// CHECK:STDOUT: %.loc24_19.2: bool = block_arg !or.result.loc24 [concrete = constants.%true]
|
||||
// CHECK:STDOUT: if %.loc24_19.2 br !if.expr.then.loc24 else br !if.expr.else.loc24
|
||||
// CHECK:STDOUT: %.loc24_18.2: bool = block_arg !or.result.loc24 [concrete = constants.%true]
|
||||
// CHECK:STDOUT: if %.loc24_18.2 br !if.expr.then.loc24 else br !if.expr.else.loc24
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !if.expr.then.loc24:
|
||||
// CHECK:STDOUT: %bool.make_type.loc24: init type = call constants.%Bool() [concrete = bool]
|
||||
@@ -282,69 +243,109 @@ fn PartialConstant(x: bool) {
|
||||
// CHECK:STDOUT: br !.loc24_7
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !.loc24_7:
|
||||
// CHECK:STDOUT: %b: ref bool = bind_name b, %b.var
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %c.patt: %pattern_type.831 = binding_pattern c [concrete]
|
||||
// CHECK:STDOUT: %c.var_patt: %pattern_type.831 = var_pattern %c.patt [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %c.var: ref bool = var %c.var_patt
|
||||
// CHECK:STDOUT: %true.loc25_47: bool = bool_literal true [concrete = constants.%true]
|
||||
// CHECK:STDOUT: assign %c.var, %true.loc25_47
|
||||
// CHECK:STDOUT: br !.loc25_13
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !.loc25_13:
|
||||
// CHECK:STDOUT: %false.loc25: bool = bool_literal false [concrete = constants.%false]
|
||||
// CHECK:STDOUT: %.loc25_19.1: bool = not %false.loc25 [concrete = constants.%true]
|
||||
// CHECK:STDOUT: %true.loc25_19: bool = bool_literal true [concrete = constants.%true]
|
||||
// CHECK:STDOUT: if %.loc25_19.1 br !or.rhs.loc25 else br !or.result.loc25(%true.loc25_19)
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !or.rhs.loc25:
|
||||
// CHECK:STDOUT: %true.loc25_22: bool = bool_literal true [concrete = constants.%true]
|
||||
// CHECK:STDOUT: br !or.result.loc25(%true.loc25_22)
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !or.result.loc25:
|
||||
// CHECK:STDOUT: %.loc25_19.2: bool = block_arg !or.result.loc25 [concrete = constants.%true]
|
||||
// CHECK:STDOUT: if %.loc25_19.2 br !if.expr.then.loc25 else br !if.expr.else.loc25
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !if.expr.then.loc25:
|
||||
// CHECK:STDOUT: %bool.make_type.loc25: init type = call constants.%Bool() [concrete = bool]
|
||||
// CHECK:STDOUT: %.loc25_32.1: type = value_of_initializer %bool.make_type.loc25 [concrete = bool]
|
||||
// CHECK:STDOUT: %.loc25_32.2: type = converted %bool.make_type.loc25, %.loc25_32.1 [concrete = bool]
|
||||
// CHECK:STDOUT: br !if.expr.result.loc25(%.loc25_32.2)
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !if.expr.else.loc25:
|
||||
// CHECK:STDOUT: %.loc25_43: %empty_tuple.type = tuple_literal ()
|
||||
// CHECK:STDOUT: %.loc25_37: type = converted %.loc25_43, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: br !if.expr.result.loc25(%.loc25_37)
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !if.expr.result.loc25:
|
||||
// CHECK:STDOUT: %.loc25_10: type = block_arg !if.expr.result.loc25 [concrete = bool]
|
||||
// CHECK:STDOUT: br !.loc25_7
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !.loc25_7:
|
||||
// CHECK:STDOUT: %c: ref bool = bind_name c, %c.var
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %d.patt: %pattern_type.cb1 = binding_pattern d [concrete]
|
||||
// CHECK:STDOUT: %d.var_patt: %pattern_type.cb1 = var_pattern %d.patt [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %d.var: ref %empty_tuple.type = var %d.var_patt
|
||||
// CHECK:STDOUT: %.loc25_49.1: %empty_tuple.type = tuple_literal ()
|
||||
// CHECK:STDOUT: %.loc25_49.2: init %empty_tuple.type = tuple_init () to %d.var [concrete = constants.%empty_tuple]
|
||||
// CHECK:STDOUT: %.loc25_3: init %empty_tuple.type = converted %.loc25_49.1, %.loc25_49.2 [concrete = constants.%empty_tuple]
|
||||
// CHECK:STDOUT: assign %d.var, %.loc25_3
|
||||
// CHECK:STDOUT: br !.loc25_13
|
||||
// CHECK:STDOUT: %.loc26_49.1: %empty_tuple.type = tuple_literal ()
|
||||
// CHECK:STDOUT: %.loc26_49.2: init %empty_tuple.type = tuple_init () to %d.var [concrete = constants.%empty_tuple]
|
||||
// CHECK:STDOUT: %.loc26_3: init %empty_tuple.type = converted %.loc26_49.1, %.loc26_49.2 [concrete = constants.%empty_tuple]
|
||||
// CHECK:STDOUT: assign %d.var, %.loc26_3
|
||||
// CHECK:STDOUT: br !.loc26_13
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !.loc25_13:
|
||||
// CHECK:STDOUT: %false.loc25_13: bool = bool_literal false [concrete = constants.%false]
|
||||
// CHECK:STDOUT: %.loc25_19.1: bool = not %false.loc25_13 [concrete = constants.%true]
|
||||
// CHECK:STDOUT: %true.loc25: bool = bool_literal true [concrete = constants.%true]
|
||||
// CHECK:STDOUT: if %.loc25_19.1 br !or.rhs.loc25 else br !or.result.loc25(%true.loc25)
|
||||
// CHECK:STDOUT: !.loc26_13:
|
||||
// CHECK:STDOUT: %false.loc26_13: bool = bool_literal false [concrete = constants.%false]
|
||||
// CHECK:STDOUT: %.loc26_19.1: bool = not %false.loc26_13 [concrete = constants.%true]
|
||||
// CHECK:STDOUT: %true.loc26: bool = bool_literal true [concrete = constants.%true]
|
||||
// CHECK:STDOUT: if %.loc26_19.1 br !or.rhs.loc26 else br !or.result.loc26(%true.loc26)
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !or.rhs.loc25:
|
||||
// CHECK:STDOUT: %false.loc25_22: bool = bool_literal false [concrete = constants.%false]
|
||||
// CHECK:STDOUT: br !or.result.loc25(%false.loc25_22)
|
||||
// CHECK:STDOUT: !or.rhs.loc26:
|
||||
// CHECK:STDOUT: %false.loc26_22: bool = bool_literal false [concrete = constants.%false]
|
||||
// CHECK:STDOUT: br !or.result.loc26(%false.loc26_22)
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !or.result.loc25:
|
||||
// CHECK:STDOUT: %.loc25_19.2: bool = block_arg !or.result.loc25 [concrete = constants.%false]
|
||||
// CHECK:STDOUT: if %.loc25_19.2 br !if.expr.then.loc25 else br !if.expr.else.loc25
|
||||
// CHECK:STDOUT: !or.result.loc26:
|
||||
// CHECK:STDOUT: %.loc26_19.2: bool = block_arg !or.result.loc26 [concrete = constants.%false]
|
||||
// CHECK:STDOUT: if %.loc26_19.2 br !if.expr.then.loc26 else br !if.expr.else.loc26
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !if.expr.then.loc25:
|
||||
// CHECK:STDOUT: %bool.make_type.loc25: init type = call constants.%Bool() [concrete = bool]
|
||||
// CHECK:STDOUT: %.loc25_33.1: type = value_of_initializer %bool.make_type.loc25 [concrete = bool]
|
||||
// CHECK:STDOUT: %.loc25_33.2: type = converted %bool.make_type.loc25, %.loc25_33.1 [concrete = bool]
|
||||
// CHECK:STDOUT: br !if.expr.result.loc25(%.loc25_33.2)
|
||||
// CHECK:STDOUT: !if.expr.then.loc26:
|
||||
// CHECK:STDOUT: %bool.make_type.loc26: init type = call constants.%Bool() [concrete = bool]
|
||||
// CHECK:STDOUT: %.loc26_33.1: type = value_of_initializer %bool.make_type.loc26 [concrete = bool]
|
||||
// CHECK:STDOUT: %.loc26_33.2: type = converted %bool.make_type.loc26, %.loc26_33.1 [concrete = bool]
|
||||
// CHECK:STDOUT: br !if.expr.result.loc26(%.loc26_33.2)
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !if.expr.else.loc25:
|
||||
// CHECK:STDOUT: %.loc25_44: %empty_tuple.type = tuple_literal ()
|
||||
// CHECK:STDOUT: %.loc25_38: type = converted %.loc25_44, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: br !if.expr.result.loc25(%.loc25_38)
|
||||
// CHECK:STDOUT: !if.expr.else.loc26:
|
||||
// CHECK:STDOUT: %.loc26_44: %empty_tuple.type = tuple_literal ()
|
||||
// CHECK:STDOUT: %.loc26_38: type = converted %.loc26_44, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: br !if.expr.result.loc26(%.loc26_38)
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !if.expr.result.loc25:
|
||||
// CHECK:STDOUT: %.loc25_10: type = block_arg !if.expr.result.loc25 [concrete = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: br !.loc25_7
|
||||
// CHECK:STDOUT: !if.expr.result.loc26:
|
||||
// CHECK:STDOUT: %.loc26_10: type = block_arg !if.expr.result.loc26 [concrete = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: br !.loc26_7
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !.loc25_7:
|
||||
// CHECK:STDOUT: !.loc26_7:
|
||||
// CHECK:STDOUT: %d: ref %empty_tuple.type = bind_name d, %d.var
|
||||
// CHECK:STDOUT: %Op.bound.loc25: <bound method> = bound_method %d.var, constants.%Op.ea3
|
||||
// CHECK:STDOUT: %Op.bound.loc26: <bound method> = bound_method %d.var, constants.%Op.ea3
|
||||
// CHECK:STDOUT: %Op.specific_fn.1: <specific function> = specific_function constants.%Op.ea3, @Op.2(constants.%empty_tuple.type) [concrete = constants.%Op.specific_fn.393]
|
||||
// CHECK:STDOUT: %bound_method.loc25: <bound method> = bound_method %d.var, %Op.specific_fn.1
|
||||
// CHECK:STDOUT: %addr.loc25: %ptr.843 = addr_of %d.var
|
||||
// CHECK:STDOUT: %no_op.loc25: init %empty_tuple.type = call %bound_method.loc25(%addr.loc25)
|
||||
// CHECK:STDOUT: %Op.bound.loc24: <bound method> = bound_method %c.var, constants.%Op.8b7
|
||||
// CHECK:STDOUT: %bound_method.loc26: <bound method> = bound_method %d.var, %Op.specific_fn.1
|
||||
// CHECK:STDOUT: %addr.loc26: %ptr.843 = addr_of %d.var
|
||||
// CHECK:STDOUT: %no_op.loc26: init %empty_tuple.type = call %bound_method.loc26(%addr.loc26)
|
||||
// CHECK:STDOUT: %Op.bound.loc25: <bound method> = bound_method %c.var, constants.%Op.8b7
|
||||
// CHECK:STDOUT: %Op.specific_fn.2: <specific function> = specific_function constants.%Op.8b7, @Op.2(bool) [concrete = constants.%Op.specific_fn.c3f]
|
||||
// CHECK:STDOUT: %bound_method.loc24: <bound method> = bound_method %c.var, %Op.specific_fn.2
|
||||
// CHECK:STDOUT: %addr.loc24: %ptr.bb2 = addr_of %c.var
|
||||
// CHECK:STDOUT: %no_op.loc24: init %empty_tuple.type = call %bound_method.loc24(%addr.loc24)
|
||||
// CHECK:STDOUT: %Op.bound.loc23: <bound method> = bound_method %b.var, constants.%Op.8b7
|
||||
// CHECK:STDOUT: %bound_method.loc25: <bound method> = bound_method %c.var, %Op.specific_fn.2
|
||||
// CHECK:STDOUT: %addr.loc25: %ptr.bb2 = addr_of %c.var
|
||||
// CHECK:STDOUT: %no_op.loc25: init %empty_tuple.type = call %bound_method.loc25(%addr.loc25)
|
||||
// CHECK:STDOUT: %Op.bound.loc24: <bound method> = bound_method %b.var, constants.%Op.8b7
|
||||
// CHECK:STDOUT: %Op.specific_fn.3: <specific function> = specific_function constants.%Op.8b7, @Op.2(bool) [concrete = constants.%Op.specific_fn.c3f]
|
||||
// CHECK:STDOUT: %bound_method.loc23: <bound method> = bound_method %b.var, %Op.specific_fn.3
|
||||
// CHECK:STDOUT: %addr.loc23: %ptr.bb2 = addr_of %b.var
|
||||
// CHECK:STDOUT: %no_op.loc23: init %empty_tuple.type = call %bound_method.loc23(%addr.loc23)
|
||||
// CHECK:STDOUT: %Op.bound.loc22: <bound method> = bound_method %a.var, constants.%Op.8b7
|
||||
// CHECK:STDOUT: %bound_method.loc24: <bound method> = bound_method %b.var, %Op.specific_fn.3
|
||||
// CHECK:STDOUT: %addr.loc24: %ptr.bb2 = addr_of %b.var
|
||||
// CHECK:STDOUT: %no_op.loc24: init %empty_tuple.type = call %bound_method.loc24(%addr.loc24)
|
||||
// CHECK:STDOUT: %Op.bound.loc23: <bound method> = bound_method %a.var, constants.%Op.8b7
|
||||
// CHECK:STDOUT: %Op.specific_fn.4: <specific function> = specific_function constants.%Op.8b7, @Op.2(bool) [concrete = constants.%Op.specific_fn.c3f]
|
||||
// CHECK:STDOUT: %bound_method.loc22: <bound method> = bound_method %a.var, %Op.specific_fn.4
|
||||
// CHECK:STDOUT: %addr.loc22: %ptr.bb2 = addr_of %a.var
|
||||
// CHECK:STDOUT: %no_op.loc22: init %empty_tuple.type = call %bound_method.loc22(%addr.loc22)
|
||||
// CHECK:STDOUT: %bound_method.loc23: <bound method> = bound_method %a.var, %Op.specific_fn.4
|
||||
// CHECK:STDOUT: %addr.loc23: %ptr.bb2 = addr_of %a.var
|
||||
// CHECK:STDOUT: %no_op.loc23: init %empty_tuple.type = call %bound_method.loc23(%addr.loc23)
|
||||
// CHECK:STDOUT: return
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -355,40 +356,40 @@ fn PartialConstant(x: bool) {
|
||||
// CHECK:STDOUT: %a.var_patt: %pattern_type.831 = var_pattern %a.patt [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %a.var: ref bool = var %a.var_patt
|
||||
// CHECK:STDOUT: %true.loc29_43: bool = bool_literal true [concrete = constants.%true]
|
||||
// CHECK:STDOUT: assign %a.var, %true.loc29_43
|
||||
// CHECK:STDOUT: br !.loc29_13
|
||||
// CHECK:STDOUT: %true.loc30_43: bool = bool_literal true [concrete = constants.%true]
|
||||
// CHECK:STDOUT: assign %a.var, %true.loc30_43
|
||||
// CHECK:STDOUT: br !.loc30_13
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !.loc29_13:
|
||||
// CHECK:STDOUT: %true.loc29_13: bool = bool_literal true [concrete = constants.%true]
|
||||
// CHECK:STDOUT: %.loc29_18.1: bool = not %true.loc29_13 [concrete = constants.%false]
|
||||
// CHECK:STDOUT: %true.loc29_18: bool = bool_literal true [concrete = constants.%true]
|
||||
// CHECK:STDOUT: if %.loc29_18.1 br !or.rhs else br !or.result(%true.loc29_18)
|
||||
// CHECK:STDOUT: !.loc30_13:
|
||||
// CHECK:STDOUT: %true.loc30_13: bool = bool_literal true [concrete = constants.%true]
|
||||
// CHECK:STDOUT: %.loc30_18.1: bool = not %true.loc30_13 [concrete = constants.%false]
|
||||
// CHECK:STDOUT: %true.loc30_18: bool = bool_literal true [concrete = constants.%true]
|
||||
// CHECK:STDOUT: if %.loc30_18.1 br !or.rhs else br !or.result(%true.loc30_18)
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !or.rhs:
|
||||
// CHECK:STDOUT: %x.ref: bool = name_ref x, %x
|
||||
// CHECK:STDOUT: br !or.result(%x.ref)
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !or.result:
|
||||
// CHECK:STDOUT: %.loc29_18.2: bool = block_arg !or.result [concrete = constants.%true]
|
||||
// CHECK:STDOUT: if %.loc29_18.2 br !if.expr.then else br !if.expr.else
|
||||
// CHECK:STDOUT: %.loc30_18.2: bool = block_arg !or.result [concrete = constants.%true]
|
||||
// CHECK:STDOUT: if %.loc30_18.2 br !if.expr.then else br !if.expr.else
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !if.expr.then:
|
||||
// CHECK:STDOUT: %bool.make_type.loc29: init type = call constants.%Bool() [concrete = bool]
|
||||
// CHECK:STDOUT: %.loc29_28.1: type = value_of_initializer %bool.make_type.loc29 [concrete = bool]
|
||||
// CHECK:STDOUT: %.loc29_28.2: type = converted %bool.make_type.loc29, %.loc29_28.1 [concrete = bool]
|
||||
// CHECK:STDOUT: br !if.expr.result(%.loc29_28.2)
|
||||
// CHECK:STDOUT: %bool.make_type.loc30: init type = call constants.%Bool() [concrete = bool]
|
||||
// CHECK:STDOUT: %.loc30_28.1: type = value_of_initializer %bool.make_type.loc30 [concrete = bool]
|
||||
// CHECK:STDOUT: %.loc30_28.2: type = converted %bool.make_type.loc30, %.loc30_28.1 [concrete = bool]
|
||||
// CHECK:STDOUT: br !if.expr.result(%.loc30_28.2)
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !if.expr.else:
|
||||
// CHECK:STDOUT: %.loc29_39: %empty_tuple.type = tuple_literal ()
|
||||
// CHECK:STDOUT: %.loc29_33: type = converted %.loc29_39, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: br !if.expr.result(%.loc29_33)
|
||||
// CHECK:STDOUT: %.loc30_39: %empty_tuple.type = tuple_literal ()
|
||||
// CHECK:STDOUT: %.loc30_33: type = converted %.loc30_39, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: br !if.expr.result(%.loc30_33)
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !if.expr.result:
|
||||
// CHECK:STDOUT: %.loc29_10: type = block_arg !if.expr.result [concrete = bool]
|
||||
// CHECK:STDOUT: br !.loc29_7
|
||||
// CHECK:STDOUT: %.loc30_10: type = block_arg !if.expr.result [concrete = bool]
|
||||
// CHECK:STDOUT: br !.loc30_7
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !.loc29_7:
|
||||
// CHECK:STDOUT: !.loc30_7:
|
||||
// CHECK:STDOUT: %a: ref bool = bind_name a, %a.var
|
||||
// CHECK:STDOUT: %Op.bound: <bound method> = bound_method %a.var, constants.%Op.8b7
|
||||
// CHECK:STDOUT: %Op.specific_fn: <specific function> = specific_function constants.%Op.8b7, @Op.2(bool) [concrete = constants.%Op.specific_fn.c3f]
|
||||
|
||||
+73
-72
@@ -2,6 +2,7 @@
|
||||
// Exceptions. See /LICENSE for license information.
|
||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
//
|
||||
// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/bool.carbon
|
||||
// TODO: Add ranges and switch to "--dump-sem-ir-ranges=only".
|
||||
// EXTRA-ARGS: --dump-sem-ir-ranges=if-present
|
||||
//
|
||||
@@ -56,8 +57,8 @@ fn Constant() {
|
||||
// CHECK:STDOUT: import Core//prelude
|
||||
// CHECK:STDOUT: import Core//prelude/...
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Core.Bool: %Bool.type = import_ref Core//prelude/types/bool, Bool, loaded [concrete = constants.%Bool]
|
||||
// CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/destroy, Destroy, loaded [concrete = constants.%Destroy.type]
|
||||
// CHECK:STDOUT: %Core.Bool: %Bool.type = import_ref Core//prelude/parts/bool, Bool, loaded [concrete = constants.%Bool]
|
||||
// CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -75,14 +76,14 @@ fn Constant() {
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.831 = return_slot_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.831 = out_param_pattern %return.patt, call_param1 [concrete]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %bool.make_type.loc14_20: init type = call constants.%Bool() [concrete = bool]
|
||||
// CHECK:STDOUT: %.loc14_20.1: type = value_of_initializer %bool.make_type.loc14_20 [concrete = bool]
|
||||
// CHECK:STDOUT: %.loc14_20.2: type = converted %bool.make_type.loc14_20, %.loc14_20.1 [concrete = bool]
|
||||
// CHECK:STDOUT: %bool.make_type.loc15_20: init type = call constants.%Bool() [concrete = bool]
|
||||
// CHECK:STDOUT: %.loc15_20.1: type = value_of_initializer %bool.make_type.loc15_20 [concrete = bool]
|
||||
// CHECK:STDOUT: %.loc15_20.2: type = converted %bool.make_type.loc15_20, %.loc15_20.1 [concrete = bool]
|
||||
// CHECK:STDOUT: %b.param: bool = value_param call_param0
|
||||
// CHECK:STDOUT: %.loc14_11.1: type = splice_block %.loc14_11.3 [concrete = bool] {
|
||||
// CHECK:STDOUT: %bool.make_type.loc14_11: init type = call constants.%Bool() [concrete = bool]
|
||||
// CHECK:STDOUT: %.loc14_11.2: type = value_of_initializer %bool.make_type.loc14_11 [concrete = bool]
|
||||
// CHECK:STDOUT: %.loc14_11.3: type = converted %bool.make_type.loc14_11, %.loc14_11.2 [concrete = bool]
|
||||
// CHECK:STDOUT: %.loc15_11.1: type = splice_block %.loc15_11.3 [concrete = bool] {
|
||||
// CHECK:STDOUT: %bool.make_type.loc15_11: init type = call constants.%Bool() [concrete = bool]
|
||||
// CHECK:STDOUT: %.loc15_11.2: type = value_of_initializer %bool.make_type.loc15_11 [concrete = bool]
|
||||
// CHECK:STDOUT: %.loc15_11.3: type = converted %bool.make_type.loc15_11, %.loc15_11.2 [concrete = bool]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %b: bool = bind_name b, %b.param
|
||||
// CHECK:STDOUT: %return.param: ref bool = out_param call_param1
|
||||
@@ -91,29 +92,29 @@ fn Constant() {
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %not_true.patt: %pattern_type.831 = binding_pattern not_true [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %.loc18_15.1: type = splice_block %.loc18_15.3 [concrete = bool] {
|
||||
// CHECK:STDOUT: %bool.make_type.loc18: init type = call constants.%Bool() [concrete = bool]
|
||||
// CHECK:STDOUT: %.loc18_15.2: type = value_of_initializer %bool.make_type.loc18 [concrete = bool]
|
||||
// CHECK:STDOUT: %.loc18_15.3: type = converted %bool.make_type.loc18, %.loc18_15.2 [concrete = bool]
|
||||
// CHECK:STDOUT: %.loc19_15.1: type = splice_block %.loc19_15.3 [concrete = bool] {
|
||||
// CHECK:STDOUT: %bool.make_type.loc19: init type = call constants.%Bool() [concrete = bool]
|
||||
// CHECK:STDOUT: %.loc19_15.2: type = value_of_initializer %bool.make_type.loc19 [concrete = bool]
|
||||
// CHECK:STDOUT: %.loc19_15.3: type = converted %bool.make_type.loc19, %.loc19_15.2 [concrete = bool]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %not_true: bool = bind_name not_true, @__global_init.%.loc18
|
||||
// CHECK:STDOUT: %not_true: bool = bind_name not_true, @__global_init.%.loc19
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %not_false.patt: %pattern_type.831 = binding_pattern not_false [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %.loc19_16.1: type = splice_block %.loc19_16.3 [concrete = bool] {
|
||||
// CHECK:STDOUT: %bool.make_type.loc19: init type = call constants.%Bool() [concrete = bool]
|
||||
// CHECK:STDOUT: %.loc19_16.2: type = value_of_initializer %bool.make_type.loc19 [concrete = bool]
|
||||
// CHECK:STDOUT: %.loc19_16.3: type = converted %bool.make_type.loc19, %.loc19_16.2 [concrete = bool]
|
||||
// CHECK:STDOUT: %.loc20_16.1: type = splice_block %.loc20_16.3 [concrete = bool] {
|
||||
// CHECK:STDOUT: %bool.make_type.loc20: init type = call constants.%Bool() [concrete = bool]
|
||||
// CHECK:STDOUT: %.loc20_16.2: type = value_of_initializer %bool.make_type.loc20 [concrete = bool]
|
||||
// CHECK:STDOUT: %.loc20_16.3: type = converted %bool.make_type.loc20, %.loc20_16.2 [concrete = bool]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %not_false: bool = bind_name not_false, @__global_init.%.loc19
|
||||
// CHECK:STDOUT: %not_false: bool = bind_name not_false, @__global_init.%.loc20
|
||||
// CHECK:STDOUT: %Constant.decl: %Constant.type = fn_decl @Constant [concrete = constants.%Constant] {} {}
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @Not(%b.param: bool) -> bool {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %b.ref: bool = name_ref b, %b
|
||||
// CHECK:STDOUT: %.loc15: bool = not %b.ref
|
||||
// CHECK:STDOUT: return %.loc15
|
||||
// CHECK:STDOUT: %.loc16: bool = not %b.ref
|
||||
// CHECK:STDOUT: return %.loc16
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @Constant() {
|
||||
@@ -123,84 +124,84 @@ fn Constant() {
|
||||
// CHECK:STDOUT: %a.var_patt: %pattern_type.cb1 = var_pattern %a.patt [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %a.var: ref %empty_tuple.type = var %a.var_patt
|
||||
// CHECK:STDOUT: %.loc22_43.1: %empty_tuple.type = tuple_literal ()
|
||||
// CHECK:STDOUT: %.loc22_43.2: init %empty_tuple.type = tuple_init () to %a.var [concrete = constants.%empty_tuple]
|
||||
// CHECK:STDOUT: %.loc22_3: init %empty_tuple.type = converted %.loc22_43.1, %.loc22_43.2 [concrete = constants.%empty_tuple]
|
||||
// CHECK:STDOUT: assign %a.var, %.loc22_3
|
||||
// CHECK:STDOUT: br !.loc22_17
|
||||
// CHECK:STDOUT: %.loc23_43.1: %empty_tuple.type = tuple_literal ()
|
||||
// CHECK:STDOUT: %.loc23_43.2: init %empty_tuple.type = tuple_init () to %a.var [concrete = constants.%empty_tuple]
|
||||
// CHECK:STDOUT: %.loc23_3: init %empty_tuple.type = converted %.loc23_43.1, %.loc23_43.2 [concrete = constants.%empty_tuple]
|
||||
// CHECK:STDOUT: assign %a.var, %.loc23_3
|
||||
// CHECK:STDOUT: br !.loc23_17
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !.loc22_17:
|
||||
// CHECK:STDOUT: %true.loc22: bool = bool_literal true [concrete = constants.%true]
|
||||
// CHECK:STDOUT: %.loc22_13: bool = not %true.loc22 [concrete = constants.%false]
|
||||
// CHECK:STDOUT: if %.loc22_13 br !if.expr.then.loc22 else br !if.expr.else.loc22
|
||||
// CHECK:STDOUT: !.loc23_17:
|
||||
// CHECK:STDOUT: %true.loc23: bool = bool_literal true [concrete = constants.%true]
|
||||
// CHECK:STDOUT: %.loc23_13: bool = not %true.loc23 [concrete = constants.%false]
|
||||
// CHECK:STDOUT: if %.loc23_13 br !if.expr.then.loc23 else br !if.expr.else.loc23
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !if.expr.then.loc22:
|
||||
// CHECK:STDOUT: %bool.make_type.loc22: init type = call constants.%Bool() [concrete = bool]
|
||||
// CHECK:STDOUT: %.loc22_27.1: type = value_of_initializer %bool.make_type.loc22 [concrete = bool]
|
||||
// CHECK:STDOUT: %.loc22_27.2: type = converted %bool.make_type.loc22, %.loc22_27.1 [concrete = bool]
|
||||
// CHECK:STDOUT: br !if.expr.result.loc22(%.loc22_27.2)
|
||||
// CHECK:STDOUT: !if.expr.then.loc23:
|
||||
// CHECK:STDOUT: %bool.make_type.loc23: init type = call constants.%Bool() [concrete = bool]
|
||||
// CHECK:STDOUT: %.loc23_27.1: type = value_of_initializer %bool.make_type.loc23 [concrete = bool]
|
||||
// CHECK:STDOUT: %.loc23_27.2: type = converted %bool.make_type.loc23, %.loc23_27.1 [concrete = bool]
|
||||
// CHECK:STDOUT: br !if.expr.result.loc23(%.loc23_27.2)
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !if.expr.else.loc22:
|
||||
// CHECK:STDOUT: %.loc22_38: %empty_tuple.type = tuple_literal ()
|
||||
// CHECK:STDOUT: %.loc22_32: type = converted %.loc22_38, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: br !if.expr.result.loc22(%.loc22_32)
|
||||
// CHECK:STDOUT: !if.expr.else.loc23:
|
||||
// CHECK:STDOUT: %.loc23_38: %empty_tuple.type = tuple_literal ()
|
||||
// CHECK:STDOUT: %.loc23_32: type = converted %.loc23_38, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: br !if.expr.result.loc23(%.loc23_32)
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !if.expr.result.loc22:
|
||||
// CHECK:STDOUT: %.loc22_10: type = block_arg !if.expr.result.loc22 [concrete = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: br !.loc22_7
|
||||
// CHECK:STDOUT: !if.expr.result.loc23:
|
||||
// CHECK:STDOUT: %.loc23_10: type = block_arg !if.expr.result.loc23 [concrete = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: br !.loc23_7
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !.loc22_7:
|
||||
// CHECK:STDOUT: !.loc23_7:
|
||||
// CHECK:STDOUT: %a: ref %empty_tuple.type = bind_name a, %a.var
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %b.patt: %pattern_type.831 = binding_pattern b [concrete]
|
||||
// CHECK:STDOUT: %b.var_patt: %pattern_type.831 = var_pattern %b.patt [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %b.var: ref bool = var %b.var_patt
|
||||
// CHECK:STDOUT: %true.loc23: bool = bool_literal true [concrete = constants.%true]
|
||||
// CHECK:STDOUT: assign %b.var, %true.loc23
|
||||
// CHECK:STDOUT: br !.loc23_17
|
||||
// CHECK:STDOUT: %true.loc24: bool = bool_literal true [concrete = constants.%true]
|
||||
// CHECK:STDOUT: assign %b.var, %true.loc24
|
||||
// CHECK:STDOUT: br !.loc24_17
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !.loc23_17:
|
||||
// CHECK:STDOUT: !.loc24_17:
|
||||
// CHECK:STDOUT: %false: bool = bool_literal false [concrete = constants.%false]
|
||||
// CHECK:STDOUT: %.loc23_13: bool = not %false [concrete = constants.%true]
|
||||
// CHECK:STDOUT: if %.loc23_13 br !if.expr.then.loc23 else br !if.expr.else.loc23
|
||||
// CHECK:STDOUT: %.loc24_13: bool = not %false [concrete = constants.%true]
|
||||
// CHECK:STDOUT: if %.loc24_13 br !if.expr.then.loc24 else br !if.expr.else.loc24
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !if.expr.then.loc23:
|
||||
// CHECK:STDOUT: %bool.make_type.loc23: init type = call constants.%Bool() [concrete = bool]
|
||||
// CHECK:STDOUT: %.loc23_28.1: type = value_of_initializer %bool.make_type.loc23 [concrete = bool]
|
||||
// CHECK:STDOUT: %.loc23_28.2: type = converted %bool.make_type.loc23, %.loc23_28.1 [concrete = bool]
|
||||
// CHECK:STDOUT: br !if.expr.result.loc23(%.loc23_28.2)
|
||||
// CHECK:STDOUT: !if.expr.then.loc24:
|
||||
// CHECK:STDOUT: %bool.make_type.loc24: init type = call constants.%Bool() [concrete = bool]
|
||||
// CHECK:STDOUT: %.loc24_28.1: type = value_of_initializer %bool.make_type.loc24 [concrete = bool]
|
||||
// CHECK:STDOUT: %.loc24_28.2: type = converted %bool.make_type.loc24, %.loc24_28.1 [concrete = bool]
|
||||
// CHECK:STDOUT: br !if.expr.result.loc24(%.loc24_28.2)
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !if.expr.else.loc23:
|
||||
// CHECK:STDOUT: %.loc23_39: %empty_tuple.type = tuple_literal ()
|
||||
// CHECK:STDOUT: %.loc23_33: type = converted %.loc23_39, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: br !if.expr.result.loc23(%.loc23_33)
|
||||
// CHECK:STDOUT: !if.expr.else.loc24:
|
||||
// CHECK:STDOUT: %.loc24_39: %empty_tuple.type = tuple_literal ()
|
||||
// CHECK:STDOUT: %.loc24_33: type = converted %.loc24_39, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: br !if.expr.result.loc24(%.loc24_33)
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !if.expr.result.loc23:
|
||||
// CHECK:STDOUT: %.loc23_10: type = block_arg !if.expr.result.loc23 [concrete = bool]
|
||||
// CHECK:STDOUT: br !.loc23_7
|
||||
// CHECK:STDOUT: !if.expr.result.loc24:
|
||||
// CHECK:STDOUT: %.loc24_10: type = block_arg !if.expr.result.loc24 [concrete = bool]
|
||||
// CHECK:STDOUT: br !.loc24_7
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !.loc23_7:
|
||||
// CHECK:STDOUT: !.loc24_7:
|
||||
// CHECK:STDOUT: %b: ref bool = bind_name b, %b.var
|
||||
// CHECK:STDOUT: %Op.bound.loc23: <bound method> = bound_method %b.var, constants.%Op.8b7
|
||||
// CHECK:STDOUT: %Op.bound.loc24: <bound method> = bound_method %b.var, constants.%Op.8b7
|
||||
// CHECK:STDOUT: %Op.specific_fn.1: <specific function> = specific_function constants.%Op.8b7, @Op.2(bool) [concrete = constants.%Op.specific_fn.c3f]
|
||||
// CHECK:STDOUT: %bound_method.loc23: <bound method> = bound_method %b.var, %Op.specific_fn.1
|
||||
// CHECK:STDOUT: %addr.loc23: %ptr.bb2 = addr_of %b.var
|
||||
// CHECK:STDOUT: %no_op.loc23: init %empty_tuple.type = call %bound_method.loc23(%addr.loc23)
|
||||
// CHECK:STDOUT: %Op.bound.loc22: <bound method> = bound_method %a.var, constants.%Op.ea3
|
||||
// CHECK:STDOUT: %bound_method.loc24: <bound method> = bound_method %b.var, %Op.specific_fn.1
|
||||
// CHECK:STDOUT: %addr.loc24: %ptr.bb2 = addr_of %b.var
|
||||
// CHECK:STDOUT: %no_op.loc24: init %empty_tuple.type = call %bound_method.loc24(%addr.loc24)
|
||||
// CHECK:STDOUT: %Op.bound.loc23: <bound method> = bound_method %a.var, constants.%Op.ea3
|
||||
// CHECK:STDOUT: %Op.specific_fn.2: <specific function> = specific_function constants.%Op.ea3, @Op.2(constants.%empty_tuple.type) [concrete = constants.%Op.specific_fn.393]
|
||||
// CHECK:STDOUT: %bound_method.loc22: <bound method> = bound_method %a.var, %Op.specific_fn.2
|
||||
// CHECK:STDOUT: %addr.loc22: %ptr.843 = addr_of %a.var
|
||||
// CHECK:STDOUT: %no_op.loc22: init %empty_tuple.type = call %bound_method.loc22(%addr.loc22)
|
||||
// CHECK:STDOUT: %bound_method.loc23: <bound method> = bound_method %a.var, %Op.specific_fn.2
|
||||
// CHECK:STDOUT: %addr.loc23: %ptr.843 = addr_of %a.var
|
||||
// CHECK:STDOUT: %no_op.loc23: init %empty_tuple.type = call %bound_method.loc23(%addr.loc23)
|
||||
// CHECK:STDOUT: return
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @__global_init() {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %true: bool = bool_literal true [concrete = constants.%true]
|
||||
// CHECK:STDOUT: %.loc18: bool = not %true [concrete = constants.%false]
|
||||
// CHECK:STDOUT: %.loc19: bool = not %true [concrete = constants.%false]
|
||||
// CHECK:STDOUT: %false: bool = bool_literal false [concrete = constants.%false]
|
||||
// CHECK:STDOUT: %.loc19: bool = not %false [concrete = constants.%true]
|
||||
// CHECK:STDOUT: %.loc20: bool = not %false [concrete = constants.%true]
|
||||
// CHECK:STDOUT: return
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
// Exceptions. See /LICENSE for license information.
|
||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
//
|
||||
// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/full.carbon
|
||||
// TODO: Add ranges and switch to "--dump-sem-ir-ranges=only".
|
||||
// EXTRA-ARGS: --dump-sem-ir-ranges=if-present
|
||||
//
|
||||
@@ -46,14 +47,14 @@ fn TestAssign(a: C*, b: C) {
|
||||
// CHECK:STDOUT: %AddWith.type.ffb: type = facet_type <@AddWith, @AddWith(%C)> [concrete]
|
||||
// CHECK:STDOUT: %Op.type.45e: type = fn_type @Op.1, @AddWith(%C) [concrete]
|
||||
// CHECK:STDOUT: %AddWith.impl_witness: <witness> = impl_witness file.%AddWith.impl_witness_table [concrete]
|
||||
// CHECK:STDOUT: %Op.type.638: type = fn_type @Op.loc21 [concrete]
|
||||
// CHECK:STDOUT: %Op.type.638: type = fn_type @Op.loc22 [concrete]
|
||||
// CHECK:STDOUT: %Op.276: %Op.type.638 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %AddWith.facet.3ef: %AddWith.type.ffb = facet_value %C, (%AddWith.impl_witness) [concrete]
|
||||
// CHECK:STDOUT: %AddAssignWith.type.393: type = facet_type <@AddAssignWith, @AddAssignWith(%C)> [concrete]
|
||||
// CHECK:STDOUT: %Op.type.5af: type = fn_type @Op.6, @AddAssignWith(%C) [concrete]
|
||||
// CHECK:STDOUT: %AddAssignWith.impl_witness: <witness> = impl_witness file.%AddAssignWith.impl_witness_table [concrete]
|
||||
// CHECK:STDOUT: %ptr.019: type = ptr_type %C [concrete]
|
||||
// CHECK:STDOUT: %Op.type.0d7: type = fn_type @Op.loc26 [concrete]
|
||||
// CHECK:STDOUT: %Op.type.0d7: type = fn_type @Op.loc27 [concrete]
|
||||
// CHECK:STDOUT: %Op.572: %Op.type.0d7 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %AddAssignWith.facet: %AddAssignWith.type.393 = facet_value %C, (%AddAssignWith.impl_witness) [concrete]
|
||||
// CHECK:STDOUT: %.268: type = fn_type_with_self_type %Op.type.45e, %AddWith.facet.3ef [concrete]
|
||||
@@ -68,9 +69,9 @@ fn TestAssign(a: C*, b: C) {
|
||||
// CHECK:STDOUT: %a.ref: %C = name_ref a, %a
|
||||
// CHECK:STDOUT: %b.ref: %C = name_ref b, %b
|
||||
// CHECK:STDOUT: %impl.elem1: %.268 = impl_witness_access constants.%AddWith.impl_witness, element1 [concrete = constants.%Op.276]
|
||||
// CHECK:STDOUT: %bound_method.loc31: <bound method> = bound_method %a.ref, %impl.elem1
|
||||
// CHECK:STDOUT: %bound_method.loc32: <bound method> = bound_method %a.ref, %impl.elem1
|
||||
// CHECK:STDOUT: <elided>
|
||||
// CHECK:STDOUT: %Op.call: init %C = call %bound_method.loc31(%a.ref, %b.ref) to %.loc29
|
||||
// CHECK:STDOUT: %Op.call: init %C = call %bound_method.loc32(%a.ref, %b.ref) to %.loc30
|
||||
// CHECK:STDOUT: <elided>
|
||||
// CHECK:STDOUT: return %Op.call to %return
|
||||
// CHECK:STDOUT: }
|
||||
@@ -78,11 +79,11 @@ fn TestAssign(a: C*, b: C) {
|
||||
// CHECK:STDOUT: fn @TestAssign(%a.param: %ptr.019, %b.param: %C) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %a.ref: %ptr.019 = name_ref a, %a
|
||||
// CHECK:STDOUT: %.loc37: ref %C = deref %a.ref
|
||||
// CHECK:STDOUT: %.loc38: ref %C = deref %a.ref
|
||||
// CHECK:STDOUT: %b.ref: %C = name_ref b, %b
|
||||
// CHECK:STDOUT: %impl.elem0: %.e2d = impl_witness_access constants.%AddAssignWith.impl_witness, element0 [concrete = constants.%Op.572]
|
||||
// CHECK:STDOUT: %bound_method: <bound method> = bound_method %.loc37, %impl.elem0
|
||||
// CHECK:STDOUT: %addr: %ptr.019 = addr_of %.loc37
|
||||
// CHECK:STDOUT: %bound_method: <bound method> = bound_method %.loc38, %impl.elem0
|
||||
// CHECK:STDOUT: %addr: %ptr.019 = addr_of %.loc38
|
||||
// CHECK:STDOUT: %Op.call: init %empty_tuple.type = call %bound_method(%addr, %b.ref)
|
||||
// CHECK:STDOUT: <elided>
|
||||
// CHECK:STDOUT: }
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
// Exceptions. See /LICENSE for license information.
|
||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
//
|
||||
// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/full.carbon
|
||||
// TODO: Add ranges and switch to "--dump-sem-ir-ranges=only".
|
||||
// EXTRA-ARGS: --dump-sem-ir-ranges=if-present
|
||||
//
|
||||
@@ -46,14 +47,14 @@ fn TestAssign(a: C*, b: C) {
|
||||
// CHECK:STDOUT: %BitAndWith.type.e40: type = facet_type <@BitAndWith, @BitAndWith(%C)> [concrete]
|
||||
// CHECK:STDOUT: %Op.type.914: type = fn_type @Op.1, @BitAndWith(%C) [concrete]
|
||||
// CHECK:STDOUT: %BitAndWith.impl_witness: <witness> = impl_witness file.%BitAndWith.impl_witness_table [concrete]
|
||||
// CHECK:STDOUT: %Op.type.bcc: type = fn_type @Op.loc21 [concrete]
|
||||
// CHECK:STDOUT: %Op.type.bcc: type = fn_type @Op.loc22 [concrete]
|
||||
// CHECK:STDOUT: %Op.c46: %Op.type.bcc = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %BitAndWith.facet.783: %BitAndWith.type.e40 = facet_value %C, (%BitAndWith.impl_witness) [concrete]
|
||||
// CHECK:STDOUT: %BitAndAssignWith.type.e85: type = facet_type <@BitAndAssignWith, @BitAndAssignWith(%C)> [concrete]
|
||||
// CHECK:STDOUT: %Op.type.73d: type = fn_type @Op.6, @BitAndAssignWith(%C) [concrete]
|
||||
// CHECK:STDOUT: %BitAndAssignWith.impl_witness: <witness> = impl_witness file.%BitAndAssignWith.impl_witness_table [concrete]
|
||||
// CHECK:STDOUT: %ptr.019: type = ptr_type %C [concrete]
|
||||
// CHECK:STDOUT: %Op.type.115: type = fn_type @Op.loc26 [concrete]
|
||||
// CHECK:STDOUT: %Op.type.115: type = fn_type @Op.loc27 [concrete]
|
||||
// CHECK:STDOUT: %Op.270: %Op.type.115 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %BitAndAssignWith.facet: %BitAndAssignWith.type.e85 = facet_value %C, (%BitAndAssignWith.impl_witness) [concrete]
|
||||
// CHECK:STDOUT: %.04a: type = fn_type_with_self_type %Op.type.914, %BitAndWith.facet.783 [concrete]
|
||||
@@ -68,9 +69,9 @@ fn TestAssign(a: C*, b: C) {
|
||||
// CHECK:STDOUT: %a.ref: %C = name_ref a, %a
|
||||
// CHECK:STDOUT: %b.ref: %C = name_ref b, %b
|
||||
// CHECK:STDOUT: %impl.elem1: %.04a = impl_witness_access constants.%BitAndWith.impl_witness, element1 [concrete = constants.%Op.c46]
|
||||
// CHECK:STDOUT: %bound_method.loc31: <bound method> = bound_method %a.ref, %impl.elem1
|
||||
// CHECK:STDOUT: %bound_method.loc32: <bound method> = bound_method %a.ref, %impl.elem1
|
||||
// CHECK:STDOUT: <elided>
|
||||
// CHECK:STDOUT: %Op.call: init %C = call %bound_method.loc31(%a.ref, %b.ref) to %.loc29
|
||||
// CHECK:STDOUT: %Op.call: init %C = call %bound_method.loc32(%a.ref, %b.ref) to %.loc30
|
||||
// CHECK:STDOUT: <elided>
|
||||
// CHECK:STDOUT: return %Op.call to %return
|
||||
// CHECK:STDOUT: }
|
||||
@@ -78,11 +79,11 @@ fn TestAssign(a: C*, b: C) {
|
||||
// CHECK:STDOUT: fn @TestAssign(%a.param: %ptr.019, %b.param: %C) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %a.ref: %ptr.019 = name_ref a, %a
|
||||
// CHECK:STDOUT: %.loc37: ref %C = deref %a.ref
|
||||
// CHECK:STDOUT: %.loc38: ref %C = deref %a.ref
|
||||
// CHECK:STDOUT: %b.ref: %C = name_ref b, %b
|
||||
// CHECK:STDOUT: %impl.elem0: %.554 = impl_witness_access constants.%BitAndAssignWith.impl_witness, element0 [concrete = constants.%Op.270]
|
||||
// CHECK:STDOUT: %bound_method: <bound method> = bound_method %.loc37, %impl.elem0
|
||||
// CHECK:STDOUT: %addr: %ptr.019 = addr_of %.loc37
|
||||
// CHECK:STDOUT: %bound_method: <bound method> = bound_method %.loc38, %impl.elem0
|
||||
// CHECK:STDOUT: %addr: %ptr.019 = addr_of %.loc38
|
||||
// CHECK:STDOUT: %Op.call: init %empty_tuple.type = call %bound_method(%addr, %b.ref)
|
||||
// CHECK:STDOUT: <elided>
|
||||
// CHECK:STDOUT: }
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
// Exceptions. See /LICENSE for license information.
|
||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
//
|
||||
// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/full.carbon
|
||||
// TODO: Add ranges and switch to "--dump-sem-ir-ranges=only".
|
||||
// EXTRA-ARGS: --dump-sem-ir-ranges=if-present
|
||||
//
|
||||
@@ -36,7 +37,7 @@ fn TestOp(a: C) -> C {
|
||||
// CHECK:STDOUT: %BitComplement.type: type = facet_type <@BitComplement> [concrete]
|
||||
// CHECK:STDOUT: %Op.type.f25: type = fn_type @Op.6 [concrete]
|
||||
// CHECK:STDOUT: %BitComplement.impl_witness: <witness> = impl_witness file.%BitComplement.impl_witness_table [concrete]
|
||||
// CHECK:STDOUT: %Op.type.e57: type = fn_type @Op.loc21 [concrete]
|
||||
// CHECK:STDOUT: %Op.type.e57: type = fn_type @Op.loc22 [concrete]
|
||||
// CHECK:STDOUT: %Op.d4b: %Op.type.e57 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %BitComplement.facet.c4c: %BitComplement.type = facet_value %C, (%BitComplement.impl_witness) [concrete]
|
||||
// CHECK:STDOUT: %.18b: type = fn_type_with_self_type %Op.type.f25, %BitComplement.facet.c4c [concrete]
|
||||
@@ -49,9 +50,9 @@ fn TestOp(a: C) -> C {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %a.ref: %C = name_ref a, %a
|
||||
// CHECK:STDOUT: %impl.elem1: %.18b = impl_witness_access constants.%BitComplement.impl_witness, element1 [concrete = constants.%Op.d4b]
|
||||
// CHECK:STDOUT: %bound_method.loc28: <bound method> = bound_method %a.ref, %impl.elem1
|
||||
// CHECK:STDOUT: %bound_method.loc29: <bound method> = bound_method %a.ref, %impl.elem1
|
||||
// CHECK:STDOUT: <elided>
|
||||
// CHECK:STDOUT: %Op.call: init %C = call %bound_method.loc28(%a.ref) to %.loc26
|
||||
// CHECK:STDOUT: %Op.call: init %C = call %bound_method.loc29(%a.ref) to %.loc27
|
||||
// CHECK:STDOUT: <elided>
|
||||
// CHECK:STDOUT: return %Op.call to %return
|
||||
// CHECK:STDOUT: }
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
// Exceptions. See /LICENSE for license information.
|
||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
//
|
||||
// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/full.carbon
|
||||
// TODO: Add ranges and switch to "--dump-sem-ir-ranges=only".
|
||||
// EXTRA-ARGS: --dump-sem-ir-ranges=if-present
|
||||
//
|
||||
@@ -46,14 +47,14 @@ fn TestAssign(a: C*, b: C) {
|
||||
// CHECK:STDOUT: %BitOrWith.type.502: type = facet_type <@BitOrWith, @BitOrWith(%C)> [concrete]
|
||||
// CHECK:STDOUT: %Op.type.501: type = fn_type @Op.1, @BitOrWith(%C) [concrete]
|
||||
// CHECK:STDOUT: %BitOrWith.impl_witness: <witness> = impl_witness file.%BitOrWith.impl_witness_table [concrete]
|
||||
// CHECK:STDOUT: %Op.type.cc7: type = fn_type @Op.loc21 [concrete]
|
||||
// CHECK:STDOUT: %Op.type.cc7: type = fn_type @Op.loc22 [concrete]
|
||||
// CHECK:STDOUT: %Op.3e9: %Op.type.cc7 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %BitOrWith.facet.f19: %BitOrWith.type.502 = facet_value %C, (%BitOrWith.impl_witness) [concrete]
|
||||
// CHECK:STDOUT: %BitOrAssignWith.type.3e6: type = facet_type <@BitOrAssignWith, @BitOrAssignWith(%C)> [concrete]
|
||||
// CHECK:STDOUT: %Op.type.efc: type = fn_type @Op.6, @BitOrAssignWith(%C) [concrete]
|
||||
// CHECK:STDOUT: %BitOrAssignWith.impl_witness: <witness> = impl_witness file.%BitOrAssignWith.impl_witness_table [concrete]
|
||||
// CHECK:STDOUT: %ptr.019: type = ptr_type %C [concrete]
|
||||
// CHECK:STDOUT: %Op.type.4ee: type = fn_type @Op.loc26 [concrete]
|
||||
// CHECK:STDOUT: %Op.type.4ee: type = fn_type @Op.loc27 [concrete]
|
||||
// CHECK:STDOUT: %Op.afa: %Op.type.4ee = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %BitOrAssignWith.facet: %BitOrAssignWith.type.3e6 = facet_value %C, (%BitOrAssignWith.impl_witness) [concrete]
|
||||
// CHECK:STDOUT: %.b8d: type = fn_type_with_self_type %Op.type.501, %BitOrWith.facet.f19 [concrete]
|
||||
@@ -68,9 +69,9 @@ fn TestAssign(a: C*, b: C) {
|
||||
// CHECK:STDOUT: %a.ref: %C = name_ref a, %a
|
||||
// CHECK:STDOUT: %b.ref: %C = name_ref b, %b
|
||||
// CHECK:STDOUT: %impl.elem1: %.b8d = impl_witness_access constants.%BitOrWith.impl_witness, element1 [concrete = constants.%Op.3e9]
|
||||
// CHECK:STDOUT: %bound_method.loc31: <bound method> = bound_method %a.ref, %impl.elem1
|
||||
// CHECK:STDOUT: %bound_method.loc32: <bound method> = bound_method %a.ref, %impl.elem1
|
||||
// CHECK:STDOUT: <elided>
|
||||
// CHECK:STDOUT: %Op.call: init %C = call %bound_method.loc31(%a.ref, %b.ref) to %.loc29
|
||||
// CHECK:STDOUT: %Op.call: init %C = call %bound_method.loc32(%a.ref, %b.ref) to %.loc30
|
||||
// CHECK:STDOUT: <elided>
|
||||
// CHECK:STDOUT: return %Op.call to %return
|
||||
// CHECK:STDOUT: }
|
||||
@@ -78,11 +79,11 @@ fn TestAssign(a: C*, b: C) {
|
||||
// CHECK:STDOUT: fn @TestAssign(%a.param: %ptr.019, %b.param: %C) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %a.ref: %ptr.019 = name_ref a, %a
|
||||
// CHECK:STDOUT: %.loc37: ref %C = deref %a.ref
|
||||
// CHECK:STDOUT: %.loc38: ref %C = deref %a.ref
|
||||
// CHECK:STDOUT: %b.ref: %C = name_ref b, %b
|
||||
// CHECK:STDOUT: %impl.elem0: %.c8a = impl_witness_access constants.%BitOrAssignWith.impl_witness, element0 [concrete = constants.%Op.afa]
|
||||
// CHECK:STDOUT: %bound_method: <bound method> = bound_method %.loc37, %impl.elem0
|
||||
// CHECK:STDOUT: %addr: %ptr.019 = addr_of %.loc37
|
||||
// CHECK:STDOUT: %bound_method: <bound method> = bound_method %.loc38, %impl.elem0
|
||||
// CHECK:STDOUT: %addr: %ptr.019 = addr_of %.loc38
|
||||
// CHECK:STDOUT: %Op.call: init %empty_tuple.type = call %bound_method(%addr, %b.ref)
|
||||
// CHECK:STDOUT: <elided>
|
||||
// CHECK:STDOUT: }
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
// Exceptions. See /LICENSE for license information.
|
||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
//
|
||||
// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/full.carbon
|
||||
// TODO: Add ranges and switch to "--dump-sem-ir-ranges=only".
|
||||
// EXTRA-ARGS: --dump-sem-ir-ranges=if-present
|
||||
//
|
||||
@@ -46,14 +47,14 @@ fn TestAssign(a: C*, b: C) {
|
||||
// CHECK:STDOUT: %BitXorWith.type.f9b: type = facet_type <@BitXorWith, @BitXorWith(%C)> [concrete]
|
||||
// CHECK:STDOUT: %Op.type.502: type = fn_type @Op.1, @BitXorWith(%C) [concrete]
|
||||
// CHECK:STDOUT: %BitXorWith.impl_witness: <witness> = impl_witness file.%BitXorWith.impl_witness_table [concrete]
|
||||
// CHECK:STDOUT: %Op.type.5e4: type = fn_type @Op.loc21 [concrete]
|
||||
// CHECK:STDOUT: %Op.type.5e4: type = fn_type @Op.loc22 [concrete]
|
||||
// CHECK:STDOUT: %Op.ef1: %Op.type.5e4 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %BitXorWith.facet.d57: %BitXorWith.type.f9b = facet_value %C, (%BitXorWith.impl_witness) [concrete]
|
||||
// CHECK:STDOUT: %BitXorAssignWith.type.57a: type = facet_type <@BitXorAssignWith, @BitXorAssignWith(%C)> [concrete]
|
||||
// CHECK:STDOUT: %Op.type.ad0: type = fn_type @Op.6, @BitXorAssignWith(%C) [concrete]
|
||||
// CHECK:STDOUT: %BitXorAssignWith.impl_witness: <witness> = impl_witness file.%BitXorAssignWith.impl_witness_table [concrete]
|
||||
// CHECK:STDOUT: %ptr.019: type = ptr_type %C [concrete]
|
||||
// CHECK:STDOUT: %Op.type.d64: type = fn_type @Op.loc26 [concrete]
|
||||
// CHECK:STDOUT: %Op.type.d64: type = fn_type @Op.loc27 [concrete]
|
||||
// CHECK:STDOUT: %Op.5e5: %Op.type.d64 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %BitXorAssignWith.facet: %BitXorAssignWith.type.57a = facet_value %C, (%BitXorAssignWith.impl_witness) [concrete]
|
||||
// CHECK:STDOUT: %.c60: type = fn_type_with_self_type %Op.type.502, %BitXorWith.facet.d57 [concrete]
|
||||
@@ -68,9 +69,9 @@ fn TestAssign(a: C*, b: C) {
|
||||
// CHECK:STDOUT: %a.ref: %C = name_ref a, %a
|
||||
// CHECK:STDOUT: %b.ref: %C = name_ref b, %b
|
||||
// CHECK:STDOUT: %impl.elem1: %.c60 = impl_witness_access constants.%BitXorWith.impl_witness, element1 [concrete = constants.%Op.ef1]
|
||||
// CHECK:STDOUT: %bound_method.loc31: <bound method> = bound_method %a.ref, %impl.elem1
|
||||
// CHECK:STDOUT: %bound_method.loc32: <bound method> = bound_method %a.ref, %impl.elem1
|
||||
// CHECK:STDOUT: <elided>
|
||||
// CHECK:STDOUT: %Op.call: init %C = call %bound_method.loc31(%a.ref, %b.ref) to %.loc29
|
||||
// CHECK:STDOUT: %Op.call: init %C = call %bound_method.loc32(%a.ref, %b.ref) to %.loc30
|
||||
// CHECK:STDOUT: <elided>
|
||||
// CHECK:STDOUT: return %Op.call to %return
|
||||
// CHECK:STDOUT: }
|
||||
@@ -78,11 +79,11 @@ fn TestAssign(a: C*, b: C) {
|
||||
// CHECK:STDOUT: fn @TestAssign(%a.param: %ptr.019, %b.param: %C) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %a.ref: %ptr.019 = name_ref a, %a
|
||||
// CHECK:STDOUT: %.loc37: ref %C = deref %a.ref
|
||||
// CHECK:STDOUT: %.loc38: ref %C = deref %a.ref
|
||||
// CHECK:STDOUT: %b.ref: %C = name_ref b, %b
|
||||
// CHECK:STDOUT: %impl.elem0: %.d8a = impl_witness_access constants.%BitXorAssignWith.impl_witness, element0 [concrete = constants.%Op.5e5]
|
||||
// CHECK:STDOUT: %bound_method: <bound method> = bound_method %.loc37, %impl.elem0
|
||||
// CHECK:STDOUT: %addr: %ptr.019 = addr_of %.loc37
|
||||
// CHECK:STDOUT: %bound_method: <bound method> = bound_method %.loc38, %impl.elem0
|
||||
// CHECK:STDOUT: %addr: %ptr.019 = addr_of %.loc38
|
||||
// CHECK:STDOUT: %Op.call: init %empty_tuple.type = call %bound_method(%addr, %b.ref)
|
||||
// CHECK:STDOUT: <elided>
|
||||
// CHECK:STDOUT: }
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
// Exceptions. See /LICENSE for license information.
|
||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
//
|
||||
// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/full.carbon
|
||||
// TODO: Add ranges and switch to "--dump-sem-ir-ranges=only".
|
||||
// EXTRA-ARGS: --dump-sem-ir-ranges=if-present
|
||||
//
|
||||
@@ -37,7 +38,7 @@ fn TestOp() {
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete]
|
||||
// CHECK:STDOUT: %Dec.impl_witness: <witness> = impl_witness file.%Dec.impl_witness_table [concrete]
|
||||
// CHECK:STDOUT: %ptr.019: type = ptr_type %C [concrete]
|
||||
// CHECK:STDOUT: %Op.type.9e0: type = fn_type @Op.loc21 [concrete]
|
||||
// CHECK:STDOUT: %Op.type.9e0: type = fn_type @Op.loc22 [concrete]
|
||||
// CHECK:STDOUT: %Op.cf9: %Op.type.9e0 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %Dec.facet: %Dec.type = facet_value %C, (%Dec.impl_witness) [concrete]
|
||||
// CHECK:STDOUT: %.859: type = fn_type_with_self_type %Op.type.633, %Dec.facet [concrete]
|
||||
@@ -51,9 +52,9 @@ fn TestOp() {
|
||||
// CHECK:STDOUT: <elided>
|
||||
// CHECK:STDOUT: %c.ref: ref %C = name_ref c, %c
|
||||
// CHECK:STDOUT: %impl.elem0: %.859 = impl_witness_access constants.%Dec.impl_witness, element0 [concrete = constants.%Op.cf9]
|
||||
// CHECK:STDOUT: %bound_method.loc27: <bound method> = bound_method %c.ref, %impl.elem0
|
||||
// CHECK:STDOUT: %addr.loc27: %ptr.019 = addr_of %c.ref
|
||||
// CHECK:STDOUT: %Op.call: init %empty_tuple.type = call %bound_method.loc27(%addr.loc27)
|
||||
// CHECK:STDOUT: %bound_method.loc28: <bound method> = bound_method %c.ref, %impl.elem0
|
||||
// CHECK:STDOUT: %addr.loc28: %ptr.019 = addr_of %c.ref
|
||||
// CHECK:STDOUT: %Op.call: init %empty_tuple.type = call %bound_method.loc28(%addr.loc28)
|
||||
// CHECK:STDOUT: <elided>
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
// Exceptions. See /LICENSE for license information.
|
||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
//
|
||||
// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/full.carbon
|
||||
// TODO: Add ranges and switch to "--dump-sem-ir-ranges=only".
|
||||
// EXTRA-ARGS: --dump-sem-ir-ranges=if-present
|
||||
//
|
||||
@@ -46,14 +47,14 @@ fn TestAssign(a: C*, b: C) {
|
||||
// CHECK:STDOUT: %DivWith.type.ead: type = facet_type <@DivWith, @DivWith(%C)> [concrete]
|
||||
// CHECK:STDOUT: %Op.type.c4b: type = fn_type @Op.1, @DivWith(%C) [concrete]
|
||||
// CHECK:STDOUT: %DivWith.impl_witness: <witness> = impl_witness file.%DivWith.impl_witness_table [concrete]
|
||||
// CHECK:STDOUT: %Op.type.a37: type = fn_type @Op.loc21 [concrete]
|
||||
// CHECK:STDOUT: %Op.type.a37: type = fn_type @Op.loc22 [concrete]
|
||||
// CHECK:STDOUT: %Op.5b4: %Op.type.a37 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %DivWith.facet.f3b: %DivWith.type.ead = facet_value %C, (%DivWith.impl_witness) [concrete]
|
||||
// CHECK:STDOUT: %DivAssignWith.type.08b: type = facet_type <@DivAssignWith, @DivAssignWith(%C)> [concrete]
|
||||
// CHECK:STDOUT: %Op.type.629: type = fn_type @Op.6, @DivAssignWith(%C) [concrete]
|
||||
// CHECK:STDOUT: %DivAssignWith.impl_witness: <witness> = impl_witness file.%DivAssignWith.impl_witness_table [concrete]
|
||||
// CHECK:STDOUT: %ptr.019: type = ptr_type %C [concrete]
|
||||
// CHECK:STDOUT: %Op.type.1b1: type = fn_type @Op.loc26 [concrete]
|
||||
// CHECK:STDOUT: %Op.type.1b1: type = fn_type @Op.loc27 [concrete]
|
||||
// CHECK:STDOUT: %Op.27f: %Op.type.1b1 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %DivAssignWith.facet: %DivAssignWith.type.08b = facet_value %C, (%DivAssignWith.impl_witness) [concrete]
|
||||
// CHECK:STDOUT: %.bb6: type = fn_type_with_self_type %Op.type.c4b, %DivWith.facet.f3b [concrete]
|
||||
@@ -68,9 +69,9 @@ fn TestAssign(a: C*, b: C) {
|
||||
// CHECK:STDOUT: %a.ref: %C = name_ref a, %a
|
||||
// CHECK:STDOUT: %b.ref: %C = name_ref b, %b
|
||||
// CHECK:STDOUT: %impl.elem1: %.bb6 = impl_witness_access constants.%DivWith.impl_witness, element1 [concrete = constants.%Op.5b4]
|
||||
// CHECK:STDOUT: %bound_method.loc31: <bound method> = bound_method %a.ref, %impl.elem1
|
||||
// CHECK:STDOUT: %bound_method.loc32: <bound method> = bound_method %a.ref, %impl.elem1
|
||||
// CHECK:STDOUT: <elided>
|
||||
// CHECK:STDOUT: %Op.call: init %C = call %bound_method.loc31(%a.ref, %b.ref) to %.loc29
|
||||
// CHECK:STDOUT: %Op.call: init %C = call %bound_method.loc32(%a.ref, %b.ref) to %.loc30
|
||||
// CHECK:STDOUT: <elided>
|
||||
// CHECK:STDOUT: return %Op.call to %return
|
||||
// CHECK:STDOUT: }
|
||||
@@ -78,11 +79,11 @@ fn TestAssign(a: C*, b: C) {
|
||||
// CHECK:STDOUT: fn @TestAssign(%a.param: %ptr.019, %b.param: %C) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %a.ref: %ptr.019 = name_ref a, %a
|
||||
// CHECK:STDOUT: %.loc37: ref %C = deref %a.ref
|
||||
// CHECK:STDOUT: %.loc38: ref %C = deref %a.ref
|
||||
// CHECK:STDOUT: %b.ref: %C = name_ref b, %b
|
||||
// CHECK:STDOUT: %impl.elem0: %.f19 = impl_witness_access constants.%DivAssignWith.impl_witness, element0 [concrete = constants.%Op.27f]
|
||||
// CHECK:STDOUT: %bound_method: <bound method> = bound_method %.loc37, %impl.elem0
|
||||
// CHECK:STDOUT: %addr: %ptr.019 = addr_of %.loc37
|
||||
// CHECK:STDOUT: %bound_method: <bound method> = bound_method %.loc38, %impl.elem0
|
||||
// CHECK:STDOUT: %addr: %ptr.019 = addr_of %.loc38
|
||||
// CHECK:STDOUT: %Op.call: init %empty_tuple.type = call %bound_method(%addr, %b.ref)
|
||||
// CHECK:STDOUT: <elided>
|
||||
// CHECK:STDOUT: }
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
// Exceptions. See /LICENSE for license information.
|
||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
//
|
||||
// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/full.carbon
|
||||
// TODO: Add ranges and switch to "--dump-sem-ir-ranges=only".
|
||||
// EXTRA-ARGS: --dump-sem-ir-ranges=if-present
|
||||
//
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
// Exceptions. See /LICENSE for license information.
|
||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
//
|
||||
// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/full.carbon
|
||||
// TODO: Add ranges and switch to "--dump-sem-ir-ranges=only".
|
||||
// EXTRA-ARGS: --dump-sem-ir-ranges=if-present
|
||||
//
|
||||
@@ -57,7 +58,7 @@ fn TestAddAssignNonRef(a: C, b: C) {
|
||||
// CHECK:STDOUT: %Inc.impl_witness: <witness> = impl_witness file.%Inc.impl_witness_table [concrete]
|
||||
// CHECK:STDOUT: %ptr.019: type = ptr_type %C [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.44a: type = pattern_type %ptr.019 [concrete]
|
||||
// CHECK:STDOUT: %Op.type.73a: type = fn_type @Op.loc19 [concrete]
|
||||
// CHECK:STDOUT: %Op.type.73a: type = fn_type @Op.loc20 [concrete]
|
||||
// CHECK:STDOUT: %Op.0c9: %Op.type.73a = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %Inc.facet: %Inc.type = facet_value %C, (%Inc.impl_witness) [concrete]
|
||||
// CHECK:STDOUT: %AddAssignWith.type.fc6: type = generic_interface_type @AddAssignWith [concrete]
|
||||
@@ -66,7 +67,7 @@ fn TestAddAssignNonRef(a: C, b: C) {
|
||||
// CHECK:STDOUT: %Op.type.5af: type = fn_type @Op.2, @AddAssignWith(%C) [concrete]
|
||||
// CHECK:STDOUT: %AddAssignWith.impl_witness: <witness> = impl_witness file.%AddAssignWith.impl_witness_table [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.c48: type = pattern_type %C [concrete]
|
||||
// CHECK:STDOUT: %Op.type.0d7: type = fn_type @Op.loc22 [concrete]
|
||||
// CHECK:STDOUT: %Op.type.0d7: type = fn_type @Op.loc23 [concrete]
|
||||
// CHECK:STDOUT: %Op.572: %Op.type.0d7 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %AddAssignWith.facet: %AddAssignWith.type.393 = facet_value %C, (%AddAssignWith.impl_witness) [concrete]
|
||||
// CHECK:STDOUT: %TestIncNonRef.type: type = fn_type @TestIncNonRef [concrete]
|
||||
@@ -111,10 +112,10 @@ fn TestAddAssignNonRef(a: C, b: C) {
|
||||
// CHECK:STDOUT: %Inc.impl_witness_table = impl_witness_table (@Inc.impl.%Op.decl), @Inc.impl [concrete]
|
||||
// CHECK:STDOUT: %Inc.impl_witness: <witness> = impl_witness %Inc.impl_witness_table [concrete = constants.%Inc.impl_witness]
|
||||
// CHECK:STDOUT: impl_decl @AddAssignWith.impl [concrete] {} {
|
||||
// CHECK:STDOUT: %C.ref.loc21_6: type = name_ref C, file.%C.decl [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %C.ref.loc22_6: type = name_ref C, file.%C.decl [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %Core.ref: <namespace> = name_ref Core, imports.%Core [concrete = imports.%Core]
|
||||
// CHECK:STDOUT: %AddAssignWith.ref: %AddAssignWith.type.fc6 = name_ref AddAssignWith, imports.%Core.AddAssignWith [concrete = constants.%AddAssignWith.generic]
|
||||
// CHECK:STDOUT: %C.ref.loc21_30: type = name_ref C, file.%C.decl [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %C.ref.loc22_30: type = name_ref C, file.%C.decl [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %AddAssignWith.type: type = facet_type <@AddAssignWith, @AddAssignWith(constants.%C)> [concrete = constants.%AddAssignWith.type.393]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %AddAssignWith.impl_witness_table = impl_witness_table (@AddAssignWith.impl.%Op.decl), @AddAssignWith.impl [concrete]
|
||||
@@ -134,22 +135,22 @@ fn TestAddAssignNonRef(a: C, b: C) {
|
||||
// CHECK:STDOUT: %b.param_patt: %pattern_type.c48 = value_param_pattern %b.patt, call_param1 [concrete]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %a.param: %C = value_param call_param0
|
||||
// CHECK:STDOUT: %C.ref.loc36_27: type = name_ref C, file.%C.decl [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %C.ref.loc37_27: type = name_ref C, file.%C.decl [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %a: %C = bind_name a, %a.param
|
||||
// CHECK:STDOUT: %b.param: %C = value_param call_param1
|
||||
// CHECK:STDOUT: %C.ref.loc36_33: type = name_ref C, file.%C.decl [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %C.ref.loc37_33: type = name_ref C, file.%C.decl [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %b: %C = bind_name b, %b.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: impl @Inc.impl: %C.ref as %Inc.ref {
|
||||
// CHECK:STDOUT: %Op.decl: %Op.type.73a = fn_decl @Op.loc19 [concrete = constants.%Op.0c9] {
|
||||
// CHECK:STDOUT: %Op.decl: %Op.type.73a = fn_decl @Op.loc20 [concrete = constants.%Op.0c9] {
|
||||
// CHECK:STDOUT: %self.patt: %pattern_type.44a = binding_pattern self [concrete]
|
||||
// CHECK:STDOUT: %self.param_patt: %pattern_type.44a = value_param_pattern %self.patt, call_param0 [concrete]
|
||||
// CHECK:STDOUT: %.loc19_9: %pattern_type.f6d = addr_pattern %self.param_patt [concrete]
|
||||
// CHECK:STDOUT: %.loc20_9: %pattern_type.f6d = addr_pattern %self.param_patt [concrete]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %self.param: %ptr.019 = value_param call_param0
|
||||
// CHECK:STDOUT: %.loc19_21: type = splice_block %ptr [concrete = constants.%ptr.019] {
|
||||
// CHECK:STDOUT: %.loc20_21: type = splice_block %ptr [concrete = constants.%ptr.019] {
|
||||
// CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %ptr: type = ptr_type %C.ref [concrete = constants.%ptr.019]
|
||||
// CHECK:STDOUT: }
|
||||
@@ -162,22 +163,22 @@ fn TestAddAssignNonRef(a: C, b: C) {
|
||||
// CHECK:STDOUT: witness = file.%Inc.impl_witness
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: impl @AddAssignWith.impl: %C.ref.loc21_6 as %AddAssignWith.type {
|
||||
// CHECK:STDOUT: %Op.decl: %Op.type.0d7 = fn_decl @Op.loc22 [concrete = constants.%Op.572] {
|
||||
// CHECK:STDOUT: impl @AddAssignWith.impl: %C.ref.loc22_6 as %AddAssignWith.type {
|
||||
// CHECK:STDOUT: %Op.decl: %Op.type.0d7 = fn_decl @Op.loc23 [concrete = constants.%Op.572] {
|
||||
// CHECK:STDOUT: %self.patt: %pattern_type.44a = binding_pattern self [concrete]
|
||||
// CHECK:STDOUT: %self.param_patt: %pattern_type.44a = value_param_pattern %self.patt, call_param0 [concrete]
|
||||
// CHECK:STDOUT: %.loc22_9: %pattern_type.f6d = addr_pattern %self.param_patt [concrete]
|
||||
// CHECK:STDOUT: %.loc23_9: %pattern_type.f6d = addr_pattern %self.param_patt [concrete]
|
||||
// CHECK:STDOUT: %other.patt: %pattern_type.c48 = binding_pattern other [concrete]
|
||||
// CHECK:STDOUT: %other.param_patt: %pattern_type.c48 = value_param_pattern %other.patt, call_param1 [concrete]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %self.param: %ptr.019 = value_param call_param0
|
||||
// CHECK:STDOUT: %.loc22_21: type = splice_block %ptr [concrete = constants.%ptr.019] {
|
||||
// CHECK:STDOUT: %C.ref.loc22_20: type = name_ref C, file.%C.decl [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %ptr: type = ptr_type %C.ref.loc22_20 [concrete = constants.%ptr.019]
|
||||
// CHECK:STDOUT: %.loc23_21: type = splice_block %ptr [concrete = constants.%ptr.019] {
|
||||
// CHECK:STDOUT: %C.ref.loc23_20: type = name_ref C, file.%C.decl [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %ptr: type = ptr_type %C.ref.loc23_20 [concrete = constants.%ptr.019]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %self: %ptr.019 = bind_name self, %self.param
|
||||
// CHECK:STDOUT: %other.param: %C = value_param call_param1
|
||||
// CHECK:STDOUT: %C.ref.loc22_31: type = name_ref C, file.%C.decl [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %C.ref.loc23_31: type = name_ref C, file.%C.decl [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %other: %C = bind_name other, %other.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -196,23 +197,23 @@ fn TestAddAssignNonRef(a: C, b: C) {
|
||||
// CHECK:STDOUT: .Self = constants.%C
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @Op.loc19(%self.param: %ptr.019);
|
||||
// CHECK:STDOUT: fn @Op.loc20(%self.param: %ptr.019);
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @Op.loc22(%self.param: %ptr.019, %other.param: %C);
|
||||
// CHECK:STDOUT: fn @Op.loc23(%self.param: %ptr.019, %other.param: %C);
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @TestIncNonRef(%a.param: %C) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %a.ref: %C = name_ref a, %a
|
||||
// CHECK:STDOUT: %impl.elem0: %.bc7 = impl_witness_access constants.%Inc.impl_witness, element0 [concrete = constants.%Op.0c9]
|
||||
// CHECK:STDOUT: %bound_method.loc33_3: <bound method> = bound_method %a.ref, %impl.elem0
|
||||
// CHECK:STDOUT: %.loc33: ref %C = temporary_storage
|
||||
// CHECK:STDOUT: %addr.loc33_5.1: %ptr.019 = addr_of %.loc33
|
||||
// CHECK:STDOUT: %Op.call: init %empty_tuple.type = call %bound_method.loc33_3(%addr.loc33_5.1)
|
||||
// CHECK:STDOUT: %Op.bound: <bound method> = bound_method %.loc33, constants.%Op.5d7
|
||||
// CHECK:STDOUT: %bound_method.loc34_3: <bound method> = bound_method %a.ref, %impl.elem0
|
||||
// CHECK:STDOUT: %.loc34: ref %C = temporary_storage
|
||||
// CHECK:STDOUT: %addr.loc34_5.1: %ptr.019 = addr_of %.loc34
|
||||
// CHECK:STDOUT: %Op.call: init %empty_tuple.type = call %bound_method.loc34_3(%addr.loc34_5.1)
|
||||
// CHECK:STDOUT: %Op.bound: <bound method> = bound_method %.loc34, constants.%Op.5d7
|
||||
// CHECK:STDOUT: %Op.specific_fn: <specific function> = specific_function constants.%Op.5d7, @Op.9(constants.%C) [concrete = constants.%Op.specific_fn]
|
||||
// CHECK:STDOUT: %bound_method.loc33_5: <bound method> = bound_method %.loc33, %Op.specific_fn
|
||||
// CHECK:STDOUT: %addr.loc33_5.2: %ptr.019 = addr_of %.loc33
|
||||
// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc33_5(%addr.loc33_5.2)
|
||||
// CHECK:STDOUT: %bound_method.loc34_5: <bound method> = bound_method %.loc34, %Op.specific_fn
|
||||
// CHECK:STDOUT: %addr.loc34_5.2: %ptr.019 = addr_of %.loc34
|
||||
// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc34_5(%addr.loc34_5.2)
|
||||
// CHECK:STDOUT: return
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -221,15 +222,15 @@ fn TestAddAssignNonRef(a: C, b: C) {
|
||||
// CHECK:STDOUT: %a.ref: %C = name_ref a, %a
|
||||
// CHECK:STDOUT: %b.ref: %C = name_ref b, %b
|
||||
// CHECK:STDOUT: %impl.elem0: %.e2d = impl_witness_access constants.%AddAssignWith.impl_witness, element0 [concrete = constants.%Op.572]
|
||||
// CHECK:STDOUT: %bound_method.loc44_5: <bound method> = bound_method %a.ref, %impl.elem0
|
||||
// CHECK:STDOUT: %.loc44: ref %C = temporary_storage
|
||||
// CHECK:STDOUT: %addr.loc44_3.1: %ptr.019 = addr_of %.loc44
|
||||
// CHECK:STDOUT: %Op.call: init %empty_tuple.type = call %bound_method.loc44_5(%addr.loc44_3.1, %b.ref)
|
||||
// CHECK:STDOUT: %Op.bound: <bound method> = bound_method %.loc44, constants.%Op.5d7
|
||||
// CHECK:STDOUT: %bound_method.loc45_5: <bound method> = bound_method %a.ref, %impl.elem0
|
||||
// CHECK:STDOUT: %.loc45: ref %C = temporary_storage
|
||||
// CHECK:STDOUT: %addr.loc45_3.1: %ptr.019 = addr_of %.loc45
|
||||
// CHECK:STDOUT: %Op.call: init %empty_tuple.type = call %bound_method.loc45_5(%addr.loc45_3.1, %b.ref)
|
||||
// CHECK:STDOUT: %Op.bound: <bound method> = bound_method %.loc45, constants.%Op.5d7
|
||||
// CHECK:STDOUT: %Op.specific_fn: <specific function> = specific_function constants.%Op.5d7, @Op.9(constants.%C) [concrete = constants.%Op.specific_fn]
|
||||
// CHECK:STDOUT: %bound_method.loc44_3: <bound method> = bound_method %.loc44, %Op.specific_fn
|
||||
// CHECK:STDOUT: %addr.loc44_3.2: %ptr.019 = addr_of %.loc44
|
||||
// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc44_3(%addr.loc44_3.2)
|
||||
// CHECK:STDOUT: %bound_method.loc45_3: <bound method> = bound_method %.loc45, %Op.specific_fn
|
||||
// CHECK:STDOUT: %addr.loc45_3.2: %ptr.019 = addr_of %.loc45
|
||||
// CHECK:STDOUT: %no_op: init %empty_tuple.type = call %bound_method.loc45_3(%addr.loc45_3.2)
|
||||
// CHECK:STDOUT: return
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
// Exceptions. See /LICENSE for license information.
|
||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
//
|
||||
// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/full.carbon
|
||||
// TODO: Add ranges and switch to "--dump-sem-ir-ranges=only".
|
||||
// EXTRA-ARGS: --dump-sem-ir-ranges=if-present
|
||||
//
|
||||
@@ -72,7 +73,7 @@ fn G(n: i32) {
|
||||
// CHECK:STDOUT: %n.param_patt: %pattern_type.7ce = value_param_pattern %n.patt, call_param0 [concrete]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %n.param: %i32 = value_param call_param0
|
||||
// CHECK:STDOUT: %.loc25: type = splice_block %i32 [concrete = constants.%i32] {
|
||||
// CHECK:STDOUT: %.loc26: type = splice_block %i32 [concrete = constants.%i32] {
|
||||
// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: }
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
// Exceptions. See /LICENSE for license information.
|
||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
//
|
||||
// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/full.carbon
|
||||
// TODO: Add ranges and switch to "--dump-sem-ir-ranges=only".
|
||||
// EXTRA-ARGS: --dump-sem-ir-ranges=if-present
|
||||
//
|
||||
@@ -106,9 +107,9 @@ fn TestRef(b: C) {
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.c48 = return_slot_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.c48 = out_param_pattern %return.patt, call_param1 [concrete]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %C.ref.loc18_23: type = name_ref C, file.%C.decl [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %C.ref.loc19_23: type = name_ref C, file.%C.decl [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %a.param: %C = value_param call_param0
|
||||
// CHECK:STDOUT: %C.ref.loc18_17: type = name_ref C, file.%C.decl [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %C.ref.loc19_17: type = name_ref C, file.%C.decl [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %a: %C = bind_name a, %a.param
|
||||
// CHECK:STDOUT: %return.param: ref %C = out_param call_param1
|
||||
// CHECK:STDOUT: %return: ref %C = return_slot %return.param
|
||||
@@ -121,12 +122,12 @@ fn TestRef(b: C) {
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.c48 = return_slot_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.c48 = out_param_pattern %return.patt, call_param2 [concrete]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %C.ref.loc26_30: type = name_ref C, file.%C.decl [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %C.ref.loc27_30: type = name_ref C, file.%C.decl [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %a.param: %C = value_param call_param0
|
||||
// CHECK:STDOUT: %C.ref.loc26_18: type = name_ref C, file.%C.decl [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %C.ref.loc27_18: type = name_ref C, file.%C.decl [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %a: %C = bind_name a, %a.param
|
||||
// CHECK:STDOUT: %b.param: %C = value_param call_param1
|
||||
// CHECK:STDOUT: %C.ref.loc26_24: type = name_ref C, file.%C.decl [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %C.ref.loc27_24: type = name_ref C, file.%C.decl [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %b: %C = bind_name b, %b.param
|
||||
// CHECK:STDOUT: %return.param: ref %C = out_param call_param2
|
||||
// CHECK:STDOUT: %return: ref %C = return_slot %return.param
|
||||
@@ -136,7 +137,7 @@ fn TestRef(b: C) {
|
||||
// CHECK:STDOUT: %b.param_patt: %pattern_type.c48 = value_param_pattern %b.patt, call_param0 [concrete]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %b.param: %C = value_param call_param0
|
||||
// CHECK:STDOUT: %C.ref.loc34: type = name_ref C, file.%C.decl [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %C.ref.loc35: type = name_ref C, file.%C.decl [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %b: %C = bind_name b, %b.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
@@ -170,15 +171,15 @@ fn TestRef(b: C) {
|
||||
// CHECK:STDOUT: %a.var_patt: %pattern_type.c48 = var_pattern %a.patt [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %a.var: ref %C = var %a.var_patt
|
||||
// CHECK:STDOUT: %.loc35_15.1: %empty_struct_type = struct_literal ()
|
||||
// CHECK:STDOUT: %.loc35_15.2: init %C = class_init (), %a.var [concrete = constants.%C.val]
|
||||
// CHECK:STDOUT: %.loc35_3: init %C = converted %.loc35_15.1, %.loc35_15.2 [concrete = constants.%C.val]
|
||||
// CHECK:STDOUT: assign %a.var, %.loc35_3
|
||||
// CHECK:STDOUT: %C.ref.loc35: type = name_ref C, file.%C.decl [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %.loc36_15.1: %empty_struct_type = struct_literal ()
|
||||
// CHECK:STDOUT: %.loc36_15.2: init %C = class_init (), %a.var [concrete = constants.%C.val]
|
||||
// CHECK:STDOUT: %.loc36_3: init %C = converted %.loc36_15.1, %.loc36_15.2 [concrete = constants.%C.val]
|
||||
// CHECK:STDOUT: assign %a.var, %.loc36_3
|
||||
// CHECK:STDOUT: %C.ref.loc36: type = name_ref C, file.%C.decl [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %a: ref %C = bind_name a, %a.var
|
||||
// CHECK:STDOUT: %a.ref.loc40: ref %C = name_ref a, %a
|
||||
// CHECK:STDOUT: %a.ref.loc41: ref %C = name_ref a, %a
|
||||
// CHECK:STDOUT: %b.ref: %C = name_ref b, %b
|
||||
// CHECK:STDOUT: %a.ref.loc45: ref %C = name_ref a, %a
|
||||
// CHECK:STDOUT: %a.ref.loc46: ref %C = name_ref a, %a
|
||||
// CHECK:STDOUT: %Op.bound: <bound method> = bound_method %a.var, constants.%Op.5d7
|
||||
// CHECK:STDOUT: %Op.specific_fn: <specific function> = specific_function constants.%Op.5d7, @Op.10(constants.%C) [concrete = constants.%Op.specific_fn]
|
||||
// CHECK:STDOUT: %bound_method: <bound method> = bound_method %a.var, %Op.specific_fn
|
||||
|
||||
@@ -2,6 +2,8 @@
|
||||
// Exceptions. See /LICENSE for license information.
|
||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
//
|
||||
// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/full.carbon
|
||||
//
|
||||
// AUTOUPDATE
|
||||
// TIP: To test this file alone, run:
|
||||
// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/operators/overloaded/fail_no_impl_for_arg.carbon
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
// Exceptions. See /LICENSE for license information.
|
||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
//
|
||||
// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/full.carbon
|
||||
// TODO: Add ranges and switch to "--dump-sem-ir-ranges=only".
|
||||
// EXTRA-ARGS: --dump-sem-ir-ranges=if-present
|
||||
//
|
||||
@@ -37,7 +38,7 @@ fn TestOp() {
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete]
|
||||
// CHECK:STDOUT: %Inc.impl_witness: <witness> = impl_witness file.%Inc.impl_witness_table [concrete]
|
||||
// CHECK:STDOUT: %ptr.019: type = ptr_type %C [concrete]
|
||||
// CHECK:STDOUT: %Op.type.73a: type = fn_type @Op.loc21 [concrete]
|
||||
// CHECK:STDOUT: %Op.type.73a: type = fn_type @Op.loc22 [concrete]
|
||||
// CHECK:STDOUT: %Op.0c9: %Op.type.73a = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %Inc.facet: %Inc.type = facet_value %C, (%Inc.impl_witness) [concrete]
|
||||
// CHECK:STDOUT: %.bc7: type = fn_type_with_self_type %Op.type.e3a, %Inc.facet [concrete]
|
||||
@@ -51,9 +52,9 @@ fn TestOp() {
|
||||
// CHECK:STDOUT: <elided>
|
||||
// CHECK:STDOUT: %c.ref: ref %C = name_ref c, %c
|
||||
// CHECK:STDOUT: %impl.elem0: %.bc7 = impl_witness_access constants.%Inc.impl_witness, element0 [concrete = constants.%Op.0c9]
|
||||
// CHECK:STDOUT: %bound_method.loc27: <bound method> = bound_method %c.ref, %impl.elem0
|
||||
// CHECK:STDOUT: %addr.loc27: %ptr.019 = addr_of %c.ref
|
||||
// CHECK:STDOUT: %Op.call: init %empty_tuple.type = call %bound_method.loc27(%addr.loc27)
|
||||
// CHECK:STDOUT: %bound_method.loc28: <bound method> = bound_method %c.ref, %impl.elem0
|
||||
// CHECK:STDOUT: %addr.loc28: %ptr.019 = addr_of %c.ref
|
||||
// CHECK:STDOUT: %Op.call: init %empty_tuple.type = call %bound_method.loc28(%addr.loc28)
|
||||
// CHECK:STDOUT: <elided>
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
// Exceptions. See /LICENSE for license information.
|
||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
//
|
||||
// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/full.carbon
|
||||
// TODO: Add ranges and switch to "--dump-sem-ir-ranges=only".
|
||||
// EXTRA-ARGS: --dump-sem-ir-ranges=if-present
|
||||
//
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
// Exceptions. See /LICENSE for license information.
|
||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
//
|
||||
// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/full.carbon
|
||||
// TODO: Add ranges and switch to "--dump-sem-ir-ranges=only".
|
||||
// EXTRA-ARGS: --dump-sem-ir-ranges=if-present
|
||||
//
|
||||
@@ -46,14 +47,14 @@ fn TestAssign(a: C*, b: C) {
|
||||
// CHECK:STDOUT: %LeftShiftWith.type.f92: type = facet_type <@LeftShiftWith, @LeftShiftWith(%C)> [concrete]
|
||||
// CHECK:STDOUT: %Op.type.097: type = fn_type @Op.1, @LeftShiftWith(%C) [concrete]
|
||||
// CHECK:STDOUT: %LeftShiftWith.impl_witness: <witness> = impl_witness file.%LeftShiftWith.impl_witness_table [concrete]
|
||||
// CHECK:STDOUT: %Op.type.be6: type = fn_type @Op.loc21 [concrete]
|
||||
// CHECK:STDOUT: %Op.type.be6: type = fn_type @Op.loc22 [concrete]
|
||||
// CHECK:STDOUT: %Op.4d9: %Op.type.be6 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %LeftShiftWith.facet.662: %LeftShiftWith.type.f92 = facet_value %C, (%LeftShiftWith.impl_witness) [concrete]
|
||||
// CHECK:STDOUT: %LeftShiftAssignWith.type.56d: type = facet_type <@LeftShiftAssignWith, @LeftShiftAssignWith(%C)> [concrete]
|
||||
// CHECK:STDOUT: %Op.type.30f: type = fn_type @Op.6, @LeftShiftAssignWith(%C) [concrete]
|
||||
// CHECK:STDOUT: %LeftShiftAssignWith.impl_witness: <witness> = impl_witness file.%LeftShiftAssignWith.impl_witness_table [concrete]
|
||||
// CHECK:STDOUT: %ptr.019: type = ptr_type %C [concrete]
|
||||
// CHECK:STDOUT: %Op.type.b1b6: type = fn_type @Op.loc26 [concrete]
|
||||
// CHECK:STDOUT: %Op.type.b1b6: type = fn_type @Op.loc27 [concrete]
|
||||
// CHECK:STDOUT: %Op.07c: %Op.type.b1b6 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %LeftShiftAssignWith.facet: %LeftShiftAssignWith.type.56d = facet_value %C, (%LeftShiftAssignWith.impl_witness) [concrete]
|
||||
// CHECK:STDOUT: %.cd9: type = fn_type_with_self_type %Op.type.097, %LeftShiftWith.facet.662 [concrete]
|
||||
@@ -68,9 +69,9 @@ fn TestAssign(a: C*, b: C) {
|
||||
// CHECK:STDOUT: %a.ref: %C = name_ref a, %a
|
||||
// CHECK:STDOUT: %b.ref: %C = name_ref b, %b
|
||||
// CHECK:STDOUT: %impl.elem1: %.cd9 = impl_witness_access constants.%LeftShiftWith.impl_witness, element1 [concrete = constants.%Op.4d9]
|
||||
// CHECK:STDOUT: %bound_method.loc31: <bound method> = bound_method %a.ref, %impl.elem1
|
||||
// CHECK:STDOUT: %bound_method.loc32: <bound method> = bound_method %a.ref, %impl.elem1
|
||||
// CHECK:STDOUT: <elided>
|
||||
// CHECK:STDOUT: %Op.call: init %C = call %bound_method.loc31(%a.ref, %b.ref) to %.loc29
|
||||
// CHECK:STDOUT: %Op.call: init %C = call %bound_method.loc32(%a.ref, %b.ref) to %.loc30
|
||||
// CHECK:STDOUT: <elided>
|
||||
// CHECK:STDOUT: return %Op.call to %return
|
||||
// CHECK:STDOUT: }
|
||||
@@ -78,11 +79,11 @@ fn TestAssign(a: C*, b: C) {
|
||||
// CHECK:STDOUT: fn @TestAssign(%a.param: %ptr.019, %b.param: %C) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %a.ref: %ptr.019 = name_ref a, %a
|
||||
// CHECK:STDOUT: %.loc37: ref %C = deref %a.ref
|
||||
// CHECK:STDOUT: %.loc38: ref %C = deref %a.ref
|
||||
// CHECK:STDOUT: %b.ref: %C = name_ref b, %b
|
||||
// CHECK:STDOUT: %impl.elem0: %.97b = impl_witness_access constants.%LeftShiftAssignWith.impl_witness, element0 [concrete = constants.%Op.07c]
|
||||
// CHECK:STDOUT: %bound_method: <bound method> = bound_method %.loc37, %impl.elem0
|
||||
// CHECK:STDOUT: %addr: %ptr.019 = addr_of %.loc37
|
||||
// CHECK:STDOUT: %bound_method: <bound method> = bound_method %.loc38, %impl.elem0
|
||||
// CHECK:STDOUT: %addr: %ptr.019 = addr_of %.loc38
|
||||
// CHECK:STDOUT: %Op.call: init %empty_tuple.type = call %bound_method(%addr, %b.ref)
|
||||
// CHECK:STDOUT: <elided>
|
||||
// CHECK:STDOUT: }
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
// Exceptions. See /LICENSE for license information.
|
||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
//
|
||||
// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/full.carbon
|
||||
// TODO: Add ranges and switch to "--dump-sem-ir-ranges=only".
|
||||
// EXTRA-ARGS: --dump-sem-ir-ranges=if-present
|
||||
//
|
||||
@@ -46,14 +47,14 @@ fn TestAssign(a: C*, b: C) {
|
||||
// CHECK:STDOUT: %ModWith.type.4d0: type = facet_type <@ModWith, @ModWith(%C)> [concrete]
|
||||
// CHECK:STDOUT: %Op.type.140: type = fn_type @Op.1, @ModWith(%C) [concrete]
|
||||
// CHECK:STDOUT: %ModWith.impl_witness: <witness> = impl_witness file.%ModWith.impl_witness_table [concrete]
|
||||
// CHECK:STDOUT: %Op.type.0ad: type = fn_type @Op.loc21 [concrete]
|
||||
// CHECK:STDOUT: %Op.type.0ad: type = fn_type @Op.loc22 [concrete]
|
||||
// CHECK:STDOUT: %Op.d57: %Op.type.0ad = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %ModWith.facet.517: %ModWith.type.4d0 = facet_value %C, (%ModWith.impl_witness) [concrete]
|
||||
// CHECK:STDOUT: %ModAssignWith.type.8eb: type = facet_type <@ModAssignWith, @ModAssignWith(%C)> [concrete]
|
||||
// CHECK:STDOUT: %Op.type.dd0: type = fn_type @Op.6, @ModAssignWith(%C) [concrete]
|
||||
// CHECK:STDOUT: %ModAssignWith.impl_witness: <witness> = impl_witness file.%ModAssignWith.impl_witness_table [concrete]
|
||||
// CHECK:STDOUT: %ptr.019: type = ptr_type %C [concrete]
|
||||
// CHECK:STDOUT: %Op.type.4dd: type = fn_type @Op.loc26 [concrete]
|
||||
// CHECK:STDOUT: %Op.type.4dd: type = fn_type @Op.loc27 [concrete]
|
||||
// CHECK:STDOUT: %Op.4f0: %Op.type.4dd = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %ModAssignWith.facet: %ModAssignWith.type.8eb = facet_value %C, (%ModAssignWith.impl_witness) [concrete]
|
||||
// CHECK:STDOUT: %.f08: type = fn_type_with_self_type %Op.type.140, %ModWith.facet.517 [concrete]
|
||||
@@ -68,9 +69,9 @@ fn TestAssign(a: C*, b: C) {
|
||||
// CHECK:STDOUT: %a.ref: %C = name_ref a, %a
|
||||
// CHECK:STDOUT: %b.ref: %C = name_ref b, %b
|
||||
// CHECK:STDOUT: %impl.elem1: %.f08 = impl_witness_access constants.%ModWith.impl_witness, element1 [concrete = constants.%Op.d57]
|
||||
// CHECK:STDOUT: %bound_method.loc31: <bound method> = bound_method %a.ref, %impl.elem1
|
||||
// CHECK:STDOUT: %bound_method.loc32: <bound method> = bound_method %a.ref, %impl.elem1
|
||||
// CHECK:STDOUT: <elided>
|
||||
// CHECK:STDOUT: %Op.call: init %C = call %bound_method.loc31(%a.ref, %b.ref) to %.loc29
|
||||
// CHECK:STDOUT: %Op.call: init %C = call %bound_method.loc32(%a.ref, %b.ref) to %.loc30
|
||||
// CHECK:STDOUT: <elided>
|
||||
// CHECK:STDOUT: return %Op.call to %return
|
||||
// CHECK:STDOUT: }
|
||||
@@ -78,11 +79,11 @@ fn TestAssign(a: C*, b: C) {
|
||||
// CHECK:STDOUT: fn @TestAssign(%a.param: %ptr.019, %b.param: %C) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %a.ref: %ptr.019 = name_ref a, %a
|
||||
// CHECK:STDOUT: %.loc37: ref %C = deref %a.ref
|
||||
// CHECK:STDOUT: %.loc38: ref %C = deref %a.ref
|
||||
// CHECK:STDOUT: %b.ref: %C = name_ref b, %b
|
||||
// CHECK:STDOUT: %impl.elem0: %.f3c = impl_witness_access constants.%ModAssignWith.impl_witness, element0 [concrete = constants.%Op.4f0]
|
||||
// CHECK:STDOUT: %bound_method: <bound method> = bound_method %.loc37, %impl.elem0
|
||||
// CHECK:STDOUT: %addr: %ptr.019 = addr_of %.loc37
|
||||
// CHECK:STDOUT: %bound_method: <bound method> = bound_method %.loc38, %impl.elem0
|
||||
// CHECK:STDOUT: %addr: %ptr.019 = addr_of %.loc38
|
||||
// CHECK:STDOUT: %Op.call: init %empty_tuple.type = call %bound_method(%addr, %b.ref)
|
||||
// CHECK:STDOUT: <elided>
|
||||
// CHECK:STDOUT: }
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
// Exceptions. See /LICENSE for license information.
|
||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
//
|
||||
// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/full.carbon
|
||||
// TODO: Add ranges and switch to "--dump-sem-ir-ranges=only".
|
||||
// EXTRA-ARGS: --dump-sem-ir-ranges=if-present
|
||||
//
|
||||
@@ -46,14 +47,14 @@ fn TestAssign(a: C*, b: C) {
|
||||
// CHECK:STDOUT: %MulWith.type.3ed: type = facet_type <@MulWith, @MulWith(%C)> [concrete]
|
||||
// CHECK:STDOUT: %Op.type.2c9: type = fn_type @Op.1, @MulWith(%C) [concrete]
|
||||
// CHECK:STDOUT: %MulWith.impl_witness: <witness> = impl_witness file.%MulWith.impl_witness_table [concrete]
|
||||
// CHECK:STDOUT: %Op.type.304: type = fn_type @Op.loc21 [concrete]
|
||||
// CHECK:STDOUT: %Op.type.304: type = fn_type @Op.loc22 [concrete]
|
||||
// CHECK:STDOUT: %Op.7af: %Op.type.304 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %MulWith.facet.6c2: %MulWith.type.3ed = facet_value %C, (%MulWith.impl_witness) [concrete]
|
||||
// CHECK:STDOUT: %MulAssignWith.type.a15: type = facet_type <@MulAssignWith, @MulAssignWith(%C)> [concrete]
|
||||
// CHECK:STDOUT: %Op.type.5c8: type = fn_type @Op.6, @MulAssignWith(%C) [concrete]
|
||||
// CHECK:STDOUT: %MulAssignWith.impl_witness: <witness> = impl_witness file.%MulAssignWith.impl_witness_table [concrete]
|
||||
// CHECK:STDOUT: %ptr.019: type = ptr_type %C [concrete]
|
||||
// CHECK:STDOUT: %Op.type.e9a: type = fn_type @Op.loc26 [concrete]
|
||||
// CHECK:STDOUT: %Op.type.e9a: type = fn_type @Op.loc27 [concrete]
|
||||
// CHECK:STDOUT: %Op.d43: %Op.type.e9a = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %MulAssignWith.facet: %MulAssignWith.type.a15 = facet_value %C, (%MulAssignWith.impl_witness) [concrete]
|
||||
// CHECK:STDOUT: %.6ce: type = fn_type_with_self_type %Op.type.2c9, %MulWith.facet.6c2 [concrete]
|
||||
@@ -68,9 +69,9 @@ fn TestAssign(a: C*, b: C) {
|
||||
// CHECK:STDOUT: %a.ref: %C = name_ref a, %a
|
||||
// CHECK:STDOUT: %b.ref: %C = name_ref b, %b
|
||||
// CHECK:STDOUT: %impl.elem1: %.6ce = impl_witness_access constants.%MulWith.impl_witness, element1 [concrete = constants.%Op.7af]
|
||||
// CHECK:STDOUT: %bound_method.loc31: <bound method> = bound_method %a.ref, %impl.elem1
|
||||
// CHECK:STDOUT: %bound_method.loc32: <bound method> = bound_method %a.ref, %impl.elem1
|
||||
// CHECK:STDOUT: <elided>
|
||||
// CHECK:STDOUT: %Op.call: init %C = call %bound_method.loc31(%a.ref, %b.ref) to %.loc29
|
||||
// CHECK:STDOUT: %Op.call: init %C = call %bound_method.loc32(%a.ref, %b.ref) to %.loc30
|
||||
// CHECK:STDOUT: <elided>
|
||||
// CHECK:STDOUT: return %Op.call to %return
|
||||
// CHECK:STDOUT: }
|
||||
@@ -78,11 +79,11 @@ fn TestAssign(a: C*, b: C) {
|
||||
// CHECK:STDOUT: fn @TestAssign(%a.param: %ptr.019, %b.param: %C) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %a.ref: %ptr.019 = name_ref a, %a
|
||||
// CHECK:STDOUT: %.loc37: ref %C = deref %a.ref
|
||||
// CHECK:STDOUT: %.loc38: ref %C = deref %a.ref
|
||||
// CHECK:STDOUT: %b.ref: %C = name_ref b, %b
|
||||
// CHECK:STDOUT: %impl.elem0: %.5e8 = impl_witness_access constants.%MulAssignWith.impl_witness, element0 [concrete = constants.%Op.d43]
|
||||
// CHECK:STDOUT: %bound_method: <bound method> = bound_method %.loc37, %impl.elem0
|
||||
// CHECK:STDOUT: %addr: %ptr.019 = addr_of %.loc37
|
||||
// CHECK:STDOUT: %bound_method: <bound method> = bound_method %.loc38, %impl.elem0
|
||||
// CHECK:STDOUT: %addr: %ptr.019 = addr_of %.loc38
|
||||
// CHECK:STDOUT: %Op.call: init %empty_tuple.type = call %bound_method(%addr, %b.ref)
|
||||
// CHECK:STDOUT: <elided>
|
||||
// CHECK:STDOUT: }
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
// Exceptions. See /LICENSE for license information.
|
||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
//
|
||||
// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/full.carbon
|
||||
// TODO: Add ranges and switch to "--dump-sem-ir-ranges=only".
|
||||
// EXTRA-ARGS: --dump-sem-ir-ranges=if-present
|
||||
//
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
// Exceptions. See /LICENSE for license information.
|
||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
//
|
||||
// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/full.carbon
|
||||
// TODO: Add ranges and switch to "--dump-sem-ir-ranges=only".
|
||||
// EXTRA-ARGS: --dump-sem-ir-ranges=if-present
|
||||
//
|
||||
@@ -46,14 +47,14 @@ fn TestAssign(a: C*, b: C) {
|
||||
// CHECK:STDOUT: %RightShiftWith.type.bd6: type = facet_type <@RightShiftWith, @RightShiftWith(%C)> [concrete]
|
||||
// CHECK:STDOUT: %Op.type.19b: type = fn_type @Op.1, @RightShiftWith(%C) [concrete]
|
||||
// CHECK:STDOUT: %RightShiftWith.impl_witness: <witness> = impl_witness file.%RightShiftWith.impl_witness_table [concrete]
|
||||
// CHECK:STDOUT: %Op.type.873: type = fn_type @Op.loc21 [concrete]
|
||||
// CHECK:STDOUT: %Op.type.873: type = fn_type @Op.loc22 [concrete]
|
||||
// CHECK:STDOUT: %Op.909: %Op.type.873 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %RightShiftWith.facet.fb0: %RightShiftWith.type.bd6 = facet_value %C, (%RightShiftWith.impl_witness) [concrete]
|
||||
// CHECK:STDOUT: %RightShiftAssignWith.type.cd0: type = facet_type <@RightShiftAssignWith, @RightShiftAssignWith(%C)> [concrete]
|
||||
// CHECK:STDOUT: %Op.type.ae9: type = fn_type @Op.6, @RightShiftAssignWith(%C) [concrete]
|
||||
// CHECK:STDOUT: %RightShiftAssignWith.impl_witness: <witness> = impl_witness file.%RightShiftAssignWith.impl_witness_table [concrete]
|
||||
// CHECK:STDOUT: %ptr.019: type = ptr_type %C [concrete]
|
||||
// CHECK:STDOUT: %Op.type.e0c: type = fn_type @Op.loc26 [concrete]
|
||||
// CHECK:STDOUT: %Op.type.e0c: type = fn_type @Op.loc27 [concrete]
|
||||
// CHECK:STDOUT: %Op.6a2: %Op.type.e0c = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %RightShiftAssignWith.facet: %RightShiftAssignWith.type.cd0 = facet_value %C, (%RightShiftAssignWith.impl_witness) [concrete]
|
||||
// CHECK:STDOUT: %.982: type = fn_type_with_self_type %Op.type.19b, %RightShiftWith.facet.fb0 [concrete]
|
||||
@@ -68,9 +69,9 @@ fn TestAssign(a: C*, b: C) {
|
||||
// CHECK:STDOUT: %a.ref: %C = name_ref a, %a
|
||||
// CHECK:STDOUT: %b.ref: %C = name_ref b, %b
|
||||
// CHECK:STDOUT: %impl.elem1: %.982 = impl_witness_access constants.%RightShiftWith.impl_witness, element1 [concrete = constants.%Op.909]
|
||||
// CHECK:STDOUT: %bound_method.loc31: <bound method> = bound_method %a.ref, %impl.elem1
|
||||
// CHECK:STDOUT: %bound_method.loc32: <bound method> = bound_method %a.ref, %impl.elem1
|
||||
// CHECK:STDOUT: <elided>
|
||||
// CHECK:STDOUT: %Op.call: init %C = call %bound_method.loc31(%a.ref, %b.ref) to %.loc29
|
||||
// CHECK:STDOUT: %Op.call: init %C = call %bound_method.loc32(%a.ref, %b.ref) to %.loc30
|
||||
// CHECK:STDOUT: <elided>
|
||||
// CHECK:STDOUT: return %Op.call to %return
|
||||
// CHECK:STDOUT: }
|
||||
@@ -78,11 +79,11 @@ fn TestAssign(a: C*, b: C) {
|
||||
// CHECK:STDOUT: fn @TestAssign(%a.param: %ptr.019, %b.param: %C) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %a.ref: %ptr.019 = name_ref a, %a
|
||||
// CHECK:STDOUT: %.loc37: ref %C = deref %a.ref
|
||||
// CHECK:STDOUT: %.loc38: ref %C = deref %a.ref
|
||||
// CHECK:STDOUT: %b.ref: %C = name_ref b, %b
|
||||
// CHECK:STDOUT: %impl.elem0: %.d41 = impl_witness_access constants.%RightShiftAssignWith.impl_witness, element0 [concrete = constants.%Op.6a2]
|
||||
// CHECK:STDOUT: %bound_method: <bound method> = bound_method %.loc37, %impl.elem0
|
||||
// CHECK:STDOUT: %addr: %ptr.019 = addr_of %.loc37
|
||||
// CHECK:STDOUT: %bound_method: <bound method> = bound_method %.loc38, %impl.elem0
|
||||
// CHECK:STDOUT: %addr: %ptr.019 = addr_of %.loc38
|
||||
// CHECK:STDOUT: %Op.call: init %empty_tuple.type = call %bound_method(%addr, %b.ref)
|
||||
// CHECK:STDOUT: <elided>
|
||||
// CHECK:STDOUT: }
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
// Exceptions. See /LICENSE for license information.
|
||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
//
|
||||
// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/full.carbon
|
||||
// TODO: Add ranges and switch to "--dump-sem-ir-ranges=only".
|
||||
// EXTRA-ARGS: --dump-sem-ir-ranges=if-present
|
||||
//
|
||||
@@ -46,14 +47,14 @@ fn TestAssign(a: C*, b: C) {
|
||||
// CHECK:STDOUT: %SubWith.type.d29: type = facet_type <@SubWith, @SubWith(%C)> [concrete]
|
||||
// CHECK:STDOUT: %Op.type.fc0: type = fn_type @Op.1, @SubWith(%C) [concrete]
|
||||
// CHECK:STDOUT: %SubWith.impl_witness: <witness> = impl_witness file.%SubWith.impl_witness_table [concrete]
|
||||
// CHECK:STDOUT: %Op.type.3fa: type = fn_type @Op.loc21 [concrete]
|
||||
// CHECK:STDOUT: %Op.type.3fa: type = fn_type @Op.loc22 [concrete]
|
||||
// CHECK:STDOUT: %Op.5e4: %Op.type.3fa = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %SubWith.facet.0b6: %SubWith.type.d29 = facet_value %C, (%SubWith.impl_witness) [concrete]
|
||||
// CHECK:STDOUT: %SubAssignWith.type.df6: type = facet_type <@SubAssignWith, @SubAssignWith(%C)> [concrete]
|
||||
// CHECK:STDOUT: %Op.type.ffe: type = fn_type @Op.6, @SubAssignWith(%C) [concrete]
|
||||
// CHECK:STDOUT: %SubAssignWith.impl_witness: <witness> = impl_witness file.%SubAssignWith.impl_witness_table [concrete]
|
||||
// CHECK:STDOUT: %ptr.019: type = ptr_type %C [concrete]
|
||||
// CHECK:STDOUT: %Op.type.26d: type = fn_type @Op.loc26 [concrete]
|
||||
// CHECK:STDOUT: %Op.type.26d: type = fn_type @Op.loc27 [concrete]
|
||||
// CHECK:STDOUT: %Op.f7d: %Op.type.26d = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %SubAssignWith.facet: %SubAssignWith.type.df6 = facet_value %C, (%SubAssignWith.impl_witness) [concrete]
|
||||
// CHECK:STDOUT: %.71c: type = fn_type_with_self_type %Op.type.fc0, %SubWith.facet.0b6 [concrete]
|
||||
@@ -68,9 +69,9 @@ fn TestAssign(a: C*, b: C) {
|
||||
// CHECK:STDOUT: %a.ref: %C = name_ref a, %a
|
||||
// CHECK:STDOUT: %b.ref: %C = name_ref b, %b
|
||||
// CHECK:STDOUT: %impl.elem1: %.71c = impl_witness_access constants.%SubWith.impl_witness, element1 [concrete = constants.%Op.5e4]
|
||||
// CHECK:STDOUT: %bound_method.loc31: <bound method> = bound_method %a.ref, %impl.elem1
|
||||
// CHECK:STDOUT: %bound_method.loc32: <bound method> = bound_method %a.ref, %impl.elem1
|
||||
// CHECK:STDOUT: <elided>
|
||||
// CHECK:STDOUT: %Op.call: init %C = call %bound_method.loc31(%a.ref, %b.ref) to %.loc29
|
||||
// CHECK:STDOUT: %Op.call: init %C = call %bound_method.loc32(%a.ref, %b.ref) to %.loc30
|
||||
// CHECK:STDOUT: <elided>
|
||||
// CHECK:STDOUT: return %Op.call to %return
|
||||
// CHECK:STDOUT: }
|
||||
@@ -78,11 +79,11 @@ fn TestAssign(a: C*, b: C) {
|
||||
// CHECK:STDOUT: fn @TestAssign(%a.param: %ptr.019, %b.param: %C) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %a.ref: %ptr.019 = name_ref a, %a
|
||||
// CHECK:STDOUT: %.loc37: ref %C = deref %a.ref
|
||||
// CHECK:STDOUT: %.loc38: ref %C = deref %a.ref
|
||||
// CHECK:STDOUT: %b.ref: %C = name_ref b, %b
|
||||
// CHECK:STDOUT: %impl.elem0: %.647 = impl_witness_access constants.%SubAssignWith.impl_witness, element0 [concrete = constants.%Op.f7d]
|
||||
// CHECK:STDOUT: %bound_method: <bound method> = bound_method %.loc37, %impl.elem0
|
||||
// CHECK:STDOUT: %addr: %ptr.019 = addr_of %.loc37
|
||||
// CHECK:STDOUT: %bound_method: <bound method> = bound_method %.loc38, %impl.elem0
|
||||
// CHECK:STDOUT: %addr: %ptr.019 = addr_of %.loc38
|
||||
// CHECK:STDOUT: %Op.call: init %empty_tuple.type = call %bound_method(%addr, %b.ref)
|
||||
// CHECK:STDOUT: <elided>
|
||||
// CHECK:STDOUT: }
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
// Exceptions. See /LICENSE for license information.
|
||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
//
|
||||
// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/int.carbon
|
||||
// TODO: Add ranges and switch to "--dump-sem-ir-ranges=only".
|
||||
// EXTRA-ARGS: --dump-sem-ir-ranges=if-present
|
||||
//
|
||||
@@ -125,7 +126,7 @@ var d: i32 = d_ref;
|
||||
// CHECK:STDOUT: import Core//prelude
|
||||
// CHECK:STDOUT: import Core//prelude/...
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/types/int, Int, loaded [concrete = constants.%Int.generic]
|
||||
// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
// Exceptions. See /LICENSE for license information.
|
||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
//
|
||||
// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/none.carbon
|
||||
// TODO: Add ranges and switch to "--dump-sem-ir-ranges=only".
|
||||
// EXTRA-ARGS: --dump-sem-ir-ranges=if-present
|
||||
//
|
||||
@@ -28,22 +29,13 @@ var a: () = A();
|
||||
// CHECK:STDOUT: %pattern_type: type = pattern_type %empty_tuple.type [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace file.%Core.import, [concrete] {
|
||||
// CHECK:STDOUT: import Core//prelude
|
||||
// CHECK:STDOUT: import Core//prelude/...
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .Core = imports.%Core
|
||||
// CHECK:STDOUT: .a = %a
|
||||
// CHECK:STDOUT: .A = <poisoned>
|
||||
// CHECK:STDOUT: has_error
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %default.import = import <none>
|
||||
// CHECK:STDOUT: %Core.import = import Core
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type = binding_pattern a [concrete]
|
||||
// CHECK:STDOUT: %a.var_patt: %pattern_type = var_pattern %a.patt [concrete]
|
||||
|
||||
+1
-30
@@ -2,6 +2,7 @@
|
||||
// Exceptions. See /LICENSE for license information.
|
||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
//
|
||||
// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/none.carbon
|
||||
// TODO: Add ranges and switch to "--dump-sem-ir-ranges=only".
|
||||
// EXTRA-ARGS: --dump-sem-ir-ranges=if-present
|
||||
//
|
||||
@@ -48,19 +49,10 @@ var package_b: () = package.B();
|
||||
// CHECK:STDOUT: %A: %A.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace file.%Core.import, [concrete] {
|
||||
// CHECK:STDOUT: import Core//prelude
|
||||
// CHECK:STDOUT: import Core//prelude/...
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .Core = imports.%Core
|
||||
// CHECK:STDOUT: .A = %A.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Core.import = import Core
|
||||
// CHECK:STDOUT: %A.decl: %A.type = fn_decl @A [concrete = constants.%A] {} {}
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -77,22 +69,16 @@ var package_b: () = package.B();
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
// CHECK:STDOUT: %Implicit.A: %A.type = import_ref Implicit//default, A, loaded [concrete = constants.%A]
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace file.%Core.import, [concrete] {
|
||||
// CHECK:STDOUT: import Core//prelude
|
||||
// CHECK:STDOUT: import Core//prelude/...
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .A = imports.%Implicit.A
|
||||
// CHECK:STDOUT: .Core = imports.%Core
|
||||
// CHECK:STDOUT: .a = %a
|
||||
// CHECK:STDOUT: .package_a = %package_a
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Implicit.import = import Implicit
|
||||
// CHECK:STDOUT: %default.import = import <none>
|
||||
// CHECK:STDOUT: %Core.import = import Core
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type = binding_pattern a [concrete]
|
||||
// CHECK:STDOUT: %a.var_patt: %pattern_type = var_pattern %a.patt [concrete]
|
||||
@@ -136,19 +122,10 @@ var package_b: () = package.B();
|
||||
// CHECK:STDOUT: %B: %B.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace file.%Core.import, [concrete] {
|
||||
// CHECK:STDOUT: import Core//prelude
|
||||
// CHECK:STDOUT: import Core//prelude/...
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .Core = imports.%Core
|
||||
// CHECK:STDOUT: .B = %B.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Core.import = import Core
|
||||
// CHECK:STDOUT: %B.decl: %B.type = fn_decl @B [concrete = constants.%B] {} {}
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -165,20 +142,14 @@ var package_b: () = package.B();
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
// CHECK:STDOUT: %SamePackage.B: %B.type = import_ref SamePackage//default, B, loaded [concrete = constants.%B]
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace file.%Core.import, [concrete] {
|
||||
// CHECK:STDOUT: import Core//prelude
|
||||
// CHECK:STDOUT: import Core//prelude/...
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .B = imports.%SamePackage.B
|
||||
// CHECK:STDOUT: .Core = imports.%Core
|
||||
// CHECK:STDOUT: .b = %b
|
||||
// CHECK:STDOUT: .package_b = %package_b
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Core.import = import Core
|
||||
// CHECK:STDOUT: %default.import = import <none>
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %b.patt: %pattern_type = binding_pattern b [concrete]
|
||||
|
||||
+1
-15
@@ -2,6 +2,7 @@
|
||||
// Exceptions. See /LICENSE for license information.
|
||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
//
|
||||
// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/none.carbon
|
||||
// TODO: Add ranges and switch to "--dump-sem-ir-ranges=only".
|
||||
// EXTRA-ARGS: --dump-sem-ir-ranges=if-present
|
||||
//
|
||||
@@ -28,19 +29,10 @@ impl package Implicit;
|
||||
// CHECK:STDOUT: %A: %A.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace file.%Core.import, [concrete] {
|
||||
// CHECK:STDOUT: import Core//prelude
|
||||
// CHECK:STDOUT: import Core//prelude/...
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .Core = imports.%Core
|
||||
// CHECK:STDOUT: .A = %A.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Core.import = import Core
|
||||
// CHECK:STDOUT: %A.decl: %A.type = fn_decl @A [concrete = constants.%A] {} {}
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -50,19 +42,13 @@ impl package Implicit;
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
// CHECK:STDOUT: %Implicit.A = import_ref Implicit//default, A, unloaded
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace file.%Core.import, [concrete] {
|
||||
// CHECK:STDOUT: import Core//prelude
|
||||
// CHECK:STDOUT: import Core//prelude/...
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .A = imports.%Implicit.A
|
||||
// CHECK:STDOUT: .Core = imports.%Core
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Implicit.import = import Implicit
|
||||
// CHECK:STDOUT: %default.import = import <none>
|
||||
// CHECK:STDOUT: %Core.import = import Core
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
// Exceptions. See /LICENSE for license information.
|
||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
//
|
||||
// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/none.carbon
|
||||
// TODO: Add ranges and switch to "--dump-sem-ir-ranges=only".
|
||||
// EXTRA-ARGS: --dump-sem-ir-ranges=if-present
|
||||
//
|
||||
@@ -27,25 +28,16 @@ fn F() -> () {
|
||||
// CHECK:STDOUT: %F: %F.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace file.%Core.import, [concrete] {
|
||||
// CHECK:STDOUT: import Core//prelude
|
||||
// CHECK:STDOUT: import Core//prelude/...
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .Core = imports.%Core
|
||||
// CHECK:STDOUT: .F = %F.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Core.import = import Core
|
||||
// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type = return_slot_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type = out_param_pattern %return.patt, call_param0 [concrete]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %.loc14_12.1: %empty_tuple.type = tuple_literal ()
|
||||
// CHECK:STDOUT: %.loc14_12.2: type = converted %.loc14_12.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: %.loc15_12.1: %empty_tuple.type = tuple_literal ()
|
||||
// CHECK:STDOUT: %.loc15_12.2: type = converted %.loc15_12.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: %return.param: ref %empty_tuple.type = out_param call_param0
|
||||
// CHECK:STDOUT: %return: ref %empty_tuple.type = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
// Exceptions. See /LICENSE for license information.
|
||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
//
|
||||
// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/int.carbon
|
||||
// TODO: Add ranges and switch to "--dump-sem-ir-ranges=only".
|
||||
// EXTRA-ARGS: --dump-sem-ir-ranges=if-present
|
||||
//
|
||||
@@ -37,7 +38,7 @@ fn Procedure() -> i32 {
|
||||
// CHECK:STDOUT: import Core//prelude
|
||||
// CHECK:STDOUT: import Core//prelude/...
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/types/int, Int, loaded [concrete = constants.%Int.generic]
|
||||
// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
|
||||
+5
-4
@@ -2,6 +2,7 @@
|
||||
// Exceptions. See /LICENSE for license information.
|
||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
//
|
||||
// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/int.carbon
|
||||
// TODO: Add ranges and switch to "--dump-sem-ir-ranges=only".
|
||||
// EXTRA-ARGS: --dump-sem-ir-ranges=if-present
|
||||
//
|
||||
@@ -40,8 +41,8 @@ var x: {.a: i32} = {.a: i32};
|
||||
// CHECK:STDOUT: import Core//prelude
|
||||
// CHECK:STDOUT: import Core//prelude/...
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/types/int, Int, loaded [concrete = constants.%Int.generic]
|
||||
// CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/operators/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic]
|
||||
// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic]
|
||||
// CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -55,7 +56,7 @@ var x: {.a: i32} = {.a: i32};
|
||||
// CHECK:STDOUT: %x.var_patt: %pattern_type.268 = var_pattern %x.patt [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %x.var: ref %struct_type.a = var %x.var_patt [concrete]
|
||||
// CHECK:STDOUT: %.loc21: type = splice_block %struct_type.a [concrete = constants.%struct_type.a] {
|
||||
// CHECK:STDOUT: %.loc22: type = splice_block %struct_type.a [concrete = constants.%struct_type.a] {
|
||||
// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: %struct_type.a: type = struct_type {.a: %i32} [concrete = constants.%struct_type.a]
|
||||
@@ -68,7 +69,7 @@ var x: {.a: i32} = {.a: i32};
|
||||
// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: %struct_type.a: type = struct_type {.a: %i32} [concrete = constants.%struct_type.a]
|
||||
// CHECK:STDOUT: %.loc21: %struct_type.a = converted %struct_type.a, <error> [concrete = <error>]
|
||||
// CHECK:STDOUT: %.loc22: %struct_type.a = converted %struct_type.a, <error> [concrete = <error>]
|
||||
// CHECK:STDOUT: assign file.%x.var, <error>
|
||||
// CHECK:STDOUT: return
|
||||
// CHECK:STDOUT: }
|
||||
|
||||
+11
-10
@@ -2,6 +2,7 @@
|
||||
// Exceptions. See /LICENSE for license information.
|
||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
//
|
||||
// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/full.carbon
|
||||
// TODO: Add ranges and switch to "--dump-sem-ir-ranges=only".
|
||||
// EXTRA-ARGS: --dump-sem-ir-ranges=if-present
|
||||
//
|
||||
@@ -76,7 +77,7 @@ fn F(x: X) {
|
||||
// CHECK:STDOUT: %x.param_patt: %pattern_type.019 = value_param_pattern %x.patt, call_param0 [concrete]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %x.param: %X = value_param call_param0
|
||||
// CHECK:STDOUT: %X.ref.loc17: type = name_ref X, file.%X.decl [concrete = constants.%X]
|
||||
// CHECK:STDOUT: %X.ref.loc18: type = name_ref X, file.%X.decl [concrete = constants.%X]
|
||||
// CHECK:STDOUT: %x: %X = bind_name x, %x.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
@@ -107,18 +108,18 @@ fn F(x: X) {
|
||||
// CHECK:STDOUT: %y.var: ref %X = var %y.var_patt
|
||||
// CHECK:STDOUT: %x.ref: %X = name_ref x, %x
|
||||
// CHECK:STDOUT: assign %y.var, <error>
|
||||
// CHECK:STDOUT: %X.ref.loc31: type = name_ref X, file.%X.decl [concrete = constants.%X]
|
||||
// CHECK:STDOUT: %X.ref.loc32: type = name_ref X, file.%X.decl [concrete = constants.%X]
|
||||
// CHECK:STDOUT: %y: ref %X = bind_name y, %y.var
|
||||
// CHECK:STDOUT: %Op.bound.loc31: <bound method> = bound_method %y.var, constants.%Op.33a
|
||||
// CHECK:STDOUT: %Op.bound.loc32: <bound method> = bound_method %y.var, constants.%Op.33a
|
||||
// CHECK:STDOUT: %Op.specific_fn.1: <specific function> = specific_function constants.%Op.33a, @Op.2(constants.%X) [concrete = constants.%Op.specific_fn.d1f]
|
||||
// CHECK:STDOUT: %bound_method.loc31: <bound method> = bound_method %y.var, %Op.specific_fn.1
|
||||
// CHECK:STDOUT: %addr.loc31: %ptr.d17 = addr_of %y.var
|
||||
// CHECK:STDOUT: %no_op.loc31: init %empty_tuple.type = call %bound_method.loc31(%addr.loc31)
|
||||
// CHECK:STDOUT: %Op.bound.loc24: <bound method> = bound_method %s.var, constants.%Op.5ef
|
||||
// CHECK:STDOUT: %bound_method.loc32: <bound method> = bound_method %y.var, %Op.specific_fn.1
|
||||
// CHECK:STDOUT: %addr.loc32: %ptr.d17 = addr_of %y.var
|
||||
// CHECK:STDOUT: %no_op.loc32: init %empty_tuple.type = call %bound_method.loc32(%addr.loc32)
|
||||
// CHECK:STDOUT: %Op.bound.loc25: <bound method> = bound_method %s.var, constants.%Op.5ef
|
||||
// CHECK:STDOUT: %Op.specific_fn.2: <specific function> = specific_function constants.%Op.5ef, @Op.2(String) [concrete = constants.%Op.specific_fn.93f]
|
||||
// CHECK:STDOUT: %bound_method.loc24: <bound method> = bound_method %s.var, %Op.specific_fn.2
|
||||
// CHECK:STDOUT: %addr.loc24: %ptr.a45 = addr_of %s.var
|
||||
// CHECK:STDOUT: %no_op.loc24: init %empty_tuple.type = call %bound_method.loc24(%addr.loc24)
|
||||
// CHECK:STDOUT: %bound_method.loc25: <bound method> = bound_method %s.var, %Op.specific_fn.2
|
||||
// CHECK:STDOUT: %addr.loc25: %ptr.a45 = addr_of %s.var
|
||||
// CHECK:STDOUT: %no_op.loc25: init %empty_tuple.type = call %bound_method.loc25(%addr.loc25)
|
||||
// CHECK:STDOUT: return
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
|
||||
+10
-8
@@ -2,6 +2,8 @@
|
||||
// Exceptions. See /LICENSE for license information.
|
||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
//
|
||||
// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/full.carbon
|
||||
//
|
||||
// AUTOUPDATE
|
||||
// TIP: To test this file alone, run:
|
||||
// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/lower/testdata/builtins/int_literal.carbon
|
||||
@@ -56,13 +58,13 @@ fn IntMin() -> i32 {
|
||||
// CHECK:STDOUT: !1 = !{i32 2, !"Debug Info Version", i32 3}
|
||||
// CHECK:STDOUT: !2 = distinct !DICompileUnit(language: DW_LANG_C, file: !3, producer: "carbon", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug)
|
||||
// CHECK:STDOUT: !3 = !DIFile(filename: "int_literal.carbon", directory: "")
|
||||
// CHECK:STDOUT: !4 = distinct !DISubprogram(name: "Copy", linkageName: "_CCopy.Main", scope: null, file: !3, line: 13, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !4 = distinct !DISubprogram(name: "Copy", linkageName: "_CCopy.Main", scope: null, file: !3, line: 15, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !5 = !DISubroutineType(types: !6)
|
||||
// CHECK:STDOUT: !6 = !{}
|
||||
// CHECK:STDOUT: !7 = !DILocation(line: 14, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !8 = distinct !DISubprogram(name: "MinusOne", linkageName: "_CMinusOne.Main", scope: null, file: !3, line: 17, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !9 = !DILocation(line: 18, column: 3, scope: !8)
|
||||
// CHECK:STDOUT: !10 = distinct !DISubprogram(name: "IntMax", linkageName: "_CIntMax.Main", scope: null, file: !3, line: 21, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !11 = !DILocation(line: 22, column: 3, scope: !10)
|
||||
// CHECK:STDOUT: !12 = distinct !DISubprogram(name: "IntMin", linkageName: "_CIntMin.Main", scope: null, file: !3, line: 25, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !13 = !DILocation(line: 26, column: 3, scope: !12)
|
||||
// CHECK:STDOUT: !7 = !DILocation(line: 16, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !8 = distinct !DISubprogram(name: "MinusOne", linkageName: "_CMinusOne.Main", scope: null, file: !3, line: 19, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !9 = !DILocation(line: 20, column: 3, scope: !8)
|
||||
// CHECK:STDOUT: !10 = distinct !DISubprogram(name: "IntMax", linkageName: "_CIntMax.Main", scope: null, file: !3, line: 23, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !11 = !DILocation(line: 24, column: 3, scope: !10)
|
||||
// CHECK:STDOUT: !12 = distinct !DISubprogram(name: "IntMin", linkageName: "_CIntMin.Main", scope: null, file: !3, line: 27, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !13 = !DILocation(line: 28, column: 3, scope: !12)
|
||||
|
||||
@@ -2,6 +2,8 @@
|
||||
// Exceptions. See /LICENSE for license information.
|
||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
//
|
||||
// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/full.carbon
|
||||
//
|
||||
// AUTOUPDATE
|
||||
// TIP: To test this file alone, run:
|
||||
// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/lower/testdata/builtins/overloaded_operator.carbon
|
||||
@@ -17,9 +19,9 @@ fn AddThreeIntegers(a: i32, b: i32, c: i32) -> i32 {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: define i32 @_CAddThreeIntegers.Main(i32 %a, i32 %b, i32 %c) !dbg !4 {
|
||||
// CHECK:STDOUT: entry:
|
||||
// CHECK:STDOUT: %int.sadd.loc12_12 = add i32 %a, %b, !dbg !7
|
||||
// CHECK:STDOUT: %int.sadd.loc12_16 = add i32 %int.sadd.loc12_12, %c, !dbg !7
|
||||
// CHECK:STDOUT: ret i32 %int.sadd.loc12_16, !dbg !8
|
||||
// CHECK:STDOUT: %int.sadd.loc14_12 = add i32 %a, %b, !dbg !7
|
||||
// CHECK:STDOUT: %int.sadd.loc14_16 = add i32 %int.sadd.loc14_12, %c, !dbg !7
|
||||
// CHECK:STDOUT: ret i32 %int.sadd.loc14_16, !dbg !8
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !llvm.module.flags = !{!0, !1}
|
||||
@@ -29,8 +31,8 @@ fn AddThreeIntegers(a: i32, b: i32, c: i32) -> i32 {
|
||||
// CHECK:STDOUT: !1 = !{i32 2, !"Debug Info Version", i32 3}
|
||||
// CHECK:STDOUT: !2 = distinct !DICompileUnit(language: DW_LANG_C, file: !3, producer: "carbon", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug)
|
||||
// CHECK:STDOUT: !3 = !DIFile(filename: "overloaded_operator.carbon", directory: "")
|
||||
// CHECK:STDOUT: !4 = distinct !DISubprogram(name: "AddThreeIntegers", linkageName: "_CAddThreeIntegers.Main", scope: null, file: !3, line: 11, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !4 = distinct !DISubprogram(name: "AddThreeIntegers", linkageName: "_CAddThreeIntegers.Main", scope: null, file: !3, line: 13, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !5 = !DISubroutineType(types: !6)
|
||||
// CHECK:STDOUT: !6 = !{}
|
||||
// CHECK:STDOUT: !7 = !DILocation(line: 12, column: 10, scope: !4)
|
||||
// CHECK:STDOUT: !8 = !DILocation(line: 12, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !7 = !DILocation(line: 14, column: 10, scope: !4)
|
||||
// CHECK:STDOUT: !8 = !DILocation(line: 14, column: 3, scope: !4)
|
||||
|
||||
+18
-16
@@ -2,6 +2,8 @@
|
||||
// Exceptions. See /LICENSE for license information.
|
||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
//
|
||||
// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/full.carbon
|
||||
//
|
||||
// AUTOUPDATE
|
||||
// TIP: To test this file alone, run:
|
||||
// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/lower/testdata/builtins/print_read.carbon
|
||||
@@ -37,16 +39,16 @@ fn Main() {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: while.cond: ; preds = %if.else, %entry
|
||||
// CHECK:STDOUT: %read.char = call i32 @getchar(), !dbg !9
|
||||
// CHECK:STDOUT: %int.neq.loc20 = icmp ne i32 %read.char, -1, !dbg !9
|
||||
// CHECK:STDOUT: br i1 %int.neq.loc20, label %while.body, label %while.done, !dbg !8
|
||||
// CHECK:STDOUT: %int.neq.loc22 = icmp ne i32 %read.char, -1, !dbg !9
|
||||
// CHECK:STDOUT: br i1 %int.neq.loc22, label %while.body, label %while.done, !dbg !8
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: while.body: ; preds = %while.cond
|
||||
// CHECK:STDOUT: %print.char.loc22 = call i32 @putchar(i32 72), !dbg !10
|
||||
// CHECK:STDOUT: %int.neq.loc22 = icmp ne i32 %print.char.loc22, -1, !dbg !10
|
||||
// CHECK:STDOUT: br i1 %int.neq.loc22, label %if.then, label %if.else, !dbg !11
|
||||
// CHECK:STDOUT: %print.char.loc24 = call i32 @putchar(i32 72), !dbg !10
|
||||
// CHECK:STDOUT: %int.neq.loc24 = icmp ne i32 %print.char.loc24, -1, !dbg !10
|
||||
// CHECK:STDOUT: br i1 %int.neq.loc24, label %if.then, label %if.else, !dbg !11
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: if.then: ; preds = %while.body
|
||||
// CHECK:STDOUT: %print.char.loc23 = call i32 @putchar(i32 105), !dbg !12
|
||||
// CHECK:STDOUT: %print.char.loc25 = call i32 @putchar(i32 105), !dbg !12
|
||||
// CHECK:STDOUT: br label %if.else, !dbg !13
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: if.else: ; preds = %if.then, %while.body
|
||||
@@ -72,15 +74,15 @@ fn Main() {
|
||||
// CHECK:STDOUT: !1 = !{i32 2, !"Debug Info Version", i32 3}
|
||||
// CHECK:STDOUT: !2 = distinct !DICompileUnit(language: DW_LANG_C, file: !3, producer: "carbon", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug)
|
||||
// CHECK:STDOUT: !3 = !DIFile(filename: "print_read.carbon", directory: "")
|
||||
// CHECK:STDOUT: !4 = distinct !DISubprogram(name: "Main", linkageName: "_CMain.Main", scope: null, file: !3, line: 16, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !4 = distinct !DISubprogram(name: "Main", linkageName: "_CMain.Main", scope: null, file: !3, line: 18, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !5 = !DISubroutineType(types: !6)
|
||||
// CHECK:STDOUT: !6 = !{}
|
||||
// CHECK:STDOUT: !7 = !DILocation(line: 17, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !8 = !DILocation(line: 20, column: 9, scope: !4)
|
||||
// CHECK:STDOUT: !9 = !DILocation(line: 20, column: 10, scope: !4)
|
||||
// CHECK:STDOUT: !10 = !DILocation(line: 22, column: 9, scope: !4)
|
||||
// CHECK:STDOUT: !11 = !DILocation(line: 22, column: 8, scope: !4)
|
||||
// CHECK:STDOUT: !12 = !DILocation(line: 23, column: 7, scope: !4)
|
||||
// CHECK:STDOUT: !13 = !DILocation(line: 22, column: 5, scope: !4)
|
||||
// CHECK:STDOUT: !14 = !DILocation(line: 20, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !15 = !DILocation(line: 16, column: 1, scope: !4)
|
||||
// CHECK:STDOUT: !7 = !DILocation(line: 19, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !8 = !DILocation(line: 22, column: 9, scope: !4)
|
||||
// CHECK:STDOUT: !9 = !DILocation(line: 22, column: 10, scope: !4)
|
||||
// CHECK:STDOUT: !10 = !DILocation(line: 24, column: 9, scope: !4)
|
||||
// CHECK:STDOUT: !11 = !DILocation(line: 24, column: 8, scope: !4)
|
||||
// CHECK:STDOUT: !12 = !DILocation(line: 25, column: 7, scope: !4)
|
||||
// CHECK:STDOUT: !13 = !DILocation(line: 24, column: 5, scope: !4)
|
||||
// CHECK:STDOUT: !14 = !DILocation(line: 22, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !15 = !DILocation(line: 18, column: 1, scope: !4)
|
||||
|
||||
+29
-27
@@ -2,6 +2,8 @@
|
||||
// Exceptions. See /LICENSE for license information.
|
||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
//
|
||||
// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/full.carbon
|
||||
//
|
||||
// AUTOUPDATE
|
||||
// TIP: To test this file alone, run:
|
||||
// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/lower/testdata/for/bindings.carbon
|
||||
@@ -32,7 +34,7 @@ fn For() {
|
||||
// CHECK:STDOUT: ; ModuleID = 'bindings.carbon'
|
||||
// CHECK:STDOUT: source_filename = "bindings.carbon"
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: @EmptyRange.val.loc25_3 = internal constant {} zeroinitializer
|
||||
// CHECK:STDOUT: @EmptyRange.val.loc27_3 = internal constant {} zeroinitializer
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: declare void @_CF.Main(i32, ptr)
|
||||
// CHECK:STDOUT:
|
||||
@@ -40,31 +42,31 @@ fn For() {
|
||||
// CHECK:STDOUT: entry:
|
||||
// CHECK:STDOUT: %r.var = alloca {}, align 8, !dbg !7
|
||||
// CHECK:STDOUT: %var = alloca {}, align 8, !dbg !8
|
||||
// CHECK:STDOUT: %.loc27_33.1.temp = alloca { i1, { i32, i32 } }, align 8, !dbg !8
|
||||
// CHECK:STDOUT: %.loc29_33.1.temp = alloca { i1, { i32, i32 } }, align 8, !dbg !8
|
||||
// CHECK:STDOUT: %n.var = alloca i32, align 4, !dbg !9
|
||||
// CHECK:STDOUT: %.loc27_33.8.temp = alloca { i32, i32 }, align 8, !dbg !8
|
||||
// CHECK:STDOUT: %.loc29_33.8.temp = alloca { i32, i32 }, align 8, !dbg !8
|
||||
// CHECK:STDOUT: call void @llvm.lifetime.start.p0(i64 0, ptr %r.var), !dbg !7
|
||||
// CHECK:STDOUT: call void @llvm.memcpy.p0.p0.i64(ptr align 1 %r.var, ptr align 1 @EmptyRange.val.loc25_3, i64 0, i1 false), !dbg !7
|
||||
// CHECK:STDOUT: call void @llvm.memcpy.p0.p0.i64(ptr align 1 %r.var, ptr align 1 @EmptyRange.val.loc27_3, i64 0, i1 false), !dbg !7
|
||||
// CHECK:STDOUT: call void @"_CNewCursor.EmptyRange.Main:Iterate.Core.29d34654e802e24e"(ptr %r.var), !dbg !8
|
||||
// CHECK:STDOUT: call void @llvm.lifetime.start.p0(i64 0, ptr %var), !dbg !8
|
||||
// CHECK:STDOUT: br label %for.next, !dbg !8
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: for.next: ; preds = %for.body, %entry
|
||||
// CHECK:STDOUT: call void @llvm.lifetime.start.p0(i64 12, ptr %.loc27_33.1.temp), !dbg !8
|
||||
// CHECK:STDOUT: call void @"_CNext.EmptyRange.Main:Iterate.Core.29d34654e802e24e"(ptr %.loc27_33.1.temp, ptr %r.var, ptr %var), !dbg !8
|
||||
// CHECK:STDOUT: %HasValue.call = call i1 @_CHasValue.Optional.Core.29d34654e802e24e(ptr %.loc27_33.1.temp), !dbg !8
|
||||
// CHECK:STDOUT: call void @llvm.lifetime.start.p0(i64 12, ptr %.loc29_33.1.temp), !dbg !8
|
||||
// CHECK:STDOUT: call void @"_CNext.EmptyRange.Main:Iterate.Core.29d34654e802e24e"(ptr %.loc29_33.1.temp, ptr %r.var, ptr %var), !dbg !8
|
||||
// CHECK:STDOUT: %HasValue.call = call i1 @_CHasValue.Optional.Core.29d34654e802e24e(ptr %.loc29_33.1.temp), !dbg !8
|
||||
// CHECK:STDOUT: br i1 %HasValue.call, label %for.body, label %for.done, !dbg !8
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: for.body: ; preds = %for.next
|
||||
// CHECK:STDOUT: call void @llvm.lifetime.start.p0(i64 4, ptr %n.var), !dbg !9
|
||||
// CHECK:STDOUT: call void @llvm.lifetime.start.p0(i64 8, ptr %.loc27_33.8.temp), !dbg !8
|
||||
// CHECK:STDOUT: call void @_CGet.Optional.Core.29d34654e802e24e(ptr %.loc27_33.8.temp, ptr %.loc27_33.1.temp), !dbg !8
|
||||
// CHECK:STDOUT: %tuple.elem0.tuple.elem = getelementptr inbounds nuw { i32, i32 }, ptr %.loc27_33.8.temp, i32 0, i32 0, !dbg !8
|
||||
// CHECK:STDOUT: %tuple.elem1.tuple.elem = getelementptr inbounds nuw { i32, i32 }, ptr %.loc27_33.8.temp, i32 0, i32 1, !dbg !8
|
||||
// CHECK:STDOUT: %.loc27_33.11 = load i32, ptr %tuple.elem0.tuple.elem, align 4, !dbg !8
|
||||
// CHECK:STDOUT: %.loc27_33.12 = load i32, ptr %tuple.elem1.tuple.elem, align 4, !dbg !8
|
||||
// CHECK:STDOUT: store i32 %.loc27_33.12, ptr %n.var, align 4, !dbg !9
|
||||
// CHECK:STDOUT: call void @_CF.Main(i32 %.loc27_33.11, ptr %n.var), !dbg !10
|
||||
// CHECK:STDOUT: call void @llvm.lifetime.start.p0(i64 8, ptr %.loc29_33.8.temp), !dbg !8
|
||||
// CHECK:STDOUT: call void @_CGet.Optional.Core.29d34654e802e24e(ptr %.loc29_33.8.temp, ptr %.loc29_33.1.temp), !dbg !8
|
||||
// CHECK:STDOUT: %tuple.elem0.tuple.elem = getelementptr inbounds nuw { i32, i32 }, ptr %.loc29_33.8.temp, i32 0, i32 0, !dbg !8
|
||||
// CHECK:STDOUT: %tuple.elem1.tuple.elem = getelementptr inbounds nuw { i32, i32 }, ptr %.loc29_33.8.temp, i32 0, i32 1, !dbg !8
|
||||
// CHECK:STDOUT: %.loc29_33.11 = load i32, ptr %tuple.elem0.tuple.elem, align 4, !dbg !8
|
||||
// CHECK:STDOUT: %.loc29_33.12 = load i32, ptr %tuple.elem1.tuple.elem, align 4, !dbg !8
|
||||
// CHECK:STDOUT: store i32 %.loc29_33.12, ptr %n.var, align 4, !dbg !9
|
||||
// CHECK:STDOUT: call void @_CF.Main(i32 %.loc29_33.11, ptr %n.var), !dbg !10
|
||||
// CHECK:STDOUT: br label %for.next, !dbg !11
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: for.done: ; preds = %for.next
|
||||
@@ -118,20 +120,20 @@ fn For() {
|
||||
// CHECK:STDOUT: !1 = !{i32 2, !"Debug Info Version", i32 3}
|
||||
// CHECK:STDOUT: !2 = distinct !DICompileUnit(language: DW_LANG_C, file: !3, producer: "carbon", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug)
|
||||
// CHECK:STDOUT: !3 = !DIFile(filename: "bindings.carbon", directory: "")
|
||||
// CHECK:STDOUT: !4 = distinct !DISubprogram(name: "For", linkageName: "_CFor.Main", scope: null, file: !3, line: 24, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !4 = distinct !DISubprogram(name: "For", linkageName: "_CFor.Main", scope: null, file: !3, line: 26, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !5 = !DISubroutineType(types: !6)
|
||||
// CHECK:STDOUT: !6 = !{}
|
||||
// CHECK:STDOUT: !7 = !DILocation(line: 25, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !8 = !DILocation(line: 27, column: 7, scope: !4)
|
||||
// CHECK:STDOUT: !9 = !DILocation(line: 27, column: 17, scope: !4)
|
||||
// CHECK:STDOUT: !10 = !DILocation(line: 28, column: 5, scope: !4)
|
||||
// CHECK:STDOUT: !11 = !DILocation(line: 27, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !12 = !DILocation(line: 24, column: 1, scope: !4)
|
||||
// CHECK:STDOUT: !13 = distinct !DISubprogram(name: "NewCursor", linkageName: "_CNewCursor.EmptyRange.Main:Iterate.Core.29d34654e802e24e", scope: null, file: !3, line: 13, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !14 = !DILocation(line: 14, column: 7, scope: !13)
|
||||
// CHECK:STDOUT: !15 = distinct !DISubprogram(name: "Next", linkageName: "_CNext.EmptyRange.Main:Iterate.Core.29d34654e802e24e", scope: null, file: !3, line: 16, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !16 = !DILocation(line: 17, column: 14, scope: !15)
|
||||
// CHECK:STDOUT: !17 = !DILocation(line: 17, column: 7, scope: !15)
|
||||
// CHECK:STDOUT: !7 = !DILocation(line: 27, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !8 = !DILocation(line: 29, column: 7, scope: !4)
|
||||
// CHECK:STDOUT: !9 = !DILocation(line: 29, column: 17, scope: !4)
|
||||
// CHECK:STDOUT: !10 = !DILocation(line: 30, column: 5, scope: !4)
|
||||
// CHECK:STDOUT: !11 = !DILocation(line: 29, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !12 = !DILocation(line: 26, column: 1, scope: !4)
|
||||
// CHECK:STDOUT: !13 = distinct !DISubprogram(name: "NewCursor", linkageName: "_CNewCursor.EmptyRange.Main:Iterate.Core.29d34654e802e24e", scope: null, file: !3, line: 15, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !14 = !DILocation(line: 16, column: 7, scope: !13)
|
||||
// CHECK:STDOUT: !15 = distinct !DISubprogram(name: "Next", linkageName: "_CNext.EmptyRange.Main:Iterate.Core.29d34654e802e24e", scope: null, file: !3, line: 18, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !16 = !DILocation(line: 19, column: 14, scope: !15)
|
||||
// CHECK:STDOUT: !17 = !DILocation(line: 19, column: 7, scope: !15)
|
||||
// CHECK:STDOUT: !18 = distinct !DISubprogram(name: "HasValue", linkageName: "_CHasValue.Optional.Core.29d34654e802e24e", scope: null, file: !19, line: 28, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !19 = !DIFile(filename: "{{.*}}/prelude/types/optional.carbon", directory: "")
|
||||
// CHECK:STDOUT: !20 = !DILocation(line: 28, column: 46, scope: !18)
|
||||
|
||||
+31
-29
@@ -2,6 +2,8 @@
|
||||
// Exceptions. See /LICENSE for license information.
|
||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
//
|
||||
// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/full.carbon
|
||||
//
|
||||
// AUTOUPDATE
|
||||
// TIP: To test this file alone, run:
|
||||
// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/lower/testdata/for/break_continue.carbon
|
||||
@@ -33,42 +35,42 @@ fn For() {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: define void @_CFor.Main() !dbg !4 {
|
||||
// CHECK:STDOUT: entry:
|
||||
// CHECK:STDOUT: %.loc18_32.1.temp = alloca { i32, i32 }, align 8, !dbg !7
|
||||
// CHECK:STDOUT: %.loc20_32.1.temp = alloca { i32, i32 }, align 8, !dbg !7
|
||||
// CHECK:STDOUT: %var = alloca i32, align 4, !dbg !8
|
||||
// CHECK:STDOUT: %.loc18_33.1.temp = alloca { i1, i32 }, align 8, !dbg !8
|
||||
// CHECK:STDOUT: call void @llvm.lifetime.start.p0(i64 8, ptr %.loc18_32.1.temp), !dbg !7
|
||||
// CHECK:STDOUT: call void @_CRange.Core(ptr %.loc18_32.1.temp, i32 100), !dbg !7
|
||||
// CHECK:STDOUT: %NewCursor.call = call i32 @"_CNewCursor.IntRange.Core:Iterate.Core.be1e879c1ad406d8"(ptr %.loc18_32.1.temp), !dbg !8
|
||||
// CHECK:STDOUT: %.loc20_33.1.temp = alloca { i1, i32 }, align 8, !dbg !8
|
||||
// CHECK:STDOUT: call void @llvm.lifetime.start.p0(i64 8, ptr %.loc20_32.1.temp), !dbg !7
|
||||
// CHECK:STDOUT: call void @_CRange.Core(ptr %.loc20_32.1.temp, i32 100), !dbg !7
|
||||
// CHECK:STDOUT: %NewCursor.call = call i32 @"_CNewCursor.IntRange.Core:Iterate.Core.be1e879c1ad406d8"(ptr %.loc20_32.1.temp), !dbg !8
|
||||
// CHECK:STDOUT: call void @llvm.lifetime.start.p0(i64 4, ptr %var), !dbg !8
|
||||
// CHECK:STDOUT: store i32 %NewCursor.call, ptr %var, align 4, !dbg !8
|
||||
// CHECK:STDOUT: br label %for.next, !dbg !8
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: for.next: ; preds = %if.else.loc20, %if.then.loc20, %entry
|
||||
// CHECK:STDOUT: call void @llvm.lifetime.start.p0(i64 8, ptr %.loc18_33.1.temp), !dbg !8
|
||||
// CHECK:STDOUT: call void @"_CNext.IntRange.Core:Iterate.Core.be1e879c1ad406d8"(ptr %.loc18_33.1.temp, ptr %.loc18_32.1.temp, ptr %var), !dbg !8
|
||||
// CHECK:STDOUT: %HasValue.call = call i1 @_CHasValue.Optional.Core.b88d1103f417c6d4(ptr %.loc18_33.1.temp), !dbg !8
|
||||
// CHECK:STDOUT: for.next: ; preds = %if.else.loc22, %if.then.loc22, %entry
|
||||
// CHECK:STDOUT: call void @llvm.lifetime.start.p0(i64 8, ptr %.loc20_33.1.temp), !dbg !8
|
||||
// CHECK:STDOUT: call void @"_CNext.IntRange.Core:Iterate.Core.be1e879c1ad406d8"(ptr %.loc20_33.1.temp, ptr %.loc20_32.1.temp, ptr %var), !dbg !8
|
||||
// CHECK:STDOUT: %HasValue.call = call i1 @_CHasValue.Optional.Core.b88d1103f417c6d4(ptr %.loc20_33.1.temp), !dbg !8
|
||||
// CHECK:STDOUT: br i1 %HasValue.call, label %for.body, label %for.done, !dbg !8
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: for.body: ; preds = %for.next
|
||||
// CHECK:STDOUT: %Get.call = call i32 @_CGet.Optional.Core.b88d1103f417c6d4(ptr %.loc18_33.1.temp), !dbg !8
|
||||
// CHECK:STDOUT: %Get.call = call i32 @_CGet.Optional.Core.b88d1103f417c6d4(ptr %.loc20_33.1.temp), !dbg !8
|
||||
// CHECK:STDOUT: %F.call = call i1 @_CF.Main(), !dbg !9
|
||||
// CHECK:STDOUT: br i1 %F.call, label %if.then.loc19, label %if.else.loc19, !dbg !10
|
||||
// CHECK:STDOUT: br i1 %F.call, label %if.then.loc21, label %if.else.loc21, !dbg !10
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: if.then.loc19: ; preds = %for.body
|
||||
// CHECK:STDOUT: if.then.loc21: ; preds = %for.body
|
||||
// CHECK:STDOUT: br label %for.done, !dbg !11
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: if.else.loc19: ; preds = %for.body
|
||||
// CHECK:STDOUT: if.else.loc21: ; preds = %for.body
|
||||
// CHECK:STDOUT: %G.call = call i1 @_CG.Main(), !dbg !12
|
||||
// CHECK:STDOUT: br i1 %G.call, label %if.then.loc20, label %if.else.loc20, !dbg !13
|
||||
// CHECK:STDOUT: br i1 %G.call, label %if.then.loc22, label %if.else.loc22, !dbg !13
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: if.then.loc20: ; preds = %if.else.loc19
|
||||
// CHECK:STDOUT: if.then.loc22: ; preds = %if.else.loc21
|
||||
// CHECK:STDOUT: br label %for.next, !dbg !14
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: if.else.loc20: ; preds = %if.else.loc19
|
||||
// CHECK:STDOUT: if.else.loc22: ; preds = %if.else.loc21
|
||||
// CHECK:STDOUT: call void @_CH.Main(), !dbg !15
|
||||
// CHECK:STDOUT: br label %for.next, !dbg !16
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: for.done: ; preds = %if.then.loc19, %for.next
|
||||
// CHECK:STDOUT: for.done: ; preds = %if.then.loc21, %for.next
|
||||
// CHECK:STDOUT: ret void, !dbg !17
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -162,20 +164,20 @@ fn For() {
|
||||
// CHECK:STDOUT: !1 = !{i32 2, !"Debug Info Version", i32 3}
|
||||
// CHECK:STDOUT: !2 = distinct !DICompileUnit(language: DW_LANG_C, file: !3, producer: "carbon", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug)
|
||||
// CHECK:STDOUT: !3 = !DIFile(filename: "break_continue.carbon", directory: "")
|
||||
// CHECK:STDOUT: !4 = distinct !DISubprogram(name: "For", linkageName: "_CFor.Main", scope: null, file: !3, line: 17, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !4 = distinct !DISubprogram(name: "For", linkageName: "_CFor.Main", scope: null, file: !3, line: 19, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !5 = !DISubroutineType(types: !6)
|
||||
// CHECK:STDOUT: !6 = !{}
|
||||
// CHECK:STDOUT: !7 = !DILocation(line: 18, column: 18, scope: !4)
|
||||
// CHECK:STDOUT: !8 = !DILocation(line: 18, column: 7, scope: !4)
|
||||
// CHECK:STDOUT: !9 = !DILocation(line: 19, column: 9, scope: !4)
|
||||
// CHECK:STDOUT: !10 = !DILocation(line: 19, column: 8, scope: !4)
|
||||
// CHECK:STDOUT: !11 = !DILocation(line: 19, column: 16, scope: !4)
|
||||
// CHECK:STDOUT: !12 = !DILocation(line: 20, column: 9, scope: !4)
|
||||
// CHECK:STDOUT: !13 = !DILocation(line: 20, column: 8, scope: !4)
|
||||
// CHECK:STDOUT: !14 = !DILocation(line: 20, column: 16, scope: !4)
|
||||
// CHECK:STDOUT: !15 = !DILocation(line: 21, column: 5, scope: !4)
|
||||
// CHECK:STDOUT: !16 = !DILocation(line: 18, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !17 = !DILocation(line: 17, column: 1, scope: !4)
|
||||
// CHECK:STDOUT: !7 = !DILocation(line: 20, column: 18, scope: !4)
|
||||
// CHECK:STDOUT: !8 = !DILocation(line: 20, column: 7, scope: !4)
|
||||
// CHECK:STDOUT: !9 = !DILocation(line: 21, column: 9, scope: !4)
|
||||
// CHECK:STDOUT: !10 = !DILocation(line: 21, column: 8, scope: !4)
|
||||
// CHECK:STDOUT: !11 = !DILocation(line: 21, column: 16, scope: !4)
|
||||
// CHECK:STDOUT: !12 = !DILocation(line: 22, column: 9, scope: !4)
|
||||
// CHECK:STDOUT: !13 = !DILocation(line: 22, column: 8, scope: !4)
|
||||
// CHECK:STDOUT: !14 = !DILocation(line: 22, column: 16, scope: !4)
|
||||
// CHECK:STDOUT: !15 = !DILocation(line: 23, column: 5, scope: !4)
|
||||
// CHECK:STDOUT: !16 = !DILocation(line: 20, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !17 = !DILocation(line: 19, column: 1, scope: !4)
|
||||
// CHECK:STDOUT: !18 = distinct !DISubprogram(name: "NewCursor", linkageName: "_CNewCursor.IntRange.Core:Iterate.Core.be1e879c1ad406d8", scope: null, file: !19, line: 25, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !19 = !DIFile(filename: "{{.*}}/range.carbon", directory: "")
|
||||
// CHECK:STDOUT: !20 = !DILocation(line: 25, column: 51, scope: !18)
|
||||
|
||||
+19
-17
@@ -2,6 +2,8 @@
|
||||
// Exceptions. See /LICENSE for license information.
|
||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
//
|
||||
// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/full.carbon
|
||||
//
|
||||
// AUTOUPDATE
|
||||
// TIP: To test this file alone, run:
|
||||
// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/lower/testdata/for/for.carbon
|
||||
@@ -33,25 +35,25 @@ fn For() {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: define void @_CFor.Main() !dbg !4 {
|
||||
// CHECK:STDOUT: entry:
|
||||
// CHECK:STDOUT: %.loc19_32.1.temp = alloca { i32, i32 }, align 8, !dbg !7
|
||||
// CHECK:STDOUT: %.loc21_32.1.temp = alloca { i32, i32 }, align 8, !dbg !7
|
||||
// CHECK:STDOUT: %var = alloca i32, align 4, !dbg !8
|
||||
// CHECK:STDOUT: %.loc19_33.1.temp = alloca { i1, i32 }, align 8, !dbg !8
|
||||
// CHECK:STDOUT: %.loc21_33.1.temp = alloca { i1, i32 }, align 8, !dbg !8
|
||||
// CHECK:STDOUT: call void @_CF.Main(), !dbg !9
|
||||
// CHECK:STDOUT: call void @llvm.lifetime.start.p0(i64 8, ptr %.loc19_32.1.temp), !dbg !7
|
||||
// CHECK:STDOUT: call void @_CRange.Core(ptr %.loc19_32.1.temp, i32 100), !dbg !7
|
||||
// CHECK:STDOUT: %NewCursor.call = call i32 @"_CNewCursor.IntRange.Core:Iterate.Core.be1e879c1ad406d8"(ptr %.loc19_32.1.temp), !dbg !8
|
||||
// CHECK:STDOUT: call void @llvm.lifetime.start.p0(i64 8, ptr %.loc21_32.1.temp), !dbg !7
|
||||
// CHECK:STDOUT: call void @_CRange.Core(ptr %.loc21_32.1.temp, i32 100), !dbg !7
|
||||
// CHECK:STDOUT: %NewCursor.call = call i32 @"_CNewCursor.IntRange.Core:Iterate.Core.be1e879c1ad406d8"(ptr %.loc21_32.1.temp), !dbg !8
|
||||
// CHECK:STDOUT: call void @llvm.lifetime.start.p0(i64 4, ptr %var), !dbg !8
|
||||
// CHECK:STDOUT: store i32 %NewCursor.call, ptr %var, align 4, !dbg !8
|
||||
// CHECK:STDOUT: br label %for.next, !dbg !8
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: for.next: ; preds = %for.body, %entry
|
||||
// CHECK:STDOUT: call void @llvm.lifetime.start.p0(i64 8, ptr %.loc19_33.1.temp), !dbg !8
|
||||
// CHECK:STDOUT: call void @"_CNext.IntRange.Core:Iterate.Core.be1e879c1ad406d8"(ptr %.loc19_33.1.temp, ptr %.loc19_32.1.temp, ptr %var), !dbg !8
|
||||
// CHECK:STDOUT: %HasValue.call = call i1 @_CHasValue.Optional.Core.b88d1103f417c6d4(ptr %.loc19_33.1.temp), !dbg !8
|
||||
// CHECK:STDOUT: call void @llvm.lifetime.start.p0(i64 8, ptr %.loc21_33.1.temp), !dbg !8
|
||||
// CHECK:STDOUT: call void @"_CNext.IntRange.Core:Iterate.Core.be1e879c1ad406d8"(ptr %.loc21_33.1.temp, ptr %.loc21_32.1.temp, ptr %var), !dbg !8
|
||||
// CHECK:STDOUT: %HasValue.call = call i1 @_CHasValue.Optional.Core.b88d1103f417c6d4(ptr %.loc21_33.1.temp), !dbg !8
|
||||
// CHECK:STDOUT: br i1 %HasValue.call, label %for.body, label %for.done, !dbg !8
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: for.body: ; preds = %for.next
|
||||
// CHECK:STDOUT: %Get.call = call i32 @_CGet.Optional.Core.b88d1103f417c6d4(ptr %.loc19_33.1.temp), !dbg !8
|
||||
// CHECK:STDOUT: %Get.call = call i32 @_CGet.Optional.Core.b88d1103f417c6d4(ptr %.loc21_33.1.temp), !dbg !8
|
||||
// CHECK:STDOUT: call void @_CG.Main(), !dbg !10
|
||||
// CHECK:STDOUT: br label %for.next, !dbg !11
|
||||
// CHECK:STDOUT:
|
||||
@@ -150,16 +152,16 @@ fn For() {
|
||||
// CHECK:STDOUT: !1 = !{i32 2, !"Debug Info Version", i32 3}
|
||||
// CHECK:STDOUT: !2 = distinct !DICompileUnit(language: DW_LANG_C, file: !3, producer: "carbon", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug)
|
||||
// CHECK:STDOUT: !3 = !DIFile(filename: "for.carbon", directory: "")
|
||||
// CHECK:STDOUT: !4 = distinct !DISubprogram(name: "For", linkageName: "_CFor.Main", scope: null, file: !3, line: 17, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !4 = distinct !DISubprogram(name: "For", linkageName: "_CFor.Main", scope: null, file: !3, line: 19, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !5 = !DISubroutineType(types: !6)
|
||||
// CHECK:STDOUT: !6 = !{}
|
||||
// CHECK:STDOUT: !7 = !DILocation(line: 19, column: 18, scope: !4)
|
||||
// CHECK:STDOUT: !8 = !DILocation(line: 19, column: 7, scope: !4)
|
||||
// CHECK:STDOUT: !9 = !DILocation(line: 18, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !10 = !DILocation(line: 20, column: 5, scope: !4)
|
||||
// CHECK:STDOUT: !11 = !DILocation(line: 19, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !12 = !DILocation(line: 22, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !13 = !DILocation(line: 17, column: 1, scope: !4)
|
||||
// CHECK:STDOUT: !7 = !DILocation(line: 21, column: 18, scope: !4)
|
||||
// CHECK:STDOUT: !8 = !DILocation(line: 21, column: 7, scope: !4)
|
||||
// CHECK:STDOUT: !9 = !DILocation(line: 20, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !10 = !DILocation(line: 22, column: 5, scope: !4)
|
||||
// CHECK:STDOUT: !11 = !DILocation(line: 21, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !12 = !DILocation(line: 24, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !13 = !DILocation(line: 19, column: 1, scope: !4)
|
||||
// CHECK:STDOUT: !14 = distinct !DISubprogram(name: "NewCursor", linkageName: "_CNewCursor.IntRange.Core:Iterate.Core.be1e879c1ad406d8", scope: null, file: !15, line: 25, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !15 = !DIFile(filename: "{{.*}}/range.carbon", directory: "")
|
||||
// CHECK:STDOUT: !16 = !DILocation(line: 25, column: 51, scope: !14)
|
||||
|
||||
@@ -2,6 +2,8 @@
|
||||
// Exceptions. See /LICENSE for license information.
|
||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
//
|
||||
// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/full.carbon
|
||||
//
|
||||
// AUTOUPDATE
|
||||
// TIP: To test this file alone, run:
|
||||
// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/lower/testdata/function/generic/call_different_impls.carbon
|
||||
@@ -79,21 +81,21 @@ fn Run() {
|
||||
// CHECK:STDOUT: !1 = !{i32 2, !"Debug Info Version", i32 3}
|
||||
// CHECK:STDOUT: !2 = distinct !DICompileUnit(language: DW_LANG_C, file: !3, producer: "carbon", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug)
|
||||
// CHECK:STDOUT: !3 = !DIFile(filename: "call_different_impls.carbon", directory: "")
|
||||
// CHECK:STDOUT: !4 = distinct !DISubprogram(name: "F", linkageName: "_CF.X.Main:I.Main", scope: null, file: !3, line: 18, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !4 = distinct !DISubprogram(name: "F", linkageName: "_CF.X.Main:I.Main", scope: null, file: !3, line: 20, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !5 = !DISubroutineType(types: !6)
|
||||
// CHECK:STDOUT: !6 = !{}
|
||||
// CHECK:STDOUT: !7 = !DILocation(line: 18, column: 12, scope: !4)
|
||||
// CHECK:STDOUT: !8 = !DILocation(line: 18, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !9 = distinct !DISubprogram(name: "F", linkageName: "_CF.Y.Main:I.Main", scope: null, file: !3, line: 22, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !10 = !DILocation(line: 22, column: 12, scope: !9)
|
||||
// CHECK:STDOUT: !11 = !DILocation(line: 22, column: 3, scope: !9)
|
||||
// CHECK:STDOUT: !12 = distinct !DISubprogram(name: "Run", linkageName: "main", scope: null, file: !3, line: 29, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !13 = !DILocation(line: 30, column: 3, scope: !12)
|
||||
// CHECK:STDOUT: !14 = !DILocation(line: 31, column: 3, scope: !12)
|
||||
// CHECK:STDOUT: !15 = !DILocation(line: 29, column: 1, scope: !12)
|
||||
// CHECK:STDOUT: !16 = distinct !DISubprogram(name: "G", linkageName: "_CG.Main.2c436a64dfc3fd29", scope: null, file: !3, line: 27, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !17 = !DILocation(line: 27, column: 15, scope: !16)
|
||||
// CHECK:STDOUT: !18 = !DILocation(line: 27, column: 1, scope: !16)
|
||||
// CHECK:STDOUT: !19 = distinct !DISubprogram(name: "G", linkageName: "_CG.Main.c124d41ebc08c32b", scope: null, file: !3, line: 27, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !20 = !DILocation(line: 27, column: 15, scope: !19)
|
||||
// CHECK:STDOUT: !21 = !DILocation(line: 27, column: 1, scope: !19)
|
||||
// CHECK:STDOUT: !7 = !DILocation(line: 20, column: 12, scope: !4)
|
||||
// CHECK:STDOUT: !8 = !DILocation(line: 20, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !9 = distinct !DISubprogram(name: "F", linkageName: "_CF.Y.Main:I.Main", scope: null, file: !3, line: 24, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !10 = !DILocation(line: 24, column: 12, scope: !9)
|
||||
// CHECK:STDOUT: !11 = !DILocation(line: 24, column: 3, scope: !9)
|
||||
// CHECK:STDOUT: !12 = distinct !DISubprogram(name: "Run", linkageName: "main", scope: null, file: !3, line: 31, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !13 = !DILocation(line: 32, column: 3, scope: !12)
|
||||
// CHECK:STDOUT: !14 = !DILocation(line: 33, column: 3, scope: !12)
|
||||
// CHECK:STDOUT: !15 = !DILocation(line: 31, column: 1, scope: !12)
|
||||
// CHECK:STDOUT: !16 = distinct !DISubprogram(name: "G", linkageName: "_CG.Main.2c436a64dfc3fd29", scope: null, file: !3, line: 29, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !17 = !DILocation(line: 29, column: 15, scope: !16)
|
||||
// CHECK:STDOUT: !18 = !DILocation(line: 29, column: 1, scope: !16)
|
||||
// CHECK:STDOUT: !19 = distinct !DISubprogram(name: "G", linkageName: "_CG.Main.c124d41ebc08c32b", scope: null, file: !3, line: 29, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !20 = !DILocation(line: 29, column: 15, scope: !19)
|
||||
// CHECK:STDOUT: !21 = !DILocation(line: 29, column: 1, scope: !19)
|
||||
|
||||
+20
-18
@@ -2,6 +2,8 @@
|
||||
// Exceptions. See /LICENSE for license information.
|
||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
//
|
||||
// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/full.carbon
|
||||
//
|
||||
// AUTOUPDATE
|
||||
// TIP: To test this file alone, run:
|
||||
// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/lower/testdata/function/generic/call_different_impls_with_const.carbon
|
||||
@@ -68,13 +70,13 @@ fn Run() {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: define linkonce_odr void @_CG.Main.ae78220c5e9d4af5() !dbg !16 {
|
||||
// CHECK:STDOUT: entry:
|
||||
// CHECK:STDOUT: %.loc35_20.1 = call i1 @"_CF.X.Main:I.Main"(), !dbg !17
|
||||
// CHECK:STDOUT: %.loc37_20.1 = call i1 @"_CF.X.Main:I.Main"(), !dbg !17
|
||||
// CHECK:STDOUT: ret void, !dbg !18
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: define linkonce_odr void @_CG.Main.6b293b16be321a45() !dbg !19 {
|
||||
// CHECK:STDOUT: entry:
|
||||
// CHECK:STDOUT: %.loc35_20.1 = call i32 @"_CF.Y.Main:I.Main"(), !dbg !20
|
||||
// CHECK:STDOUT: %.loc37_20.1 = call i32 @"_CF.Y.Main:I.Main"(), !dbg !20
|
||||
// CHECK:STDOUT: ret void, !dbg !21
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -88,21 +90,21 @@ fn Run() {
|
||||
// CHECK:STDOUT: !1 = !{i32 2, !"Debug Info Version", i32 3}
|
||||
// CHECK:STDOUT: !2 = distinct !DICompileUnit(language: DW_LANG_C, file: !3, producer: "carbon", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug)
|
||||
// CHECK:STDOUT: !3 = !DIFile(filename: "call_different_impls_with_const.carbon", directory: "")
|
||||
// CHECK:STDOUT: !4 = distinct !DISubprogram(name: "F", linkageName: "_CF.X.Main:I.Main", scope: null, file: !3, line: 19, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !4 = distinct !DISubprogram(name: "F", linkageName: "_CF.X.Main:I.Main", scope: null, file: !3, line: 21, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !5 = !DISubroutineType(types: !6)
|
||||
// CHECK:STDOUT: !6 = !{}
|
||||
// CHECK:STDOUT: !7 = !DILocation(line: 20, column: 5, scope: !4)
|
||||
// CHECK:STDOUT: !8 = !DILocation(line: 21, column: 5, scope: !4)
|
||||
// CHECK:STDOUT: !9 = distinct !DISubprogram(name: "F", linkageName: "_CF.Y.Main:I.Main", scope: null, file: !3, line: 26, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !10 = !DILocation(line: 27, column: 5, scope: !9)
|
||||
// CHECK:STDOUT: !11 = !DILocation(line: 28, column: 5, scope: !9)
|
||||
// CHECK:STDOUT: !12 = distinct !DISubprogram(name: "Run", linkageName: "main", scope: null, file: !3, line: 38, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !13 = !DILocation(line: 39, column: 3, scope: !12)
|
||||
// CHECK:STDOUT: !14 = !DILocation(line: 40, column: 3, scope: !12)
|
||||
// CHECK:STDOUT: !15 = !DILocation(line: 38, column: 1, scope: !12)
|
||||
// CHECK:STDOUT: !16 = distinct !DISubprogram(name: "G", linkageName: "_CG.Main.ae78220c5e9d4af5", scope: null, file: !3, line: 34, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !17 = !DILocation(line: 35, column: 16, scope: !16)
|
||||
// CHECK:STDOUT: !18 = !DILocation(line: 34, column: 1, scope: !16)
|
||||
// CHECK:STDOUT: !19 = distinct !DISubprogram(name: "G", linkageName: "_CG.Main.6b293b16be321a45", scope: null, file: !3, line: 34, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !20 = !DILocation(line: 35, column: 16, scope: !19)
|
||||
// CHECK:STDOUT: !21 = !DILocation(line: 34, column: 1, scope: !19)
|
||||
// CHECK:STDOUT: !7 = !DILocation(line: 22, column: 5, scope: !4)
|
||||
// CHECK:STDOUT: !8 = !DILocation(line: 23, column: 5, scope: !4)
|
||||
// CHECK:STDOUT: !9 = distinct !DISubprogram(name: "F", linkageName: "_CF.Y.Main:I.Main", scope: null, file: !3, line: 28, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !10 = !DILocation(line: 29, column: 5, scope: !9)
|
||||
// CHECK:STDOUT: !11 = !DILocation(line: 30, column: 5, scope: !9)
|
||||
// CHECK:STDOUT: !12 = distinct !DISubprogram(name: "Run", linkageName: "main", scope: null, file: !3, line: 40, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !13 = !DILocation(line: 41, column: 3, scope: !12)
|
||||
// CHECK:STDOUT: !14 = !DILocation(line: 42, column: 3, scope: !12)
|
||||
// CHECK:STDOUT: !15 = !DILocation(line: 40, column: 1, scope: !12)
|
||||
// CHECK:STDOUT: !16 = distinct !DISubprogram(name: "G", linkageName: "_CG.Main.ae78220c5e9d4af5", scope: null, file: !3, line: 36, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !17 = !DILocation(line: 37, column: 16, scope: !16)
|
||||
// CHECK:STDOUT: !18 = !DILocation(line: 36, column: 1, scope: !16)
|
||||
// CHECK:STDOUT: !19 = distinct !DISubprogram(name: "G", linkageName: "_CG.Main.6b293b16be321a45", scope: null, file: !3, line: 36, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !20 = !DILocation(line: 37, column: 16, scope: !19)
|
||||
// CHECK:STDOUT: !21 = !DILocation(line: 36, column: 1, scope: !19)
|
||||
|
||||
@@ -2,6 +2,8 @@
|
||||
// Exceptions. See /LICENSE for license information.
|
||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
//
|
||||
// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/full.carbon
|
||||
//
|
||||
// AUTOUPDATE
|
||||
// TIP: To test this file alone, run:
|
||||
// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/lower/testdata/function/generic/call_different_specific.carbon
|
||||
@@ -57,10 +59,10 @@ fn M() {
|
||||
// CHECK:STDOUT: %ptr_f64.var = alloca ptr, align 8, !dbg !8
|
||||
// CHECK:STDOUT: call void @llvm.lifetime.start.p0(i64 8, ptr %ptr_i32.var), !dbg !7
|
||||
// CHECK:STDOUT: call void @llvm.lifetime.start.p0(i64 8, ptr %ptr_f64.var), !dbg !8
|
||||
// CHECK:STDOUT: %.loc44 = load ptr, ptr %ptr_i32.var, align 8, !dbg !9
|
||||
// CHECK:STDOUT: call void @_CF.Main.b88d1103f417c6d4(ptr %.loc44), !dbg !10
|
||||
// CHECK:STDOUT: %.loc45 = load ptr, ptr %ptr_f64.var, align 8, !dbg !11
|
||||
// CHECK:STDOUT: call void @_CF.Main.66be507887ceee78(ptr %.loc45), !dbg !12
|
||||
// CHECK:STDOUT: %.loc46 = load ptr, ptr %ptr_i32.var, align 8, !dbg !9
|
||||
// CHECK:STDOUT: call void @_CF.Main.b88d1103f417c6d4(ptr %.loc46), !dbg !10
|
||||
// CHECK:STDOUT: %.loc47 = load ptr, ptr %ptr_f64.var, align 8, !dbg !11
|
||||
// CHECK:STDOUT: call void @_CF.Main.66be507887ceee78(ptr %.loc47), !dbg !12
|
||||
// CHECK:STDOUT: ret void, !dbg !13
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -88,15 +90,15 @@ fn M() {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: define linkonce_odr void @_CB.Main.b88d1103f417c6d4(ptr %x) !dbg !24 {
|
||||
// CHECK:STDOUT: entry:
|
||||
// CHECK:STDOUT: %.loc32_5.2 = load i32, ptr %x, align 4, !dbg !25
|
||||
// CHECK:STDOUT: %D.call = call i32 @_CD.Main.b88d1103f417c6d4(i32 %.loc32_5.2), !dbg !26
|
||||
// CHECK:STDOUT: %.loc34_5.2 = load i32, ptr %x, align 4, !dbg !25
|
||||
// CHECK:STDOUT: %D.call = call i32 @_CD.Main.b88d1103f417c6d4(i32 %.loc34_5.2), !dbg !26
|
||||
// CHECK:STDOUT: ret void, !dbg !27
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: define linkonce_odr void @_CB.Main.66be507887ceee78(ptr %x) !dbg !28 {
|
||||
// CHECK:STDOUT: entry:
|
||||
// CHECK:STDOUT: %.loc32_5.2 = load double, ptr %x, align 8, !dbg !29
|
||||
// CHECK:STDOUT: %D.call = call double @_CD.Main.66be507887ceee78(double %.loc32_5.2), !dbg !30
|
||||
// CHECK:STDOUT: %.loc34_5.2 = load double, ptr %x, align 8, !dbg !29
|
||||
// CHECK:STDOUT: %D.call = call double @_CD.Main.66be507887ceee78(double %.loc34_5.2), !dbg !30
|
||||
// CHECK:STDOUT: ret void, !dbg !31
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -123,35 +125,35 @@ fn M() {
|
||||
// CHECK:STDOUT: !1 = !{i32 2, !"Debug Info Version", i32 3}
|
||||
// CHECK:STDOUT: !2 = distinct !DICompileUnit(language: DW_LANG_C, file: !3, producer: "carbon", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug)
|
||||
// CHECK:STDOUT: !3 = !DIFile(filename: "call_different_specific.carbon", directory: "")
|
||||
// CHECK:STDOUT: !4 = distinct !DISubprogram(name: "M", linkageName: "_CM.Main", scope: null, file: !3, line: 40, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !4 = distinct !DISubprogram(name: "M", linkageName: "_CM.Main", scope: null, file: !3, line: 42, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !5 = !DISubroutineType(types: !6)
|
||||
// CHECK:STDOUT: !6 = !{}
|
||||
// CHECK:STDOUT: !7 = !DILocation(line: 41, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !8 = !DILocation(line: 42, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !9 = !DILocation(line: 44, column: 5, scope: !4)
|
||||
// CHECK:STDOUT: !10 = !DILocation(line: 44, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !11 = !DILocation(line: 45, column: 5, scope: !4)
|
||||
// CHECK:STDOUT: !12 = !DILocation(line: 45, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !13 = !DILocation(line: 40, column: 1, scope: !4)
|
||||
// CHECK:STDOUT: !14 = distinct !DISubprogram(name: "F", linkageName: "_CF.Main.b88d1103f417c6d4", scope: null, file: !3, line: 35, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !15 = !DILocation(line: 36, column: 3, scope: !14)
|
||||
// CHECK:STDOUT: !16 = !DILocation(line: 37, column: 3, scope: !14)
|
||||
// CHECK:STDOUT: !17 = !DILocation(line: 35, column: 1, scope: !14)
|
||||
// CHECK:STDOUT: !18 = distinct !DISubprogram(name: "F", linkageName: "_CF.Main.66be507887ceee78", scope: null, file: !3, line: 35, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !19 = !DILocation(line: 36, column: 3, scope: !18)
|
||||
// CHECK:STDOUT: !20 = !DILocation(line: 37, column: 3, scope: !18)
|
||||
// CHECK:STDOUT: !21 = !DILocation(line: 35, column: 1, scope: !18)
|
||||
// CHECK:STDOUT: !22 = distinct !DISubprogram(name: "A", linkageName: "_CA.Main.5754c7a55c7cbe4a", scope: null, file: !3, line: 23, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !23 = !DILocation(line: 24, column: 3, scope: !22)
|
||||
// CHECK:STDOUT: !24 = distinct !DISubprogram(name: "B", linkageName: "_CB.Main.b88d1103f417c6d4", scope: null, file: !3, line: 31, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !25 = !DILocation(line: 32, column: 5, scope: !24)
|
||||
// CHECK:STDOUT: !26 = !DILocation(line: 32, column: 3, scope: !24)
|
||||
// CHECK:STDOUT: !27 = !DILocation(line: 31, column: 1, scope: !24)
|
||||
// CHECK:STDOUT: !28 = distinct !DISubprogram(name: "B", linkageName: "_CB.Main.66be507887ceee78", scope: null, file: !3, line: 31, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !29 = !DILocation(line: 32, column: 5, scope: !28)
|
||||
// CHECK:STDOUT: !30 = !DILocation(line: 32, column: 3, scope: !28)
|
||||
// CHECK:STDOUT: !31 = !DILocation(line: 31, column: 1, scope: !28)
|
||||
// CHECK:STDOUT: !32 = distinct !DISubprogram(name: "D", linkageName: "_CD.Main.b88d1103f417c6d4", scope: null, file: !3, line: 27, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !33 = !DILocation(line: 28, column: 3, scope: !32)
|
||||
// CHECK:STDOUT: !34 = distinct !DISubprogram(name: "D", linkageName: "_CD.Main.66be507887ceee78", scope: null, file: !3, line: 27, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !35 = !DILocation(line: 28, column: 3, scope: !34)
|
||||
// CHECK:STDOUT: !7 = !DILocation(line: 43, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !8 = !DILocation(line: 44, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !9 = !DILocation(line: 46, column: 5, scope: !4)
|
||||
// CHECK:STDOUT: !10 = !DILocation(line: 46, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !11 = !DILocation(line: 47, column: 5, scope: !4)
|
||||
// CHECK:STDOUT: !12 = !DILocation(line: 47, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !13 = !DILocation(line: 42, column: 1, scope: !4)
|
||||
// CHECK:STDOUT: !14 = distinct !DISubprogram(name: "F", linkageName: "_CF.Main.b88d1103f417c6d4", scope: null, file: !3, line: 37, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !15 = !DILocation(line: 38, column: 3, scope: !14)
|
||||
// CHECK:STDOUT: !16 = !DILocation(line: 39, column: 3, scope: !14)
|
||||
// CHECK:STDOUT: !17 = !DILocation(line: 37, column: 1, scope: !14)
|
||||
// CHECK:STDOUT: !18 = distinct !DISubprogram(name: "F", linkageName: "_CF.Main.66be507887ceee78", scope: null, file: !3, line: 37, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !19 = !DILocation(line: 38, column: 3, scope: !18)
|
||||
// CHECK:STDOUT: !20 = !DILocation(line: 39, column: 3, scope: !18)
|
||||
// CHECK:STDOUT: !21 = !DILocation(line: 37, column: 1, scope: !18)
|
||||
// CHECK:STDOUT: !22 = distinct !DISubprogram(name: "A", linkageName: "_CA.Main.5754c7a55c7cbe4a", scope: null, file: !3, line: 25, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !23 = !DILocation(line: 26, column: 3, scope: !22)
|
||||
// CHECK:STDOUT: !24 = distinct !DISubprogram(name: "B", linkageName: "_CB.Main.b88d1103f417c6d4", scope: null, file: !3, line: 33, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !25 = !DILocation(line: 34, column: 5, scope: !24)
|
||||
// CHECK:STDOUT: !26 = !DILocation(line: 34, column: 3, scope: !24)
|
||||
// CHECK:STDOUT: !27 = !DILocation(line: 33, column: 1, scope: !24)
|
||||
// CHECK:STDOUT: !28 = distinct !DISubprogram(name: "B", linkageName: "_CB.Main.66be507887ceee78", scope: null, file: !3, line: 33, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !29 = !DILocation(line: 34, column: 5, scope: !28)
|
||||
// CHECK:STDOUT: !30 = !DILocation(line: 34, column: 3, scope: !28)
|
||||
// CHECK:STDOUT: !31 = !DILocation(line: 33, column: 1, scope: !28)
|
||||
// CHECK:STDOUT: !32 = distinct !DISubprogram(name: "D", linkageName: "_CD.Main.b88d1103f417c6d4", scope: null, file: !3, line: 29, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !33 = !DILocation(line: 30, column: 3, scope: !32)
|
||||
// CHECK:STDOUT: !34 = distinct !DISubprogram(name: "D", linkageName: "_CD.Main.66be507887ceee78", scope: null, file: !3, line: 29, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !35 = !DILocation(line: 30, column: 3, scope: !34)
|
||||
|
||||
@@ -2,6 +2,8 @@
|
||||
// Exceptions. See /LICENSE for license information.
|
||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
//
|
||||
// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/full.carbon
|
||||
//
|
||||
// AUTOUPDATE
|
||||
// TIP: To test this file alone, run:
|
||||
// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/lower/testdata/function/generic/call_recursive_basic.carbon
|
||||
@@ -52,14 +54,14 @@ fn M() {
|
||||
// CHECK:STDOUT: store double 1.000000e+00, ptr %m.var, align 8, !dbg !8
|
||||
// CHECK:STDOUT: call void @llvm.lifetime.start.p0(i64 8, ptr %ptr_i32.var), !dbg !9
|
||||
// CHECK:STDOUT: call void @llvm.lifetime.start.p0(i64 8, ptr %ptr_f64.var), !dbg !10
|
||||
// CHECK:STDOUT: %.loc28_5 = load i32, ptr %n.var, align 4, !dbg !11
|
||||
// CHECK:STDOUT: %F.call.loc28 = call i32 @_CF.Main.b88d1103f417c6d4(i32 %.loc28_5, i32 0), !dbg !12
|
||||
// CHECK:STDOUT: %.loc29_5 = load double, ptr %m.var, align 8, !dbg !13
|
||||
// CHECK:STDOUT: %F.call.loc29 = call double @_CF.Main.66be507887ceee78(double %.loc29_5, i32 0), !dbg !14
|
||||
// CHECK:STDOUT: %.loc30_5 = load ptr, ptr %ptr_i32.var, align 8, !dbg !15
|
||||
// CHECK:STDOUT: %F.call.loc30 = call ptr @_CF.Main.e8193710fd35b608(ptr %.loc30_5, i32 0), !dbg !16
|
||||
// CHECK:STDOUT: %.loc31_5 = load ptr, ptr %ptr_f64.var, align 8, !dbg !17
|
||||
// CHECK:STDOUT: %F.call.loc31 = call ptr @_CF.Main.e8193710fd35b608(ptr %.loc31_5, i32 0), !dbg !18
|
||||
// CHECK:STDOUT: %.loc30_5 = load i32, ptr %n.var, align 4, !dbg !11
|
||||
// CHECK:STDOUT: %F.call.loc30 = call i32 @_CF.Main.b88d1103f417c6d4(i32 %.loc30_5, i32 0), !dbg !12
|
||||
// CHECK:STDOUT: %.loc31_5 = load double, ptr %m.var, align 8, !dbg !13
|
||||
// CHECK:STDOUT: %F.call.loc31 = call double @_CF.Main.66be507887ceee78(double %.loc31_5, i32 0), !dbg !14
|
||||
// CHECK:STDOUT: %.loc32_5 = load ptr, ptr %ptr_i32.var, align 8, !dbg !15
|
||||
// CHECK:STDOUT: %F.call.loc32 = call ptr @_CF.Main.e8193710fd35b608(ptr %.loc32_5, i32 0), !dbg !16
|
||||
// CHECK:STDOUT: %.loc33_5 = load ptr, ptr %ptr_f64.var, align 8, !dbg !17
|
||||
// CHECK:STDOUT: %F.call.loc33 = call ptr @_CF.Main.e8193710fd35b608(ptr %.loc33_5, i32 0), !dbg !18
|
||||
// CHECK:STDOUT: ret void, !dbg !19
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -121,40 +123,40 @@ fn M() {
|
||||
// CHECK:STDOUT: !1 = !{i32 2, !"Debug Info Version", i32 3}
|
||||
// CHECK:STDOUT: !2 = distinct !DICompileUnit(language: DW_LANG_C, file: !3, producer: "carbon", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug)
|
||||
// CHECK:STDOUT: !3 = !DIFile(filename: "call_recursive_basic.carbon", directory: "")
|
||||
// CHECK:STDOUT: !4 = distinct !DISubprogram(name: "M", linkageName: "_CM.Main", scope: null, file: !3, line: 22, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !4 = distinct !DISubprogram(name: "M", linkageName: "_CM.Main", scope: null, file: !3, line: 24, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !5 = !DISubroutineType(types: !6)
|
||||
// CHECK:STDOUT: !6 = !{}
|
||||
// CHECK:STDOUT: !7 = !DILocation(line: 23, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !8 = !DILocation(line: 24, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !9 = !DILocation(line: 25, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !10 = !DILocation(line: 26, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !11 = !DILocation(line: 28, column: 5, scope: !4)
|
||||
// CHECK:STDOUT: !12 = !DILocation(line: 28, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !13 = !DILocation(line: 29, column: 5, scope: !4)
|
||||
// CHECK:STDOUT: !14 = !DILocation(line: 29, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !15 = !DILocation(line: 30, column: 5, scope: !4)
|
||||
// CHECK:STDOUT: !16 = !DILocation(line: 30, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !17 = !DILocation(line: 31, column: 5, scope: !4)
|
||||
// CHECK:STDOUT: !18 = !DILocation(line: 31, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !19 = !DILocation(line: 22, column: 1, scope: !4)
|
||||
// CHECK:STDOUT: !20 = distinct !DISubprogram(name: "F", linkageName: "_CF.Main.b88d1103f417c6d4", scope: null, file: !3, line: 15, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !21 = !DILocation(line: 16, column: 7, scope: !20)
|
||||
// CHECK:STDOUT: !22 = !DILocation(line: 16, column: 6, scope: !20)
|
||||
// CHECK:STDOUT: !23 = !DILocation(line: 17, column: 5, scope: !20)
|
||||
// CHECK:STDOUT: !24 = !DILocation(line: 19, column: 15, scope: !20)
|
||||
// CHECK:STDOUT: !25 = !DILocation(line: 19, column: 10, scope: !20)
|
||||
// CHECK:STDOUT: !26 = !DILocation(line: 19, column: 3, scope: !20)
|
||||
// CHECK:STDOUT: !27 = distinct !DISubprogram(name: "F", linkageName: "_CF.Main.66be507887ceee78", scope: null, file: !3, line: 15, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !28 = !DILocation(line: 16, column: 7, scope: !27)
|
||||
// CHECK:STDOUT: !29 = !DILocation(line: 16, column: 6, scope: !27)
|
||||
// CHECK:STDOUT: !30 = !DILocation(line: 17, column: 5, scope: !27)
|
||||
// CHECK:STDOUT: !31 = !DILocation(line: 19, column: 15, scope: !27)
|
||||
// CHECK:STDOUT: !32 = !DILocation(line: 19, column: 10, scope: !27)
|
||||
// CHECK:STDOUT: !33 = !DILocation(line: 19, column: 3, scope: !27)
|
||||
// CHECK:STDOUT: !34 = distinct !DISubprogram(name: "F", linkageName: "_CF.Main.e8193710fd35b608", scope: null, file: !3, line: 15, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !35 = !DILocation(line: 16, column: 7, scope: !34)
|
||||
// CHECK:STDOUT: !36 = !DILocation(line: 16, column: 6, scope: !34)
|
||||
// CHECK:STDOUT: !37 = !DILocation(line: 17, column: 5, scope: !34)
|
||||
// CHECK:STDOUT: !38 = !DILocation(line: 19, column: 15, scope: !34)
|
||||
// CHECK:STDOUT: !39 = !DILocation(line: 19, column: 10, scope: !34)
|
||||
// CHECK:STDOUT: !40 = !DILocation(line: 19, column: 3, scope: !34)
|
||||
// CHECK:STDOUT: !7 = !DILocation(line: 25, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !8 = !DILocation(line: 26, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !9 = !DILocation(line: 27, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !10 = !DILocation(line: 28, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !11 = !DILocation(line: 30, column: 5, scope: !4)
|
||||
// CHECK:STDOUT: !12 = !DILocation(line: 30, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !13 = !DILocation(line: 31, column: 5, scope: !4)
|
||||
// CHECK:STDOUT: !14 = !DILocation(line: 31, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !15 = !DILocation(line: 32, column: 5, scope: !4)
|
||||
// CHECK:STDOUT: !16 = !DILocation(line: 32, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !17 = !DILocation(line: 33, column: 5, scope: !4)
|
||||
// CHECK:STDOUT: !18 = !DILocation(line: 33, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !19 = !DILocation(line: 24, column: 1, scope: !4)
|
||||
// CHECK:STDOUT: !20 = distinct !DISubprogram(name: "F", linkageName: "_CF.Main.b88d1103f417c6d4", scope: null, file: !3, line: 17, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !21 = !DILocation(line: 18, column: 7, scope: !20)
|
||||
// CHECK:STDOUT: !22 = !DILocation(line: 18, column: 6, scope: !20)
|
||||
// CHECK:STDOUT: !23 = !DILocation(line: 19, column: 5, scope: !20)
|
||||
// CHECK:STDOUT: !24 = !DILocation(line: 21, column: 15, scope: !20)
|
||||
// CHECK:STDOUT: !25 = !DILocation(line: 21, column: 10, scope: !20)
|
||||
// CHECK:STDOUT: !26 = !DILocation(line: 21, column: 3, scope: !20)
|
||||
// CHECK:STDOUT: !27 = distinct !DISubprogram(name: "F", linkageName: "_CF.Main.66be507887ceee78", scope: null, file: !3, line: 17, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !28 = !DILocation(line: 18, column: 7, scope: !27)
|
||||
// CHECK:STDOUT: !29 = !DILocation(line: 18, column: 6, scope: !27)
|
||||
// CHECK:STDOUT: !30 = !DILocation(line: 19, column: 5, scope: !27)
|
||||
// CHECK:STDOUT: !31 = !DILocation(line: 21, column: 15, scope: !27)
|
||||
// CHECK:STDOUT: !32 = !DILocation(line: 21, column: 10, scope: !27)
|
||||
// CHECK:STDOUT: !33 = !DILocation(line: 21, column: 3, scope: !27)
|
||||
// CHECK:STDOUT: !34 = distinct !DISubprogram(name: "F", linkageName: "_CF.Main.e8193710fd35b608", scope: null, file: !3, line: 17, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !35 = !DILocation(line: 18, column: 7, scope: !34)
|
||||
// CHECK:STDOUT: !36 = !DILocation(line: 18, column: 6, scope: !34)
|
||||
// CHECK:STDOUT: !37 = !DILocation(line: 19, column: 5, scope: !34)
|
||||
// CHECK:STDOUT: !38 = !DILocation(line: 21, column: 15, scope: !34)
|
||||
// CHECK:STDOUT: !39 = !DILocation(line: 21, column: 10, scope: !34)
|
||||
// CHECK:STDOUT: !40 = !DILocation(line: 21, column: 3, scope: !34)
|
||||
|
||||
+108
-106
@@ -2,6 +2,8 @@
|
||||
// Exceptions. See /LICENSE for license information.
|
||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
//
|
||||
// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/full.carbon
|
||||
//
|
||||
// AUTOUPDATE
|
||||
// TIP: To test this file alone, run:
|
||||
// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/lower/testdata/function/generic/call_recursive_diamond.carbon
|
||||
@@ -71,14 +73,14 @@ fn M() {
|
||||
// CHECK:STDOUT: store double 1.000000e+00, ptr %m.var, align 8, !dbg !8
|
||||
// CHECK:STDOUT: call void @llvm.lifetime.start.p0(i64 8, ptr %ptr_i32.var), !dbg !9
|
||||
// CHECK:STDOUT: call void @llvm.lifetime.start.p0(i64 8, ptr %ptr_f64.var), !dbg !10
|
||||
// CHECK:STDOUT: %.loc51_5 = load i32, ptr %n.var, align 4, !dbg !11
|
||||
// CHECK:STDOUT: %A.call.loc51 = call i32 @_CA.Main.b88d1103f417c6d4(i32 %.loc51_5, i32 0), !dbg !12
|
||||
// CHECK:STDOUT: %.loc52_5 = load double, ptr %m.var, align 8, !dbg !13
|
||||
// CHECK:STDOUT: %A.call.loc52 = call double @_CA.Main.66be507887ceee78(double %.loc52_5, i32 0), !dbg !14
|
||||
// CHECK:STDOUT: %.loc53_5 = load ptr, ptr %ptr_i32.var, align 8, !dbg !15
|
||||
// CHECK:STDOUT: %A.call.loc53 = call ptr @_CA.Main.e8193710fd35b608(ptr %.loc53_5, i32 0), !dbg !16
|
||||
// CHECK:STDOUT: %.loc54_5 = load ptr, ptr %ptr_f64.var, align 8, !dbg !17
|
||||
// CHECK:STDOUT: %A.call.loc54 = call ptr @_CA.Main.e8193710fd35b608(ptr %.loc54_5, i32 0), !dbg !18
|
||||
// CHECK:STDOUT: %.loc53_5 = load i32, ptr %n.var, align 4, !dbg !11
|
||||
// CHECK:STDOUT: %A.call.loc53 = call i32 @_CA.Main.b88d1103f417c6d4(i32 %.loc53_5, i32 0), !dbg !12
|
||||
// CHECK:STDOUT: %.loc54_5 = load double, ptr %m.var, align 8, !dbg !13
|
||||
// CHECK:STDOUT: %A.call.loc54 = call double @_CA.Main.66be507887ceee78(double %.loc54_5, i32 0), !dbg !14
|
||||
// CHECK:STDOUT: %.loc55_5 = load ptr, ptr %ptr_i32.var, align 8, !dbg !15
|
||||
// CHECK:STDOUT: %A.call.loc55 = call ptr @_CA.Main.e8193710fd35b608(ptr %.loc55_5, i32 0), !dbg !16
|
||||
// CHECK:STDOUT: %.loc56_5 = load ptr, ptr %ptr_f64.var, align 8, !dbg !17
|
||||
// CHECK:STDOUT: %A.call.loc56 = call ptr @_CA.Main.e8193710fd35b608(ptr %.loc56_5, i32 0), !dbg !18
|
||||
// CHECK:STDOUT: ret void, !dbg !19
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -88,21 +90,21 @@ fn M() {
|
||||
// CHECK:STDOUT: define linkonce_odr i32 @_CA.Main.b88d1103f417c6d4(i32 %x, i32 %count) !dbg !20 {
|
||||
// CHECK:STDOUT: entry:
|
||||
// CHECK:STDOUT: %int.greater = icmp sgt i32 %count, 4, !dbg !21
|
||||
// CHECK:STDOUT: br i1 %int.greater, label %if.then.loc20, label %if.else.loc20, !dbg !22
|
||||
// CHECK:STDOUT: br i1 %int.greater, label %if.then.loc22, label %if.else.loc22, !dbg !22
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: if.then.loc20: ; preds = %entry
|
||||
// CHECK:STDOUT: if.then.loc22: ; preds = %entry
|
||||
// CHECK:STDOUT: ret i32 %x, !dbg !23
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: if.else.loc20: ; preds = %entry
|
||||
// CHECK:STDOUT: if.else.loc22: ; preds = %entry
|
||||
// CHECK:STDOUT: %int.smod = srem i32 %count, 2, !dbg !24
|
||||
// CHECK:STDOUT: %int.eq = icmp eq i32 %int.smod, 0, !dbg !24
|
||||
// CHECK:STDOUT: br i1 %int.eq, label %if.then.loc23, label %if.else.loc23, !dbg !25
|
||||
// CHECK:STDOUT: br i1 %int.eq, label %if.then.loc25, label %if.else.loc25, !dbg !25
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: if.then.loc23: ; preds = %if.else.loc20
|
||||
// CHECK:STDOUT: if.then.loc25: ; preds = %if.else.loc22
|
||||
// CHECK:STDOUT: %B.call = call i32 @_CB.Main.b88d1103f417c6d4(i32 %x, i32 %count), !dbg !26
|
||||
// CHECK:STDOUT: ret i32 %B.call, !dbg !27
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: if.else.loc23: ; preds = %if.else.loc20
|
||||
// CHECK:STDOUT: if.else.loc25: ; preds = %if.else.loc22
|
||||
// CHECK:STDOUT: %C.call = call i32 @_CC.Main.b88d1103f417c6d4(i32 %x, i32 %count), !dbg !28
|
||||
// CHECK:STDOUT: ret i32 %C.call, !dbg !29
|
||||
// CHECK:STDOUT: }
|
||||
@@ -110,21 +112,21 @@ fn M() {
|
||||
// CHECK:STDOUT: define linkonce_odr double @_CA.Main.66be507887ceee78(double %x, i32 %count) !dbg !30 {
|
||||
// CHECK:STDOUT: entry:
|
||||
// CHECK:STDOUT: %int.greater = icmp sgt i32 %count, 4, !dbg !31
|
||||
// CHECK:STDOUT: br i1 %int.greater, label %if.then.loc20, label %if.else.loc20, !dbg !32
|
||||
// CHECK:STDOUT: br i1 %int.greater, label %if.then.loc22, label %if.else.loc22, !dbg !32
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: if.then.loc20: ; preds = %entry
|
||||
// CHECK:STDOUT: if.then.loc22: ; preds = %entry
|
||||
// CHECK:STDOUT: ret double %x, !dbg !33
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: if.else.loc20: ; preds = %entry
|
||||
// CHECK:STDOUT: if.else.loc22: ; preds = %entry
|
||||
// CHECK:STDOUT: %int.smod = srem i32 %count, 2, !dbg !34
|
||||
// CHECK:STDOUT: %int.eq = icmp eq i32 %int.smod, 0, !dbg !34
|
||||
// CHECK:STDOUT: br i1 %int.eq, label %if.then.loc23, label %if.else.loc23, !dbg !35
|
||||
// CHECK:STDOUT: br i1 %int.eq, label %if.then.loc25, label %if.else.loc25, !dbg !35
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: if.then.loc23: ; preds = %if.else.loc20
|
||||
// CHECK:STDOUT: if.then.loc25: ; preds = %if.else.loc22
|
||||
// CHECK:STDOUT: %B.call = call double @_CB.Main.66be507887ceee78(double %x, i32 %count), !dbg !36
|
||||
// CHECK:STDOUT: ret double %B.call, !dbg !37
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: if.else.loc23: ; preds = %if.else.loc20
|
||||
// CHECK:STDOUT: if.else.loc25: ; preds = %if.else.loc22
|
||||
// CHECK:STDOUT: %C.call = call double @_CC.Main.66be507887ceee78(double %x, i32 %count), !dbg !38
|
||||
// CHECK:STDOUT: ret double %C.call, !dbg !39
|
||||
// CHECK:STDOUT: }
|
||||
@@ -132,21 +134,21 @@ fn M() {
|
||||
// CHECK:STDOUT: define linkonce_odr ptr @_CA.Main.e8193710fd35b608(ptr %x, i32 %count) !dbg !40 {
|
||||
// CHECK:STDOUT: entry:
|
||||
// CHECK:STDOUT: %int.greater = icmp sgt i32 %count, 4, !dbg !41
|
||||
// CHECK:STDOUT: br i1 %int.greater, label %if.then.loc20, label %if.else.loc20, !dbg !42
|
||||
// CHECK:STDOUT: br i1 %int.greater, label %if.then.loc22, label %if.else.loc22, !dbg !42
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: if.then.loc20: ; preds = %entry
|
||||
// CHECK:STDOUT: if.then.loc22: ; preds = %entry
|
||||
// CHECK:STDOUT: ret ptr %x, !dbg !43
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: if.else.loc20: ; preds = %entry
|
||||
// CHECK:STDOUT: if.else.loc22: ; preds = %entry
|
||||
// CHECK:STDOUT: %int.smod = srem i32 %count, 2, !dbg !44
|
||||
// CHECK:STDOUT: %int.eq = icmp eq i32 %int.smod, 0, !dbg !44
|
||||
// CHECK:STDOUT: br i1 %int.eq, label %if.then.loc23, label %if.else.loc23, !dbg !45
|
||||
// CHECK:STDOUT: br i1 %int.eq, label %if.then.loc25, label %if.else.loc25, !dbg !45
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: if.then.loc23: ; preds = %if.else.loc20
|
||||
// CHECK:STDOUT: if.then.loc25: ; preds = %if.else.loc22
|
||||
// CHECK:STDOUT: %B.call = call ptr @_CB.Main.e8193710fd35b608(ptr %x, i32 %count), !dbg !46
|
||||
// CHECK:STDOUT: ret ptr %B.call, !dbg !47
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: if.else.loc23: ; preds = %if.else.loc20
|
||||
// CHECK:STDOUT: if.else.loc25: ; preds = %if.else.loc22
|
||||
// CHECK:STDOUT: %C.call = call ptr @_CC.Main.e8193710fd35b608(ptr %x, i32 %count), !dbg !48
|
||||
// CHECK:STDOUT: ret ptr %C.call, !dbg !49
|
||||
// CHECK:STDOUT: }
|
||||
@@ -233,85 +235,85 @@ fn M() {
|
||||
// CHECK:STDOUT: !1 = !{i32 2, !"Debug Info Version", i32 3}
|
||||
// CHECK:STDOUT: !2 = distinct !DICompileUnit(language: DW_LANG_C, file: !3, producer: "carbon", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug)
|
||||
// CHECK:STDOUT: !3 = !DIFile(filename: "call_recursive_diamond.carbon", directory: "")
|
||||
// CHECK:STDOUT: !4 = distinct !DISubprogram(name: "M", linkageName: "_CM.Main", scope: null, file: !3, line: 45, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !4 = distinct !DISubprogram(name: "M", linkageName: "_CM.Main", scope: null, file: !3, line: 47, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !5 = !DISubroutineType(types: !6)
|
||||
// CHECK:STDOUT: !6 = !{}
|
||||
// CHECK:STDOUT: !7 = !DILocation(line: 46, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !8 = !DILocation(line: 47, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !9 = !DILocation(line: 48, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !10 = !DILocation(line: 49, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !11 = !DILocation(line: 51, column: 5, scope: !4)
|
||||
// CHECK:STDOUT: !12 = !DILocation(line: 51, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !13 = !DILocation(line: 52, column: 5, scope: !4)
|
||||
// CHECK:STDOUT: !14 = !DILocation(line: 52, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !15 = !DILocation(line: 53, column: 5, scope: !4)
|
||||
// CHECK:STDOUT: !16 = !DILocation(line: 53, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !17 = !DILocation(line: 54, column: 5, scope: !4)
|
||||
// CHECK:STDOUT: !18 = !DILocation(line: 54, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !19 = !DILocation(line: 45, column: 1, scope: !4)
|
||||
// CHECK:STDOUT: !20 = distinct !DISubprogram(name: "A", linkageName: "_CA.Main.b88d1103f417c6d4", scope: null, file: !3, line: 19, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !21 = !DILocation(line: 20, column: 7, scope: !20)
|
||||
// CHECK:STDOUT: !22 = !DILocation(line: 20, column: 6, scope: !20)
|
||||
// CHECK:STDOUT: !23 = !DILocation(line: 21, column: 5, scope: !20)
|
||||
// CHECK:STDOUT: !24 = !DILocation(line: 23, column: 7, scope: !20)
|
||||
// CHECK:STDOUT: !25 = !DILocation(line: 23, column: 6, scope: !20)
|
||||
// CHECK:STDOUT: !26 = !DILocation(line: 24, column: 12, scope: !20)
|
||||
// CHECK:STDOUT: !27 = !DILocation(line: 24, column: 5, scope: !20)
|
||||
// CHECK:STDOUT: !28 = !DILocation(line: 26, column: 12, scope: !20)
|
||||
// CHECK:STDOUT: !29 = !DILocation(line: 26, column: 5, scope: !20)
|
||||
// CHECK:STDOUT: !30 = distinct !DISubprogram(name: "A", linkageName: "_CA.Main.66be507887ceee78", scope: null, file: !3, line: 19, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !31 = !DILocation(line: 20, column: 7, scope: !30)
|
||||
// CHECK:STDOUT: !32 = !DILocation(line: 20, column: 6, scope: !30)
|
||||
// CHECK:STDOUT: !33 = !DILocation(line: 21, column: 5, scope: !30)
|
||||
// CHECK:STDOUT: !34 = !DILocation(line: 23, column: 7, scope: !30)
|
||||
// CHECK:STDOUT: !35 = !DILocation(line: 23, column: 6, scope: !30)
|
||||
// CHECK:STDOUT: !36 = !DILocation(line: 24, column: 12, scope: !30)
|
||||
// CHECK:STDOUT: !37 = !DILocation(line: 24, column: 5, scope: !30)
|
||||
// CHECK:STDOUT: !38 = !DILocation(line: 26, column: 12, scope: !30)
|
||||
// CHECK:STDOUT: !39 = !DILocation(line: 26, column: 5, scope: !30)
|
||||
// CHECK:STDOUT: !40 = distinct !DISubprogram(name: "A", linkageName: "_CA.Main.e8193710fd35b608", scope: null, file: !3, line: 19, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !41 = !DILocation(line: 20, column: 7, scope: !40)
|
||||
// CHECK:STDOUT: !42 = !DILocation(line: 20, column: 6, scope: !40)
|
||||
// CHECK:STDOUT: !43 = !DILocation(line: 21, column: 5, scope: !40)
|
||||
// CHECK:STDOUT: !44 = !DILocation(line: 23, column: 7, scope: !40)
|
||||
// CHECK:STDOUT: !45 = !DILocation(line: 23, column: 6, scope: !40)
|
||||
// CHECK:STDOUT: !46 = !DILocation(line: 24, column: 12, scope: !40)
|
||||
// CHECK:STDOUT: !47 = !DILocation(line: 24, column: 5, scope: !40)
|
||||
// CHECK:STDOUT: !48 = !DILocation(line: 26, column: 12, scope: !40)
|
||||
// CHECK:STDOUT: !49 = !DILocation(line: 26, column: 5, scope: !40)
|
||||
// CHECK:STDOUT: !50 = distinct !DISubprogram(name: "B", linkageName: "_CB.Main.b88d1103f417c6d4", scope: null, file: !3, line: 31, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !51 = !DILocation(line: 32, column: 3, scope: !50)
|
||||
// CHECK:STDOUT: !52 = !DILocation(line: 33, column: 10, scope: !50)
|
||||
// CHECK:STDOUT: !53 = !DILocation(line: 33, column: 3, scope: !50)
|
||||
// CHECK:STDOUT: !54 = distinct !DISubprogram(name: "C", linkageName: "_CC.Main.b88d1103f417c6d4", scope: null, file: !3, line: 36, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !55 = !DILocation(line: 37, column: 3, scope: !54)
|
||||
// CHECK:STDOUT: !56 = !DILocation(line: 38, column: 10, scope: !54)
|
||||
// CHECK:STDOUT: !57 = !DILocation(line: 38, column: 3, scope: !54)
|
||||
// CHECK:STDOUT: !58 = distinct !DISubprogram(name: "B", linkageName: "_CB.Main.66be507887ceee78", scope: null, file: !3, line: 31, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !59 = !DILocation(line: 32, column: 3, scope: !58)
|
||||
// CHECK:STDOUT: !60 = !DILocation(line: 33, column: 10, scope: !58)
|
||||
// CHECK:STDOUT: !61 = !DILocation(line: 33, column: 3, scope: !58)
|
||||
// CHECK:STDOUT: !62 = distinct !DISubprogram(name: "C", linkageName: "_CC.Main.66be507887ceee78", scope: null, file: !3, line: 36, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !63 = !DILocation(line: 37, column: 3, scope: !62)
|
||||
// CHECK:STDOUT: !64 = !DILocation(line: 38, column: 10, scope: !62)
|
||||
// CHECK:STDOUT: !65 = !DILocation(line: 38, column: 3, scope: !62)
|
||||
// CHECK:STDOUT: !66 = distinct !DISubprogram(name: "B", linkageName: "_CB.Main.e8193710fd35b608", scope: null, file: !3, line: 31, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !67 = !DILocation(line: 32, column: 3, scope: !66)
|
||||
// CHECK:STDOUT: !68 = !DILocation(line: 33, column: 10, scope: !66)
|
||||
// CHECK:STDOUT: !69 = !DILocation(line: 33, column: 3, scope: !66)
|
||||
// CHECK:STDOUT: !70 = distinct !DISubprogram(name: "C", linkageName: "_CC.Main.e8193710fd35b608", scope: null, file: !3, line: 36, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !71 = !DILocation(line: 37, column: 3, scope: !70)
|
||||
// CHECK:STDOUT: !72 = !DILocation(line: 38, column: 10, scope: !70)
|
||||
// CHECK:STDOUT: !73 = !DILocation(line: 38, column: 3, scope: !70)
|
||||
// CHECK:STDOUT: !74 = distinct !DISubprogram(name: "D", linkageName: "_CD.Main.b88d1103f417c6d4", scope: null, file: !3, line: 41, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !75 = !DILocation(line: 42, column: 15, scope: !74)
|
||||
// CHECK:STDOUT: !76 = !DILocation(line: 42, column: 10, scope: !74)
|
||||
// CHECK:STDOUT: !77 = !DILocation(line: 42, column: 3, scope: !74)
|
||||
// CHECK:STDOUT: !78 = distinct !DISubprogram(name: "D", linkageName: "_CD.Main.66be507887ceee78", scope: null, file: !3, line: 41, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !79 = !DILocation(line: 42, column: 15, scope: !78)
|
||||
// CHECK:STDOUT: !80 = !DILocation(line: 42, column: 10, scope: !78)
|
||||
// CHECK:STDOUT: !81 = !DILocation(line: 42, column: 3, scope: !78)
|
||||
// CHECK:STDOUT: !82 = distinct !DISubprogram(name: "D", linkageName: "_CD.Main.e8193710fd35b608", scope: null, file: !3, line: 41, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !83 = !DILocation(line: 42, column: 15, scope: !82)
|
||||
// CHECK:STDOUT: !84 = !DILocation(line: 42, column: 10, scope: !82)
|
||||
// CHECK:STDOUT: !85 = !DILocation(line: 42, column: 3, scope: !82)
|
||||
// CHECK:STDOUT: !7 = !DILocation(line: 48, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !8 = !DILocation(line: 49, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !9 = !DILocation(line: 50, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !10 = !DILocation(line: 51, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !11 = !DILocation(line: 53, column: 5, scope: !4)
|
||||
// CHECK:STDOUT: !12 = !DILocation(line: 53, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !13 = !DILocation(line: 54, column: 5, scope: !4)
|
||||
// CHECK:STDOUT: !14 = !DILocation(line: 54, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !15 = !DILocation(line: 55, column: 5, scope: !4)
|
||||
// CHECK:STDOUT: !16 = !DILocation(line: 55, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !17 = !DILocation(line: 56, column: 5, scope: !4)
|
||||
// CHECK:STDOUT: !18 = !DILocation(line: 56, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !19 = !DILocation(line: 47, column: 1, scope: !4)
|
||||
// CHECK:STDOUT: !20 = distinct !DISubprogram(name: "A", linkageName: "_CA.Main.b88d1103f417c6d4", scope: null, file: !3, line: 21, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !21 = !DILocation(line: 22, column: 7, scope: !20)
|
||||
// CHECK:STDOUT: !22 = !DILocation(line: 22, column: 6, scope: !20)
|
||||
// CHECK:STDOUT: !23 = !DILocation(line: 23, column: 5, scope: !20)
|
||||
// CHECK:STDOUT: !24 = !DILocation(line: 25, column: 7, scope: !20)
|
||||
// CHECK:STDOUT: !25 = !DILocation(line: 25, column: 6, scope: !20)
|
||||
// CHECK:STDOUT: !26 = !DILocation(line: 26, column: 12, scope: !20)
|
||||
// CHECK:STDOUT: !27 = !DILocation(line: 26, column: 5, scope: !20)
|
||||
// CHECK:STDOUT: !28 = !DILocation(line: 28, column: 12, scope: !20)
|
||||
// CHECK:STDOUT: !29 = !DILocation(line: 28, column: 5, scope: !20)
|
||||
// CHECK:STDOUT: !30 = distinct !DISubprogram(name: "A", linkageName: "_CA.Main.66be507887ceee78", scope: null, file: !3, line: 21, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !31 = !DILocation(line: 22, column: 7, scope: !30)
|
||||
// CHECK:STDOUT: !32 = !DILocation(line: 22, column: 6, scope: !30)
|
||||
// CHECK:STDOUT: !33 = !DILocation(line: 23, column: 5, scope: !30)
|
||||
// CHECK:STDOUT: !34 = !DILocation(line: 25, column: 7, scope: !30)
|
||||
// CHECK:STDOUT: !35 = !DILocation(line: 25, column: 6, scope: !30)
|
||||
// CHECK:STDOUT: !36 = !DILocation(line: 26, column: 12, scope: !30)
|
||||
// CHECK:STDOUT: !37 = !DILocation(line: 26, column: 5, scope: !30)
|
||||
// CHECK:STDOUT: !38 = !DILocation(line: 28, column: 12, scope: !30)
|
||||
// CHECK:STDOUT: !39 = !DILocation(line: 28, column: 5, scope: !30)
|
||||
// CHECK:STDOUT: !40 = distinct !DISubprogram(name: "A", linkageName: "_CA.Main.e8193710fd35b608", scope: null, file: !3, line: 21, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !41 = !DILocation(line: 22, column: 7, scope: !40)
|
||||
// CHECK:STDOUT: !42 = !DILocation(line: 22, column: 6, scope: !40)
|
||||
// CHECK:STDOUT: !43 = !DILocation(line: 23, column: 5, scope: !40)
|
||||
// CHECK:STDOUT: !44 = !DILocation(line: 25, column: 7, scope: !40)
|
||||
// CHECK:STDOUT: !45 = !DILocation(line: 25, column: 6, scope: !40)
|
||||
// CHECK:STDOUT: !46 = !DILocation(line: 26, column: 12, scope: !40)
|
||||
// CHECK:STDOUT: !47 = !DILocation(line: 26, column: 5, scope: !40)
|
||||
// CHECK:STDOUT: !48 = !DILocation(line: 28, column: 12, scope: !40)
|
||||
// CHECK:STDOUT: !49 = !DILocation(line: 28, column: 5, scope: !40)
|
||||
// CHECK:STDOUT: !50 = distinct !DISubprogram(name: "B", linkageName: "_CB.Main.b88d1103f417c6d4", scope: null, file: !3, line: 33, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !51 = !DILocation(line: 34, column: 3, scope: !50)
|
||||
// CHECK:STDOUT: !52 = !DILocation(line: 35, column: 10, scope: !50)
|
||||
// CHECK:STDOUT: !53 = !DILocation(line: 35, column: 3, scope: !50)
|
||||
// CHECK:STDOUT: !54 = distinct !DISubprogram(name: "C", linkageName: "_CC.Main.b88d1103f417c6d4", scope: null, file: !3, line: 38, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !55 = !DILocation(line: 39, column: 3, scope: !54)
|
||||
// CHECK:STDOUT: !56 = !DILocation(line: 40, column: 10, scope: !54)
|
||||
// CHECK:STDOUT: !57 = !DILocation(line: 40, column: 3, scope: !54)
|
||||
// CHECK:STDOUT: !58 = distinct !DISubprogram(name: "B", linkageName: "_CB.Main.66be507887ceee78", scope: null, file: !3, line: 33, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !59 = !DILocation(line: 34, column: 3, scope: !58)
|
||||
// CHECK:STDOUT: !60 = !DILocation(line: 35, column: 10, scope: !58)
|
||||
// CHECK:STDOUT: !61 = !DILocation(line: 35, column: 3, scope: !58)
|
||||
// CHECK:STDOUT: !62 = distinct !DISubprogram(name: "C", linkageName: "_CC.Main.66be507887ceee78", scope: null, file: !3, line: 38, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !63 = !DILocation(line: 39, column: 3, scope: !62)
|
||||
// CHECK:STDOUT: !64 = !DILocation(line: 40, column: 10, scope: !62)
|
||||
// CHECK:STDOUT: !65 = !DILocation(line: 40, column: 3, scope: !62)
|
||||
// CHECK:STDOUT: !66 = distinct !DISubprogram(name: "B", linkageName: "_CB.Main.e8193710fd35b608", scope: null, file: !3, line: 33, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !67 = !DILocation(line: 34, column: 3, scope: !66)
|
||||
// CHECK:STDOUT: !68 = !DILocation(line: 35, column: 10, scope: !66)
|
||||
// CHECK:STDOUT: !69 = !DILocation(line: 35, column: 3, scope: !66)
|
||||
// CHECK:STDOUT: !70 = distinct !DISubprogram(name: "C", linkageName: "_CC.Main.e8193710fd35b608", scope: null, file: !3, line: 38, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !71 = !DILocation(line: 39, column: 3, scope: !70)
|
||||
// CHECK:STDOUT: !72 = !DILocation(line: 40, column: 10, scope: !70)
|
||||
// CHECK:STDOUT: !73 = !DILocation(line: 40, column: 3, scope: !70)
|
||||
// CHECK:STDOUT: !74 = distinct !DISubprogram(name: "D", linkageName: "_CD.Main.b88d1103f417c6d4", scope: null, file: !3, line: 43, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !75 = !DILocation(line: 44, column: 15, scope: !74)
|
||||
// CHECK:STDOUT: !76 = !DILocation(line: 44, column: 10, scope: !74)
|
||||
// CHECK:STDOUT: !77 = !DILocation(line: 44, column: 3, scope: !74)
|
||||
// CHECK:STDOUT: !78 = distinct !DISubprogram(name: "D", linkageName: "_CD.Main.66be507887ceee78", scope: null, file: !3, line: 43, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !79 = !DILocation(line: 44, column: 15, scope: !78)
|
||||
// CHECK:STDOUT: !80 = !DILocation(line: 44, column: 10, scope: !78)
|
||||
// CHECK:STDOUT: !81 = !DILocation(line: 44, column: 3, scope: !78)
|
||||
// CHECK:STDOUT: !82 = distinct !DISubprogram(name: "D", linkageName: "_CD.Main.e8193710fd35b608", scope: null, file: !3, line: 43, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !83 = !DILocation(line: 44, column: 15, scope: !82)
|
||||
// CHECK:STDOUT: !84 = !DILocation(line: 44, column: 10, scope: !82)
|
||||
// CHECK:STDOUT: !85 = !DILocation(line: 44, column: 3, scope: !82)
|
||||
|
||||
@@ -2,6 +2,8 @@
|
||||
// Exceptions. See /LICENSE for license information.
|
||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
//
|
||||
// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/full.carbon
|
||||
//
|
||||
// AUTOUPDATE
|
||||
// TIP: To test this file alone, run:
|
||||
// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/lower/testdata/function/generic/call_recursive_impl.carbon
|
||||
@@ -58,8 +60,8 @@ fn Run() {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: define void @main() !dbg !12 {
|
||||
// CHECK:STDOUT: entry:
|
||||
// CHECK:STDOUT: %G.call.loc38 = call i32 @_CG.Main.2c436a64dfc3fd29(i32 0), !dbg !13
|
||||
// CHECK:STDOUT: %G.call.loc39 = call i32 @_CG.Main.c124d41ebc08c32b(i32 0), !dbg !14
|
||||
// CHECK:STDOUT: %G.call.loc40 = call i32 @_CG.Main.2c436a64dfc3fd29(i32 0), !dbg !13
|
||||
// CHECK:STDOUT: %G.call.loc41 = call i32 @_CG.Main.c124d41ebc08c32b(i32 0), !dbg !14
|
||||
// CHECK:STDOUT: ret void, !dbg !15
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -105,31 +107,31 @@ fn Run() {
|
||||
// CHECK:STDOUT: !1 = !{i32 2, !"Debug Info Version", i32 3}
|
||||
// CHECK:STDOUT: !2 = distinct !DICompileUnit(language: DW_LANG_C, file: !3, producer: "carbon", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug)
|
||||
// CHECK:STDOUT: !3 = !DIFile(filename: "call_recursive_impl.carbon", directory: "")
|
||||
// CHECK:STDOUT: !4 = distinct !DISubprogram(name: "F", linkageName: "_CF.X.Main:I.Main", scope: null, file: !3, line: 18, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !4 = distinct !DISubprogram(name: "F", linkageName: "_CF.X.Main:I.Main", scope: null, file: !3, line: 20, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !5 = !DISubroutineType(types: !6)
|
||||
// CHECK:STDOUT: !6 = !{}
|
||||
// CHECK:STDOUT: !7 = !DILocation(line: 18, column: 12, scope: !4)
|
||||
// CHECK:STDOUT: !8 = !DILocation(line: 18, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !9 = distinct !DISubprogram(name: "F", linkageName: "_CF.Y.Main:I.Main", scope: null, file: !3, line: 22, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !10 = !DILocation(line: 22, column: 12, scope: !9)
|
||||
// CHECK:STDOUT: !11 = !DILocation(line: 22, column: 3, scope: !9)
|
||||
// CHECK:STDOUT: !12 = distinct !DISubprogram(name: "Run", linkageName: "main", scope: null, file: !3, line: 37, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !13 = !DILocation(line: 38, column: 3, scope: !12)
|
||||
// CHECK:STDOUT: !14 = !DILocation(line: 39, column: 3, scope: !12)
|
||||
// CHECK:STDOUT: !15 = !DILocation(line: 37, column: 1, scope: !12)
|
||||
// CHECK:STDOUT: !16 = distinct !DISubprogram(name: "G", linkageName: "_CG.Main.2c436a64dfc3fd29", scope: null, file: !3, line: 28, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !17 = !DILocation(line: 29, column: 3, scope: !16)
|
||||
// CHECK:STDOUT: !18 = !DILocation(line: 31, column: 7, scope: !16)
|
||||
// CHECK:STDOUT: !19 = !DILocation(line: 31, column: 6, scope: !16)
|
||||
// CHECK:STDOUT: !20 = !DILocation(line: 32, column: 5, scope: !16)
|
||||
// CHECK:STDOUT: !21 = !DILocation(line: 34, column: 15, scope: !16)
|
||||
// CHECK:STDOUT: !22 = !DILocation(line: 34, column: 10, scope: !16)
|
||||
// CHECK:STDOUT: !23 = !DILocation(line: 34, column: 3, scope: !16)
|
||||
// CHECK:STDOUT: !24 = distinct !DISubprogram(name: "G", linkageName: "_CG.Main.c124d41ebc08c32b", scope: null, file: !3, line: 28, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !25 = !DILocation(line: 29, column: 3, scope: !24)
|
||||
// CHECK:STDOUT: !26 = !DILocation(line: 31, column: 7, scope: !24)
|
||||
// CHECK:STDOUT: !27 = !DILocation(line: 31, column: 6, scope: !24)
|
||||
// CHECK:STDOUT: !28 = !DILocation(line: 32, column: 5, scope: !24)
|
||||
// CHECK:STDOUT: !29 = !DILocation(line: 34, column: 15, scope: !24)
|
||||
// CHECK:STDOUT: !30 = !DILocation(line: 34, column: 10, scope: !24)
|
||||
// CHECK:STDOUT: !31 = !DILocation(line: 34, column: 3, scope: !24)
|
||||
// CHECK:STDOUT: !7 = !DILocation(line: 20, column: 12, scope: !4)
|
||||
// CHECK:STDOUT: !8 = !DILocation(line: 20, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !9 = distinct !DISubprogram(name: "F", linkageName: "_CF.Y.Main:I.Main", scope: null, file: !3, line: 24, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !10 = !DILocation(line: 24, column: 12, scope: !9)
|
||||
// CHECK:STDOUT: !11 = !DILocation(line: 24, column: 3, scope: !9)
|
||||
// CHECK:STDOUT: !12 = distinct !DISubprogram(name: "Run", linkageName: "main", scope: null, file: !3, line: 39, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !13 = !DILocation(line: 40, column: 3, scope: !12)
|
||||
// CHECK:STDOUT: !14 = !DILocation(line: 41, column: 3, scope: !12)
|
||||
// CHECK:STDOUT: !15 = !DILocation(line: 39, column: 1, scope: !12)
|
||||
// CHECK:STDOUT: !16 = distinct !DISubprogram(name: "G", linkageName: "_CG.Main.2c436a64dfc3fd29", scope: null, file: !3, line: 30, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !17 = !DILocation(line: 31, column: 3, scope: !16)
|
||||
// CHECK:STDOUT: !18 = !DILocation(line: 33, column: 7, scope: !16)
|
||||
// CHECK:STDOUT: !19 = !DILocation(line: 33, column: 6, scope: !16)
|
||||
// CHECK:STDOUT: !20 = !DILocation(line: 34, column: 5, scope: !16)
|
||||
// CHECK:STDOUT: !21 = !DILocation(line: 36, column: 15, scope: !16)
|
||||
// CHECK:STDOUT: !22 = !DILocation(line: 36, column: 10, scope: !16)
|
||||
// CHECK:STDOUT: !23 = !DILocation(line: 36, column: 3, scope: !16)
|
||||
// CHECK:STDOUT: !24 = distinct !DISubprogram(name: "G", linkageName: "_CG.Main.c124d41ebc08c32b", scope: null, file: !3, line: 30, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !25 = !DILocation(line: 31, column: 3, scope: !24)
|
||||
// CHECK:STDOUT: !26 = !DILocation(line: 33, column: 7, scope: !24)
|
||||
// CHECK:STDOUT: !27 = !DILocation(line: 33, column: 6, scope: !24)
|
||||
// CHECK:STDOUT: !28 = !DILocation(line: 34, column: 5, scope: !24)
|
||||
// CHECK:STDOUT: !29 = !DILocation(line: 36, column: 15, scope: !24)
|
||||
// CHECK:STDOUT: !30 = !DILocation(line: 36, column: 10, scope: !24)
|
||||
// CHECK:STDOUT: !31 = !DILocation(line: 36, column: 3, scope: !24)
|
||||
|
||||
@@ -2,6 +2,8 @@
|
||||
// Exceptions. See /LICENSE for license information.
|
||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
//
|
||||
// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/full.carbon
|
||||
//
|
||||
// AUTOUPDATE
|
||||
// TIP: To test this file alone, run:
|
||||
// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/lower/testdata/function/generic/call_recursive_mutual.carbon
|
||||
@@ -54,14 +56,14 @@ fn M() {
|
||||
// CHECK:STDOUT: store double 1.000000e+00, ptr %m.var, align 8, !dbg !8
|
||||
// CHECK:STDOUT: call void @llvm.lifetime.start.p0(i64 8, ptr %ptr_i32.var), !dbg !9
|
||||
// CHECK:STDOUT: call void @llvm.lifetime.start.p0(i64 8, ptr %ptr_f64.var), !dbg !10
|
||||
// CHECK:STDOUT: %.loc36_5 = load i32, ptr %n.var, align 4, !dbg !11
|
||||
// CHECK:STDOUT: %F.call.loc36 = call i32 @_CF.Main.b88d1103f417c6d4(i32 %.loc36_5, i32 0), !dbg !12
|
||||
// CHECK:STDOUT: %.loc37_5 = load double, ptr %m.var, align 8, !dbg !13
|
||||
// CHECK:STDOUT: %F.call.loc37 = call double @_CF.Main.66be507887ceee78(double %.loc37_5, i32 0), !dbg !14
|
||||
// CHECK:STDOUT: %.loc38_5 = load ptr, ptr %ptr_i32.var, align 8, !dbg !15
|
||||
// CHECK:STDOUT: %F.call.loc38 = call ptr @_CF.Main.e8193710fd35b608(ptr %.loc38_5, i32 0), !dbg !16
|
||||
// CHECK:STDOUT: %.loc39_5 = load ptr, ptr %ptr_f64.var, align 8, !dbg !17
|
||||
// CHECK:STDOUT: %F.call.loc39 = call ptr @_CF.Main.e8193710fd35b608(ptr %.loc39_5, i32 0), !dbg !18
|
||||
// CHECK:STDOUT: %.loc38_5 = load i32, ptr %n.var, align 4, !dbg !11
|
||||
// CHECK:STDOUT: %F.call.loc38 = call i32 @_CF.Main.b88d1103f417c6d4(i32 %.loc38_5, i32 0), !dbg !12
|
||||
// CHECK:STDOUT: %.loc39_5 = load double, ptr %m.var, align 8, !dbg !13
|
||||
// CHECK:STDOUT: %F.call.loc39 = call double @_CF.Main.66be507887ceee78(double %.loc39_5, i32 0), !dbg !14
|
||||
// CHECK:STDOUT: %.loc40_5 = load ptr, ptr %ptr_i32.var, align 8, !dbg !15
|
||||
// CHECK:STDOUT: %F.call.loc40 = call ptr @_CF.Main.e8193710fd35b608(ptr %.loc40_5, i32 0), !dbg !16
|
||||
// CHECK:STDOUT: %.loc41_5 = load ptr, ptr %ptr_f64.var, align 8, !dbg !17
|
||||
// CHECK:STDOUT: %F.call.loc41 = call ptr @_CF.Main.e8193710fd35b608(ptr %.loc41_5, i32 0), !dbg !18
|
||||
// CHECK:STDOUT: ret void, !dbg !19
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -165,61 +167,61 @@ fn M() {
|
||||
// CHECK:STDOUT: !1 = !{i32 2, !"Debug Info Version", i32 3}
|
||||
// CHECK:STDOUT: !2 = distinct !DICompileUnit(language: DW_LANG_C, file: !3, producer: "carbon", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug)
|
||||
// CHECK:STDOUT: !3 = !DIFile(filename: "call_recursive_mutual.carbon", directory: "")
|
||||
// CHECK:STDOUT: !4 = distinct !DISubprogram(name: "M", linkageName: "_CM.Main", scope: null, file: !3, line: 30, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !4 = distinct !DISubprogram(name: "M", linkageName: "_CM.Main", scope: null, file: !3, line: 32, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !5 = !DISubroutineType(types: !6)
|
||||
// CHECK:STDOUT: !6 = !{}
|
||||
// CHECK:STDOUT: !7 = !DILocation(line: 31, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !8 = !DILocation(line: 32, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !9 = !DILocation(line: 33, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !10 = !DILocation(line: 34, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !11 = !DILocation(line: 36, column: 5, scope: !4)
|
||||
// CHECK:STDOUT: !12 = !DILocation(line: 36, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !13 = !DILocation(line: 37, column: 5, scope: !4)
|
||||
// CHECK:STDOUT: !14 = !DILocation(line: 37, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !15 = !DILocation(line: 38, column: 5, scope: !4)
|
||||
// CHECK:STDOUT: !16 = !DILocation(line: 38, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !17 = !DILocation(line: 39, column: 5, scope: !4)
|
||||
// CHECK:STDOUT: !18 = !DILocation(line: 39, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !19 = !DILocation(line: 30, column: 1, scope: !4)
|
||||
// CHECK:STDOUT: !20 = distinct !DISubprogram(name: "F", linkageName: "_CF.Main.b88d1103f417c6d4", scope: null, file: !3, line: 16, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !21 = !DILocation(line: 17, column: 7, scope: !20)
|
||||
// CHECK:STDOUT: !22 = !DILocation(line: 17, column: 6, scope: !20)
|
||||
// CHECK:STDOUT: !23 = !DILocation(line: 18, column: 5, scope: !20)
|
||||
// CHECK:STDOUT: !24 = !DILocation(line: 20, column: 15, scope: !20)
|
||||
// CHECK:STDOUT: !25 = !DILocation(line: 20, column: 10, scope: !20)
|
||||
// CHECK:STDOUT: !26 = !DILocation(line: 20, column: 3, scope: !20)
|
||||
// CHECK:STDOUT: !27 = distinct !DISubprogram(name: "F", linkageName: "_CF.Main.66be507887ceee78", scope: null, file: !3, line: 16, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !28 = !DILocation(line: 17, column: 7, scope: !27)
|
||||
// CHECK:STDOUT: !29 = !DILocation(line: 17, column: 6, scope: !27)
|
||||
// CHECK:STDOUT: !30 = !DILocation(line: 18, column: 5, scope: !27)
|
||||
// CHECK:STDOUT: !31 = !DILocation(line: 20, column: 15, scope: !27)
|
||||
// CHECK:STDOUT: !32 = !DILocation(line: 20, column: 10, scope: !27)
|
||||
// CHECK:STDOUT: !33 = !DILocation(line: 20, column: 3, scope: !27)
|
||||
// CHECK:STDOUT: !34 = distinct !DISubprogram(name: "F", linkageName: "_CF.Main.e8193710fd35b608", scope: null, file: !3, line: 16, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !35 = !DILocation(line: 17, column: 7, scope: !34)
|
||||
// CHECK:STDOUT: !36 = !DILocation(line: 17, column: 6, scope: !34)
|
||||
// CHECK:STDOUT: !37 = !DILocation(line: 18, column: 5, scope: !34)
|
||||
// CHECK:STDOUT: !38 = !DILocation(line: 20, column: 15, scope: !34)
|
||||
// CHECK:STDOUT: !39 = !DILocation(line: 20, column: 10, scope: !34)
|
||||
// CHECK:STDOUT: !40 = !DILocation(line: 20, column: 3, scope: !34)
|
||||
// CHECK:STDOUT: !41 = distinct !DISubprogram(name: "G", linkageName: "_CG.Main.b88d1103f417c6d4", scope: null, file: !3, line: 23, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !42 = !DILocation(line: 24, column: 7, scope: !41)
|
||||
// CHECK:STDOUT: !43 = !DILocation(line: 24, column: 6, scope: !41)
|
||||
// CHECK:STDOUT: !44 = !DILocation(line: 25, column: 5, scope: !41)
|
||||
// CHECK:STDOUT: !45 = !DILocation(line: 27, column: 15, scope: !41)
|
||||
// CHECK:STDOUT: !46 = !DILocation(line: 27, column: 10, scope: !41)
|
||||
// CHECK:STDOUT: !47 = !DILocation(line: 27, column: 3, scope: !41)
|
||||
// CHECK:STDOUT: !48 = distinct !DISubprogram(name: "G", linkageName: "_CG.Main.66be507887ceee78", scope: null, file: !3, line: 23, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !49 = !DILocation(line: 24, column: 7, scope: !48)
|
||||
// CHECK:STDOUT: !50 = !DILocation(line: 24, column: 6, scope: !48)
|
||||
// CHECK:STDOUT: !51 = !DILocation(line: 25, column: 5, scope: !48)
|
||||
// CHECK:STDOUT: !52 = !DILocation(line: 27, column: 15, scope: !48)
|
||||
// CHECK:STDOUT: !53 = !DILocation(line: 27, column: 10, scope: !48)
|
||||
// CHECK:STDOUT: !54 = !DILocation(line: 27, column: 3, scope: !48)
|
||||
// CHECK:STDOUT: !55 = distinct !DISubprogram(name: "G", linkageName: "_CG.Main.e8193710fd35b608", scope: null, file: !3, line: 23, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !56 = !DILocation(line: 24, column: 7, scope: !55)
|
||||
// CHECK:STDOUT: !57 = !DILocation(line: 24, column: 6, scope: !55)
|
||||
// CHECK:STDOUT: !58 = !DILocation(line: 25, column: 5, scope: !55)
|
||||
// CHECK:STDOUT: !59 = !DILocation(line: 27, column: 15, scope: !55)
|
||||
// CHECK:STDOUT: !60 = !DILocation(line: 27, column: 10, scope: !55)
|
||||
// CHECK:STDOUT: !61 = !DILocation(line: 27, column: 3, scope: !55)
|
||||
// CHECK:STDOUT: !7 = !DILocation(line: 33, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !8 = !DILocation(line: 34, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !9 = !DILocation(line: 35, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !10 = !DILocation(line: 36, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !11 = !DILocation(line: 38, column: 5, scope: !4)
|
||||
// CHECK:STDOUT: !12 = !DILocation(line: 38, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !13 = !DILocation(line: 39, column: 5, scope: !4)
|
||||
// CHECK:STDOUT: !14 = !DILocation(line: 39, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !15 = !DILocation(line: 40, column: 5, scope: !4)
|
||||
// CHECK:STDOUT: !16 = !DILocation(line: 40, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !17 = !DILocation(line: 41, column: 5, scope: !4)
|
||||
// CHECK:STDOUT: !18 = !DILocation(line: 41, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !19 = !DILocation(line: 32, column: 1, scope: !4)
|
||||
// CHECK:STDOUT: !20 = distinct !DISubprogram(name: "F", linkageName: "_CF.Main.b88d1103f417c6d4", scope: null, file: !3, line: 18, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !21 = !DILocation(line: 19, column: 7, scope: !20)
|
||||
// CHECK:STDOUT: !22 = !DILocation(line: 19, column: 6, scope: !20)
|
||||
// CHECK:STDOUT: !23 = !DILocation(line: 20, column: 5, scope: !20)
|
||||
// CHECK:STDOUT: !24 = !DILocation(line: 22, column: 15, scope: !20)
|
||||
// CHECK:STDOUT: !25 = !DILocation(line: 22, column: 10, scope: !20)
|
||||
// CHECK:STDOUT: !26 = !DILocation(line: 22, column: 3, scope: !20)
|
||||
// CHECK:STDOUT: !27 = distinct !DISubprogram(name: "F", linkageName: "_CF.Main.66be507887ceee78", scope: null, file: !3, line: 18, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !28 = !DILocation(line: 19, column: 7, scope: !27)
|
||||
// CHECK:STDOUT: !29 = !DILocation(line: 19, column: 6, scope: !27)
|
||||
// CHECK:STDOUT: !30 = !DILocation(line: 20, column: 5, scope: !27)
|
||||
// CHECK:STDOUT: !31 = !DILocation(line: 22, column: 15, scope: !27)
|
||||
// CHECK:STDOUT: !32 = !DILocation(line: 22, column: 10, scope: !27)
|
||||
// CHECK:STDOUT: !33 = !DILocation(line: 22, column: 3, scope: !27)
|
||||
// CHECK:STDOUT: !34 = distinct !DISubprogram(name: "F", linkageName: "_CF.Main.e8193710fd35b608", scope: null, file: !3, line: 18, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !35 = !DILocation(line: 19, column: 7, scope: !34)
|
||||
// CHECK:STDOUT: !36 = !DILocation(line: 19, column: 6, scope: !34)
|
||||
// CHECK:STDOUT: !37 = !DILocation(line: 20, column: 5, scope: !34)
|
||||
// CHECK:STDOUT: !38 = !DILocation(line: 22, column: 15, scope: !34)
|
||||
// CHECK:STDOUT: !39 = !DILocation(line: 22, column: 10, scope: !34)
|
||||
// CHECK:STDOUT: !40 = !DILocation(line: 22, column: 3, scope: !34)
|
||||
// CHECK:STDOUT: !41 = distinct !DISubprogram(name: "G", linkageName: "_CG.Main.b88d1103f417c6d4", scope: null, file: !3, line: 25, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !42 = !DILocation(line: 26, column: 7, scope: !41)
|
||||
// CHECK:STDOUT: !43 = !DILocation(line: 26, column: 6, scope: !41)
|
||||
// CHECK:STDOUT: !44 = !DILocation(line: 27, column: 5, scope: !41)
|
||||
// CHECK:STDOUT: !45 = !DILocation(line: 29, column: 15, scope: !41)
|
||||
// CHECK:STDOUT: !46 = !DILocation(line: 29, column: 10, scope: !41)
|
||||
// CHECK:STDOUT: !47 = !DILocation(line: 29, column: 3, scope: !41)
|
||||
// CHECK:STDOUT: !48 = distinct !DISubprogram(name: "G", linkageName: "_CG.Main.66be507887ceee78", scope: null, file: !3, line: 25, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !49 = !DILocation(line: 26, column: 7, scope: !48)
|
||||
// CHECK:STDOUT: !50 = !DILocation(line: 26, column: 6, scope: !48)
|
||||
// CHECK:STDOUT: !51 = !DILocation(line: 27, column: 5, scope: !48)
|
||||
// CHECK:STDOUT: !52 = !DILocation(line: 29, column: 15, scope: !48)
|
||||
// CHECK:STDOUT: !53 = !DILocation(line: 29, column: 10, scope: !48)
|
||||
// CHECK:STDOUT: !54 = !DILocation(line: 29, column: 3, scope: !48)
|
||||
// CHECK:STDOUT: !55 = distinct !DISubprogram(name: "G", linkageName: "_CG.Main.e8193710fd35b608", scope: null, file: !3, line: 25, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !56 = !DILocation(line: 26, column: 7, scope: !55)
|
||||
// CHECK:STDOUT: !57 = !DILocation(line: 26, column: 6, scope: !55)
|
||||
// CHECK:STDOUT: !58 = !DILocation(line: 27, column: 5, scope: !55)
|
||||
// CHECK:STDOUT: !59 = !DILocation(line: 29, column: 15, scope: !55)
|
||||
// CHECK:STDOUT: !60 = !DILocation(line: 29, column: 10, scope: !55)
|
||||
// CHECK:STDOUT: !61 = !DILocation(line: 29, column: 3, scope: !55)
|
||||
|
||||
@@ -2,6 +2,8 @@
|
||||
// Exceptions. See /LICENSE for license information.
|
||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
//
|
||||
// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/full.carbon
|
||||
//
|
||||
// AUTOUPDATE
|
||||
// TIP: To test this file alone, run:
|
||||
// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/lower/testdata/function/generic/call_recursive_reorder.carbon
|
||||
@@ -37,12 +39,12 @@ fn M() {
|
||||
// CHECK:STDOUT: call void @llvm.lifetime.start.p0(i64 8, ptr %ptr_i32.var), !dbg !7
|
||||
// CHECK:STDOUT: call void @llvm.lifetime.start.p0(i64 8, ptr %ptr_f64.var), !dbg !8
|
||||
// CHECK:STDOUT: call void @llvm.lifetime.start.p0(i64 8, ptr %ptr_bool.var), !dbg !9
|
||||
// CHECK:STDOUT: %.loc25_5 = load ptr, ptr %ptr_i32.var, align 8, !dbg !10
|
||||
// CHECK:STDOUT: %.loc25_14 = load ptr, ptr %ptr_bool.var, align 8, !dbg !11
|
||||
// CHECK:STDOUT: %F.call.loc25 = call i32 @_CF.Main.2fe87eb83f5a4614(ptr %.loc25_5, ptr %.loc25_14, i32 0), !dbg !12
|
||||
// CHECK:STDOUT: %.loc26_5 = load ptr, ptr %ptr_f64.var, align 8, !dbg !13
|
||||
// CHECK:STDOUT: %.loc26_14 = load ptr, ptr %ptr_bool.var, align 8, !dbg !14
|
||||
// CHECK:STDOUT: %F.call.loc26 = call i32 @_CF.Main.2fe87eb83f5a4614(ptr %.loc26_5, ptr %.loc26_14, i32 0), !dbg !15
|
||||
// CHECK:STDOUT: %.loc27_5 = load ptr, ptr %ptr_i32.var, align 8, !dbg !10
|
||||
// CHECK:STDOUT: %.loc27_14 = load ptr, ptr %ptr_bool.var, align 8, !dbg !11
|
||||
// CHECK:STDOUT: %F.call.loc27 = call i32 @_CF.Main.2fe87eb83f5a4614(ptr %.loc27_5, ptr %.loc27_14, i32 0), !dbg !12
|
||||
// CHECK:STDOUT: %.loc28_5 = load ptr, ptr %ptr_f64.var, align 8, !dbg !13
|
||||
// CHECK:STDOUT: %.loc28_14 = load ptr, ptr %ptr_bool.var, align 8, !dbg !14
|
||||
// CHECK:STDOUT: %F.call.loc28 = call i32 @_CF.Main.2fe87eb83f5a4614(ptr %.loc28_5, ptr %.loc28_14, i32 0), !dbg !15
|
||||
// CHECK:STDOUT: ret void, !dbg !16
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -76,23 +78,23 @@ fn M() {
|
||||
// CHECK:STDOUT: !1 = !{i32 2, !"Debug Info Version", i32 3}
|
||||
// CHECK:STDOUT: !2 = distinct !DICompileUnit(language: DW_LANG_C, file: !3, producer: "carbon", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug)
|
||||
// CHECK:STDOUT: !3 = !DIFile(filename: "call_recursive_reorder.carbon", directory: "")
|
||||
// CHECK:STDOUT: !4 = distinct !DISubprogram(name: "M", linkageName: "_CM.Main", scope: null, file: !3, line: 20, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !4 = distinct !DISubprogram(name: "M", linkageName: "_CM.Main", scope: null, file: !3, line: 22, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !5 = !DISubroutineType(types: !6)
|
||||
// CHECK:STDOUT: !6 = !{}
|
||||
// CHECK:STDOUT: !7 = !DILocation(line: 21, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !8 = !DILocation(line: 22, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !9 = !DILocation(line: 23, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !10 = !DILocation(line: 25, column: 5, scope: !4)
|
||||
// CHECK:STDOUT: !11 = !DILocation(line: 25, column: 14, scope: !4)
|
||||
// CHECK:STDOUT: !12 = !DILocation(line: 25, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !13 = !DILocation(line: 26, column: 5, scope: !4)
|
||||
// CHECK:STDOUT: !14 = !DILocation(line: 26, column: 14, scope: !4)
|
||||
// CHECK:STDOUT: !15 = !DILocation(line: 26, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !16 = !DILocation(line: 20, column: 1, scope: !4)
|
||||
// CHECK:STDOUT: !17 = distinct !DISubprogram(name: "F", linkageName: "_CF.Main.2fe87eb83f5a4614", scope: null, file: !3, line: 13, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !18 = !DILocation(line: 14, column: 7, scope: !17)
|
||||
// CHECK:STDOUT: !19 = !DILocation(line: 14, column: 6, scope: !17)
|
||||
// CHECK:STDOUT: !20 = !DILocation(line: 15, column: 5, scope: !17)
|
||||
// CHECK:STDOUT: !21 = !DILocation(line: 17, column: 18, scope: !17)
|
||||
// CHECK:STDOUT: !22 = !DILocation(line: 17, column: 10, scope: !17)
|
||||
// CHECK:STDOUT: !23 = !DILocation(line: 17, column: 3, scope: !17)
|
||||
// CHECK:STDOUT: !7 = !DILocation(line: 23, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !8 = !DILocation(line: 24, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !9 = !DILocation(line: 25, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !10 = !DILocation(line: 27, column: 5, scope: !4)
|
||||
// CHECK:STDOUT: !11 = !DILocation(line: 27, column: 14, scope: !4)
|
||||
// CHECK:STDOUT: !12 = !DILocation(line: 27, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !13 = !DILocation(line: 28, column: 5, scope: !4)
|
||||
// CHECK:STDOUT: !14 = !DILocation(line: 28, column: 14, scope: !4)
|
||||
// CHECK:STDOUT: !15 = !DILocation(line: 28, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !16 = !DILocation(line: 22, column: 1, scope: !4)
|
||||
// CHECK:STDOUT: !17 = distinct !DISubprogram(name: "F", linkageName: "_CF.Main.2fe87eb83f5a4614", scope: null, file: !3, line: 15, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !18 = !DILocation(line: 16, column: 7, scope: !17)
|
||||
// CHECK:STDOUT: !19 = !DILocation(line: 16, column: 6, scope: !17)
|
||||
// CHECK:STDOUT: !20 = !DILocation(line: 17, column: 5, scope: !17)
|
||||
// CHECK:STDOUT: !21 = !DILocation(line: 19, column: 18, scope: !17)
|
||||
// CHECK:STDOUT: !22 = !DILocation(line: 19, column: 10, scope: !17)
|
||||
// CHECK:STDOUT: !23 = !DILocation(line: 19, column: 3, scope: !17)
|
||||
|
||||
+158
-156
@@ -2,6 +2,8 @@
|
||||
// Exceptions. See /LICENSE for license information.
|
||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
//
|
||||
// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/full.carbon
|
||||
//
|
||||
// AUTOUPDATE
|
||||
// TIP: To test this file alone, run:
|
||||
// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/lower/testdata/function/generic/call_recursive_reorder_more.carbon
|
||||
@@ -73,54 +75,54 @@ fn M() {
|
||||
// CHECK:STDOUT: call void @llvm.lifetime.start.p0(i64 8, ptr %ptr_i32.var), !dbg !13
|
||||
// CHECK:STDOUT: call void @llvm.lifetime.start.p0(i64 8, ptr %ptr_i64.var), !dbg !14
|
||||
// CHECK:STDOUT: call void @llvm.lifetime.start.p0(i64 8, ptr %ptr_bool.var), !dbg !15
|
||||
// CHECK:STDOUT: %.loc36_5 = load i16, ptr %val_i16.var, align 2, !dbg !16
|
||||
// CHECK:STDOUT: %.loc36_14 = load ptr, ptr %ptr_i32.var, align 8, !dbg !17
|
||||
// CHECK:STDOUT: %.loc36_23 = load ptr, ptr %ptr_bool.var, align 8, !dbg !18
|
||||
// CHECK:STDOUT: %F.call.loc36 = call i32 @_CF.Main.077d2bb2ab5eee86(i16 %.loc36_5, ptr %.loc36_14, ptr %.loc36_23, i32 0), !dbg !19
|
||||
// CHECK:STDOUT: %.loc37_5 = load i32, ptr %val_i32.var, align 4, !dbg !20
|
||||
// CHECK:STDOUT: %.loc37_14 = load ptr, ptr %ptr_bool.var, align 8, !dbg !21
|
||||
// CHECK:STDOUT: %.loc37_24 = load ptr, ptr %ptr_i64.var, align 8, !dbg !22
|
||||
// CHECK:STDOUT: %F.call.loc37 = call i32 @_CF.Main.9a89ac9e10448feb(i32 %.loc37_5, ptr %.loc37_14, ptr %.loc37_24, i32 0), !dbg !23
|
||||
// CHECK:STDOUT: %.loc38_5 = load i1, ptr %val_bool.var, align 1, !dbg !24
|
||||
// CHECK:STDOUT: %.loc38_15 = load ptr, ptr %ptr_bool.var, align 8, !dbg !25
|
||||
// CHECK:STDOUT: %.loc38_25 = load ptr, ptr %ptr_i16.var, align 8, !dbg !26
|
||||
// CHECK:STDOUT: %F.call.loc38 = call i32 @_CF.Main.76a945443862cc1f(i1 %.loc38_5, ptr %.loc38_15, ptr %.loc38_25, i32 0), !dbg !27
|
||||
// CHECK:STDOUT: %.loc39_5 = load i64, ptr %val_i64.var, align 4, !dbg !28
|
||||
// CHECK:STDOUT: %.loc39_14 = load i1, ptr %val_bool.var, align 1, !dbg !29
|
||||
// CHECK:STDOUT: %.loc39_24 = load ptr, ptr %ptr_bool.var, align 8, !dbg !30
|
||||
// CHECK:STDOUT: %F.call.loc39 = call i32 @_CF.Main.02da1a7614ea56b6(i64 %.loc39_5, i1 %.loc39_14, ptr %.loc39_24, i32 0), !dbg !31
|
||||
// CHECK:STDOUT: %.loc40_5 = load double, ptr %val_f64.var, align 8, !dbg !32
|
||||
// CHECK:STDOUT: %.loc40_14 = load ptr, ptr %ptr_bool.var, align 8, !dbg !33
|
||||
// CHECK:STDOUT: %.loc40_24 = load ptr, ptr %ptr_bool.var, align 8, !dbg !34
|
||||
// CHECK:STDOUT: %F.call.loc40 = call i32 @_CF.Main.f51a89281f4fb62e(double %.loc40_5, ptr %.loc40_14, ptr %.loc40_24, i32 0), !dbg !35
|
||||
// CHECK:STDOUT: %.loc44_5 = load ptr, ptr %ptr_bool.var, align 8, !dbg !36
|
||||
// CHECK:STDOUT: %.loc44_15 = load ptr, ptr %ptr_i16.var, align 8, !dbg !37
|
||||
// CHECK:STDOUT: %.loc44_24 = load ptr, ptr %ptr_i32.var, align 8, !dbg !38
|
||||
// CHECK:STDOUT: %F.call.loc44 = call i32 @_CF.Main.7776e910959584d9(ptr %.loc44_5, ptr %.loc44_15, ptr %.loc44_24, i32 0), !dbg !39
|
||||
// CHECK:STDOUT: %.loc45_5 = load ptr, ptr %ptr_bool.var, align 8, !dbg !40
|
||||
// CHECK:STDOUT: %.loc45_15 = load ptr, ptr %ptr_i16.var, align 8, !dbg !41
|
||||
// CHECK:STDOUT: %.loc45_24 = load ptr, ptr %ptr_i64.var, align 8, !dbg !42
|
||||
// CHECK:STDOUT: %F.call.loc45 = call i32 @_CF.Main.7776e910959584d9(ptr %.loc45_5, ptr %.loc45_15, ptr %.loc45_24, i32 0), !dbg !43
|
||||
// CHECK:STDOUT: %.loc46_5 = load ptr, ptr %ptr_i32.var, align 8, !dbg !44
|
||||
// CHECK:STDOUT: %.loc46_14 = load ptr, ptr %ptr_bool.var, align 8, !dbg !45
|
||||
// CHECK:STDOUT: %.loc46_24 = load ptr, ptr %ptr_i16.var, align 8, !dbg !46
|
||||
// CHECK:STDOUT: %F.call.loc46 = call i32 @_CF.Main.7776e910959584d9(ptr %.loc46_5, ptr %.loc46_14, ptr %.loc46_24, i32 0), !dbg !47
|
||||
// CHECK:STDOUT: %.loc47_5 = load ptr, ptr %ptr_i32.var, align 8, !dbg !48
|
||||
// CHECK:STDOUT: %.loc47_14 = load ptr, ptr %ptr_bool.var, align 8, !dbg !49
|
||||
// CHECK:STDOUT: %.loc47_24 = load ptr, ptr %ptr_i64.var, align 8, !dbg !50
|
||||
// CHECK:STDOUT: %F.call.loc47 = call i32 @_CF.Main.7776e910959584d9(ptr %.loc47_5, ptr %.loc47_14, ptr %.loc47_24, i32 0), !dbg !51
|
||||
// CHECK:STDOUT: %.loc48_5 = load ptr, ptr %ptr_i16.var, align 8, !dbg !52
|
||||
// CHECK:STDOUT: %.loc48_14 = load ptr, ptr %ptr_i32.var, align 8, !dbg !53
|
||||
// CHECK:STDOUT: %.loc48_23 = load ptr, ptr %ptr_i64.var, align 8, !dbg !54
|
||||
// CHECK:STDOUT: %F.call.loc48 = call i32 @_CF.Main.7776e910959584d9(ptr %.loc48_5, ptr %.loc48_14, ptr %.loc48_23, i32 0), !dbg !55
|
||||
// CHECK:STDOUT: %.loc49_5 = load ptr, ptr %ptr_i64.var, align 8, !dbg !56
|
||||
// CHECK:STDOUT: %.loc49_14 = load ptr, ptr %ptr_bool.var, align 8, !dbg !57
|
||||
// CHECK:STDOUT: %.loc49_24 = load ptr, ptr %ptr_i16.var, align 8, !dbg !58
|
||||
// CHECK:STDOUT: %F.call.loc49 = call i32 @_CF.Main.7776e910959584d9(ptr %.loc49_5, ptr %.loc49_14, ptr %.loc49_24, i32 0), !dbg !59
|
||||
// CHECK:STDOUT: %.loc50_5 = load ptr, ptr %ptr_bool.var, align 8, !dbg !60
|
||||
// CHECK:STDOUT: %.loc50_15 = load ptr, ptr %ptr_bool.var, align 8, !dbg !61
|
||||
// CHECK:STDOUT: %.loc50_25 = load ptr, ptr %ptr_bool.var, align 8, !dbg !62
|
||||
// CHECK:STDOUT: %F.call.loc50 = call i32 @_CF.Main.7776e910959584d9(ptr %.loc50_5, ptr %.loc50_15, ptr %.loc50_25, i32 0), !dbg !63
|
||||
// CHECK:STDOUT: %.loc38_5 = load i16, ptr %val_i16.var, align 2, !dbg !16
|
||||
// CHECK:STDOUT: %.loc38_14 = load ptr, ptr %ptr_i32.var, align 8, !dbg !17
|
||||
// CHECK:STDOUT: %.loc38_23 = load ptr, ptr %ptr_bool.var, align 8, !dbg !18
|
||||
// CHECK:STDOUT: %F.call.loc38 = call i32 @_CF.Main.077d2bb2ab5eee86(i16 %.loc38_5, ptr %.loc38_14, ptr %.loc38_23, i32 0), !dbg !19
|
||||
// CHECK:STDOUT: %.loc39_5 = load i32, ptr %val_i32.var, align 4, !dbg !20
|
||||
// CHECK:STDOUT: %.loc39_14 = load ptr, ptr %ptr_bool.var, align 8, !dbg !21
|
||||
// CHECK:STDOUT: %.loc39_24 = load ptr, ptr %ptr_i64.var, align 8, !dbg !22
|
||||
// CHECK:STDOUT: %F.call.loc39 = call i32 @_CF.Main.9a89ac9e10448feb(i32 %.loc39_5, ptr %.loc39_14, ptr %.loc39_24, i32 0), !dbg !23
|
||||
// CHECK:STDOUT: %.loc40_5 = load i1, ptr %val_bool.var, align 1, !dbg !24
|
||||
// CHECK:STDOUT: %.loc40_15 = load ptr, ptr %ptr_bool.var, align 8, !dbg !25
|
||||
// CHECK:STDOUT: %.loc40_25 = load ptr, ptr %ptr_i16.var, align 8, !dbg !26
|
||||
// CHECK:STDOUT: %F.call.loc40 = call i32 @_CF.Main.76a945443862cc1f(i1 %.loc40_5, ptr %.loc40_15, ptr %.loc40_25, i32 0), !dbg !27
|
||||
// CHECK:STDOUT: %.loc41_5 = load i64, ptr %val_i64.var, align 4, !dbg !28
|
||||
// CHECK:STDOUT: %.loc41_14 = load i1, ptr %val_bool.var, align 1, !dbg !29
|
||||
// CHECK:STDOUT: %.loc41_24 = load ptr, ptr %ptr_bool.var, align 8, !dbg !30
|
||||
// CHECK:STDOUT: %F.call.loc41 = call i32 @_CF.Main.02da1a7614ea56b6(i64 %.loc41_5, i1 %.loc41_14, ptr %.loc41_24, i32 0), !dbg !31
|
||||
// CHECK:STDOUT: %.loc42_5 = load double, ptr %val_f64.var, align 8, !dbg !32
|
||||
// CHECK:STDOUT: %.loc42_14 = load ptr, ptr %ptr_bool.var, align 8, !dbg !33
|
||||
// CHECK:STDOUT: %.loc42_24 = load ptr, ptr %ptr_bool.var, align 8, !dbg !34
|
||||
// CHECK:STDOUT: %F.call.loc42 = call i32 @_CF.Main.f51a89281f4fb62e(double %.loc42_5, ptr %.loc42_14, ptr %.loc42_24, i32 0), !dbg !35
|
||||
// CHECK:STDOUT: %.loc46_5 = load ptr, ptr %ptr_bool.var, align 8, !dbg !36
|
||||
// CHECK:STDOUT: %.loc46_15 = load ptr, ptr %ptr_i16.var, align 8, !dbg !37
|
||||
// CHECK:STDOUT: %.loc46_24 = load ptr, ptr %ptr_i32.var, align 8, !dbg !38
|
||||
// CHECK:STDOUT: %F.call.loc46 = call i32 @_CF.Main.7776e910959584d9(ptr %.loc46_5, ptr %.loc46_15, ptr %.loc46_24, i32 0), !dbg !39
|
||||
// CHECK:STDOUT: %.loc47_5 = load ptr, ptr %ptr_bool.var, align 8, !dbg !40
|
||||
// CHECK:STDOUT: %.loc47_15 = load ptr, ptr %ptr_i16.var, align 8, !dbg !41
|
||||
// CHECK:STDOUT: %.loc47_24 = load ptr, ptr %ptr_i64.var, align 8, !dbg !42
|
||||
// CHECK:STDOUT: %F.call.loc47 = call i32 @_CF.Main.7776e910959584d9(ptr %.loc47_5, ptr %.loc47_15, ptr %.loc47_24, i32 0), !dbg !43
|
||||
// CHECK:STDOUT: %.loc48_5 = load ptr, ptr %ptr_i32.var, align 8, !dbg !44
|
||||
// CHECK:STDOUT: %.loc48_14 = load ptr, ptr %ptr_bool.var, align 8, !dbg !45
|
||||
// CHECK:STDOUT: %.loc48_24 = load ptr, ptr %ptr_i16.var, align 8, !dbg !46
|
||||
// CHECK:STDOUT: %F.call.loc48 = call i32 @_CF.Main.7776e910959584d9(ptr %.loc48_5, ptr %.loc48_14, ptr %.loc48_24, i32 0), !dbg !47
|
||||
// CHECK:STDOUT: %.loc49_5 = load ptr, ptr %ptr_i32.var, align 8, !dbg !48
|
||||
// CHECK:STDOUT: %.loc49_14 = load ptr, ptr %ptr_bool.var, align 8, !dbg !49
|
||||
// CHECK:STDOUT: %.loc49_24 = load ptr, ptr %ptr_i64.var, align 8, !dbg !50
|
||||
// CHECK:STDOUT: %F.call.loc49 = call i32 @_CF.Main.7776e910959584d9(ptr %.loc49_5, ptr %.loc49_14, ptr %.loc49_24, i32 0), !dbg !51
|
||||
// CHECK:STDOUT: %.loc50_5 = load ptr, ptr %ptr_i16.var, align 8, !dbg !52
|
||||
// CHECK:STDOUT: %.loc50_14 = load ptr, ptr %ptr_i32.var, align 8, !dbg !53
|
||||
// CHECK:STDOUT: %.loc50_23 = load ptr, ptr %ptr_i64.var, align 8, !dbg !54
|
||||
// CHECK:STDOUT: %F.call.loc50 = call i32 @_CF.Main.7776e910959584d9(ptr %.loc50_5, ptr %.loc50_14, ptr %.loc50_23, i32 0), !dbg !55
|
||||
// CHECK:STDOUT: %.loc51_5 = load ptr, ptr %ptr_i64.var, align 8, !dbg !56
|
||||
// CHECK:STDOUT: %.loc51_14 = load ptr, ptr %ptr_bool.var, align 8, !dbg !57
|
||||
// CHECK:STDOUT: %.loc51_24 = load ptr, ptr %ptr_i16.var, align 8, !dbg !58
|
||||
// CHECK:STDOUT: %F.call.loc51 = call i32 @_CF.Main.7776e910959584d9(ptr %.loc51_5, ptr %.loc51_14, ptr %.loc51_24, i32 0), !dbg !59
|
||||
// CHECK:STDOUT: %.loc52_5 = load ptr, ptr %ptr_bool.var, align 8, !dbg !60
|
||||
// CHECK:STDOUT: %.loc52_15 = load ptr, ptr %ptr_bool.var, align 8, !dbg !61
|
||||
// CHECK:STDOUT: %.loc52_25 = load ptr, ptr %ptr_bool.var, align 8, !dbg !62
|
||||
// CHECK:STDOUT: %F.call.loc52 = call i32 @_CF.Main.7776e910959584d9(ptr %.loc52_5, ptr %.loc52_15, ptr %.loc52_25, i32 0), !dbg !63
|
||||
// CHECK:STDOUT: ret void, !dbg !64
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -238,113 +240,113 @@ fn M() {
|
||||
// CHECK:STDOUT: !1 = !{i32 2, !"Debug Info Version", i32 3}
|
||||
// CHECK:STDOUT: !2 = distinct !DICompileUnit(language: DW_LANG_C, file: !3, producer: "carbon", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug)
|
||||
// CHECK:STDOUT: !3 = !DIFile(filename: "call_recursive_reorder_more.carbon", directory: "")
|
||||
// CHECK:STDOUT: !4 = distinct !DISubprogram(name: "M", linkageName: "_CM.Main", scope: null, file: !3, line: 20, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !4 = distinct !DISubprogram(name: "M", linkageName: "_CM.Main", scope: null, file: !3, line: 22, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !5 = !DISubroutineType(types: !6)
|
||||
// CHECK:STDOUT: !6 = !{}
|
||||
// CHECK:STDOUT: !7 = !DILocation(line: 21, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !8 = !DILocation(line: 22, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !9 = !DILocation(line: 23, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !10 = !DILocation(line: 24, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !11 = !DILocation(line: 25, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !12 = !DILocation(line: 27, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !13 = !DILocation(line: 28, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !14 = !DILocation(line: 29, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !15 = !DILocation(line: 30, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !16 = !DILocation(line: 36, column: 5, scope: !4)
|
||||
// CHECK:STDOUT: !17 = !DILocation(line: 36, column: 14, scope: !4)
|
||||
// CHECK:STDOUT: !18 = !DILocation(line: 36, column: 23, scope: !4)
|
||||
// CHECK:STDOUT: !19 = !DILocation(line: 36, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !20 = !DILocation(line: 37, column: 5, scope: !4)
|
||||
// CHECK:STDOUT: !21 = !DILocation(line: 37, column: 14, scope: !4)
|
||||
// CHECK:STDOUT: !22 = !DILocation(line: 37, column: 24, scope: !4)
|
||||
// CHECK:STDOUT: !23 = !DILocation(line: 37, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !24 = !DILocation(line: 38, column: 5, scope: !4)
|
||||
// CHECK:STDOUT: !25 = !DILocation(line: 38, column: 15, scope: !4)
|
||||
// CHECK:STDOUT: !26 = !DILocation(line: 38, column: 25, scope: !4)
|
||||
// CHECK:STDOUT: !27 = !DILocation(line: 38, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !28 = !DILocation(line: 39, column: 5, scope: !4)
|
||||
// CHECK:STDOUT: !29 = !DILocation(line: 39, column: 14, scope: !4)
|
||||
// CHECK:STDOUT: !30 = !DILocation(line: 39, column: 24, scope: !4)
|
||||
// CHECK:STDOUT: !31 = !DILocation(line: 39, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !32 = !DILocation(line: 40, column: 5, scope: !4)
|
||||
// CHECK:STDOUT: !33 = !DILocation(line: 40, column: 14, scope: !4)
|
||||
// CHECK:STDOUT: !34 = !DILocation(line: 40, column: 24, scope: !4)
|
||||
// CHECK:STDOUT: !35 = !DILocation(line: 40, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !36 = !DILocation(line: 44, column: 5, scope: !4)
|
||||
// CHECK:STDOUT: !37 = !DILocation(line: 44, column: 15, scope: !4)
|
||||
// CHECK:STDOUT: !38 = !DILocation(line: 44, column: 24, scope: !4)
|
||||
// CHECK:STDOUT: !39 = !DILocation(line: 44, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !40 = !DILocation(line: 45, column: 5, scope: !4)
|
||||
// CHECK:STDOUT: !41 = !DILocation(line: 45, column: 15, scope: !4)
|
||||
// CHECK:STDOUT: !42 = !DILocation(line: 45, column: 24, scope: !4)
|
||||
// CHECK:STDOUT: !43 = !DILocation(line: 45, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !44 = !DILocation(line: 46, column: 5, scope: !4)
|
||||
// CHECK:STDOUT: !45 = !DILocation(line: 46, column: 14, scope: !4)
|
||||
// CHECK:STDOUT: !46 = !DILocation(line: 46, column: 24, scope: !4)
|
||||
// CHECK:STDOUT: !47 = !DILocation(line: 46, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !48 = !DILocation(line: 47, column: 5, scope: !4)
|
||||
// CHECK:STDOUT: !49 = !DILocation(line: 47, column: 14, scope: !4)
|
||||
// CHECK:STDOUT: !50 = !DILocation(line: 47, column: 24, scope: !4)
|
||||
// CHECK:STDOUT: !51 = !DILocation(line: 47, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !52 = !DILocation(line: 48, column: 5, scope: !4)
|
||||
// CHECK:STDOUT: !53 = !DILocation(line: 48, column: 14, scope: !4)
|
||||
// CHECK:STDOUT: !54 = !DILocation(line: 48, column: 23, scope: !4)
|
||||
// CHECK:STDOUT: !55 = !DILocation(line: 48, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !56 = !DILocation(line: 49, column: 5, scope: !4)
|
||||
// CHECK:STDOUT: !57 = !DILocation(line: 49, column: 14, scope: !4)
|
||||
// CHECK:STDOUT: !58 = !DILocation(line: 49, column: 24, scope: !4)
|
||||
// CHECK:STDOUT: !59 = !DILocation(line: 49, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !60 = !DILocation(line: 50, column: 5, scope: !4)
|
||||
// CHECK:STDOUT: !61 = !DILocation(line: 50, column: 15, scope: !4)
|
||||
// CHECK:STDOUT: !62 = !DILocation(line: 50, column: 25, scope: !4)
|
||||
// CHECK:STDOUT: !63 = !DILocation(line: 50, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !64 = !DILocation(line: 20, column: 1, scope: !4)
|
||||
// CHECK:STDOUT: !65 = distinct !DISubprogram(name: "F", linkageName: "_CF.Main.077d2bb2ab5eee86", scope: null, file: !3, line: 13, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !66 = !DILocation(line: 14, column: 7, scope: !65)
|
||||
// CHECK:STDOUT: !67 = !DILocation(line: 14, column: 6, scope: !65)
|
||||
// CHECK:STDOUT: !68 = !DILocation(line: 15, column: 5, scope: !65)
|
||||
// CHECK:STDOUT: !69 = !DILocation(line: 17, column: 21, scope: !65)
|
||||
// CHECK:STDOUT: !70 = !DILocation(line: 17, column: 10, scope: !65)
|
||||
// CHECK:STDOUT: !71 = !DILocation(line: 17, column: 3, scope: !65)
|
||||
// CHECK:STDOUT: !72 = distinct !DISubprogram(name: "F", linkageName: "_CF.Main.9a89ac9e10448feb", scope: null, file: !3, line: 13, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !73 = !DILocation(line: 14, column: 7, scope: !72)
|
||||
// CHECK:STDOUT: !74 = !DILocation(line: 14, column: 6, scope: !72)
|
||||
// CHECK:STDOUT: !75 = !DILocation(line: 15, column: 5, scope: !72)
|
||||
// CHECK:STDOUT: !76 = !DILocation(line: 17, column: 21, scope: !72)
|
||||
// CHECK:STDOUT: !77 = !DILocation(line: 17, column: 10, scope: !72)
|
||||
// CHECK:STDOUT: !78 = !DILocation(line: 17, column: 3, scope: !72)
|
||||
// CHECK:STDOUT: !79 = distinct !DISubprogram(name: "F", linkageName: "_CF.Main.76a945443862cc1f", scope: null, file: !3, line: 13, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !80 = !DILocation(line: 14, column: 7, scope: !79)
|
||||
// CHECK:STDOUT: !81 = !DILocation(line: 14, column: 6, scope: !79)
|
||||
// CHECK:STDOUT: !82 = !DILocation(line: 15, column: 5, scope: !79)
|
||||
// CHECK:STDOUT: !83 = !DILocation(line: 17, column: 21, scope: !79)
|
||||
// CHECK:STDOUT: !84 = !DILocation(line: 17, column: 10, scope: !79)
|
||||
// CHECK:STDOUT: !85 = !DILocation(line: 17, column: 3, scope: !79)
|
||||
// CHECK:STDOUT: !86 = distinct !DISubprogram(name: "F", linkageName: "_CF.Main.02da1a7614ea56b6", scope: null, file: !3, line: 13, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !87 = !DILocation(line: 14, column: 7, scope: !86)
|
||||
// CHECK:STDOUT: !88 = !DILocation(line: 14, column: 6, scope: !86)
|
||||
// CHECK:STDOUT: !89 = !DILocation(line: 15, column: 5, scope: !86)
|
||||
// CHECK:STDOUT: !90 = !DILocation(line: 17, column: 21, scope: !86)
|
||||
// CHECK:STDOUT: !91 = !DILocation(line: 17, column: 10, scope: !86)
|
||||
// CHECK:STDOUT: !92 = !DILocation(line: 17, column: 3, scope: !86)
|
||||
// CHECK:STDOUT: !93 = distinct !DISubprogram(name: "F", linkageName: "_CF.Main.f51a89281f4fb62e", scope: null, file: !3, line: 13, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !94 = !DILocation(line: 14, column: 7, scope: !93)
|
||||
// CHECK:STDOUT: !95 = !DILocation(line: 14, column: 6, scope: !93)
|
||||
// CHECK:STDOUT: !96 = !DILocation(line: 15, column: 5, scope: !93)
|
||||
// CHECK:STDOUT: !97 = !DILocation(line: 17, column: 21, scope: !93)
|
||||
// CHECK:STDOUT: !98 = !DILocation(line: 17, column: 10, scope: !93)
|
||||
// CHECK:STDOUT: !99 = !DILocation(line: 17, column: 3, scope: !93)
|
||||
// CHECK:STDOUT: !100 = distinct !DISubprogram(name: "F", linkageName: "_CF.Main.7776e910959584d9", scope: null, file: !3, line: 13, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !101 = !DILocation(line: 14, column: 7, scope: !100)
|
||||
// CHECK:STDOUT: !102 = !DILocation(line: 14, column: 6, scope: !100)
|
||||
// CHECK:STDOUT: !103 = !DILocation(line: 15, column: 5, scope: !100)
|
||||
// CHECK:STDOUT: !104 = !DILocation(line: 17, column: 21, scope: !100)
|
||||
// CHECK:STDOUT: !105 = !DILocation(line: 17, column: 10, scope: !100)
|
||||
// CHECK:STDOUT: !106 = !DILocation(line: 17, column: 3, scope: !100)
|
||||
// CHECK:STDOUT: !107 = distinct !DISubprogram(name: "F", linkageName: "_CF.Main.bea8bae6e14e4034", scope: null, file: !3, line: 13, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !108 = !DILocation(line: 14, column: 7, scope: !107)
|
||||
// CHECK:STDOUT: !109 = !DILocation(line: 14, column: 6, scope: !107)
|
||||
// CHECK:STDOUT: !110 = !DILocation(line: 15, column: 5, scope: !107)
|
||||
// CHECK:STDOUT: !111 = !DILocation(line: 17, column: 21, scope: !107)
|
||||
// CHECK:STDOUT: !112 = !DILocation(line: 17, column: 10, scope: !107)
|
||||
// CHECK:STDOUT: !113 = !DILocation(line: 17, column: 3, scope: !107)
|
||||
// CHECK:STDOUT: !7 = !DILocation(line: 23, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !8 = !DILocation(line: 24, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !9 = !DILocation(line: 25, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !10 = !DILocation(line: 26, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !11 = !DILocation(line: 27, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !12 = !DILocation(line: 29, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !13 = !DILocation(line: 30, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !14 = !DILocation(line: 31, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !15 = !DILocation(line: 32, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !16 = !DILocation(line: 38, column: 5, scope: !4)
|
||||
// CHECK:STDOUT: !17 = !DILocation(line: 38, column: 14, scope: !4)
|
||||
// CHECK:STDOUT: !18 = !DILocation(line: 38, column: 23, scope: !4)
|
||||
// CHECK:STDOUT: !19 = !DILocation(line: 38, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !20 = !DILocation(line: 39, column: 5, scope: !4)
|
||||
// CHECK:STDOUT: !21 = !DILocation(line: 39, column: 14, scope: !4)
|
||||
// CHECK:STDOUT: !22 = !DILocation(line: 39, column: 24, scope: !4)
|
||||
// CHECK:STDOUT: !23 = !DILocation(line: 39, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !24 = !DILocation(line: 40, column: 5, scope: !4)
|
||||
// CHECK:STDOUT: !25 = !DILocation(line: 40, column: 15, scope: !4)
|
||||
// CHECK:STDOUT: !26 = !DILocation(line: 40, column: 25, scope: !4)
|
||||
// CHECK:STDOUT: !27 = !DILocation(line: 40, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !28 = !DILocation(line: 41, column: 5, scope: !4)
|
||||
// CHECK:STDOUT: !29 = !DILocation(line: 41, column: 14, scope: !4)
|
||||
// CHECK:STDOUT: !30 = !DILocation(line: 41, column: 24, scope: !4)
|
||||
// CHECK:STDOUT: !31 = !DILocation(line: 41, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !32 = !DILocation(line: 42, column: 5, scope: !4)
|
||||
// CHECK:STDOUT: !33 = !DILocation(line: 42, column: 14, scope: !4)
|
||||
// CHECK:STDOUT: !34 = !DILocation(line: 42, column: 24, scope: !4)
|
||||
// CHECK:STDOUT: !35 = !DILocation(line: 42, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !36 = !DILocation(line: 46, column: 5, scope: !4)
|
||||
// CHECK:STDOUT: !37 = !DILocation(line: 46, column: 15, scope: !4)
|
||||
// CHECK:STDOUT: !38 = !DILocation(line: 46, column: 24, scope: !4)
|
||||
// CHECK:STDOUT: !39 = !DILocation(line: 46, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !40 = !DILocation(line: 47, column: 5, scope: !4)
|
||||
// CHECK:STDOUT: !41 = !DILocation(line: 47, column: 15, scope: !4)
|
||||
// CHECK:STDOUT: !42 = !DILocation(line: 47, column: 24, scope: !4)
|
||||
// CHECK:STDOUT: !43 = !DILocation(line: 47, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !44 = !DILocation(line: 48, column: 5, scope: !4)
|
||||
// CHECK:STDOUT: !45 = !DILocation(line: 48, column: 14, scope: !4)
|
||||
// CHECK:STDOUT: !46 = !DILocation(line: 48, column: 24, scope: !4)
|
||||
// CHECK:STDOUT: !47 = !DILocation(line: 48, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !48 = !DILocation(line: 49, column: 5, scope: !4)
|
||||
// CHECK:STDOUT: !49 = !DILocation(line: 49, column: 14, scope: !4)
|
||||
// CHECK:STDOUT: !50 = !DILocation(line: 49, column: 24, scope: !4)
|
||||
// CHECK:STDOUT: !51 = !DILocation(line: 49, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !52 = !DILocation(line: 50, column: 5, scope: !4)
|
||||
// CHECK:STDOUT: !53 = !DILocation(line: 50, column: 14, scope: !4)
|
||||
// CHECK:STDOUT: !54 = !DILocation(line: 50, column: 23, scope: !4)
|
||||
// CHECK:STDOUT: !55 = !DILocation(line: 50, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !56 = !DILocation(line: 51, column: 5, scope: !4)
|
||||
// CHECK:STDOUT: !57 = !DILocation(line: 51, column: 14, scope: !4)
|
||||
// CHECK:STDOUT: !58 = !DILocation(line: 51, column: 24, scope: !4)
|
||||
// CHECK:STDOUT: !59 = !DILocation(line: 51, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !60 = !DILocation(line: 52, column: 5, scope: !4)
|
||||
// CHECK:STDOUT: !61 = !DILocation(line: 52, column: 15, scope: !4)
|
||||
// CHECK:STDOUT: !62 = !DILocation(line: 52, column: 25, scope: !4)
|
||||
// CHECK:STDOUT: !63 = !DILocation(line: 52, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !64 = !DILocation(line: 22, column: 1, scope: !4)
|
||||
// CHECK:STDOUT: !65 = distinct !DISubprogram(name: "F", linkageName: "_CF.Main.077d2bb2ab5eee86", scope: null, file: !3, line: 15, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !66 = !DILocation(line: 16, column: 7, scope: !65)
|
||||
// CHECK:STDOUT: !67 = !DILocation(line: 16, column: 6, scope: !65)
|
||||
// CHECK:STDOUT: !68 = !DILocation(line: 17, column: 5, scope: !65)
|
||||
// CHECK:STDOUT: !69 = !DILocation(line: 19, column: 21, scope: !65)
|
||||
// CHECK:STDOUT: !70 = !DILocation(line: 19, column: 10, scope: !65)
|
||||
// CHECK:STDOUT: !71 = !DILocation(line: 19, column: 3, scope: !65)
|
||||
// CHECK:STDOUT: !72 = distinct !DISubprogram(name: "F", linkageName: "_CF.Main.9a89ac9e10448feb", scope: null, file: !3, line: 15, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !73 = !DILocation(line: 16, column: 7, scope: !72)
|
||||
// CHECK:STDOUT: !74 = !DILocation(line: 16, column: 6, scope: !72)
|
||||
// CHECK:STDOUT: !75 = !DILocation(line: 17, column: 5, scope: !72)
|
||||
// CHECK:STDOUT: !76 = !DILocation(line: 19, column: 21, scope: !72)
|
||||
// CHECK:STDOUT: !77 = !DILocation(line: 19, column: 10, scope: !72)
|
||||
// CHECK:STDOUT: !78 = !DILocation(line: 19, column: 3, scope: !72)
|
||||
// CHECK:STDOUT: !79 = distinct !DISubprogram(name: "F", linkageName: "_CF.Main.76a945443862cc1f", scope: null, file: !3, line: 15, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !80 = !DILocation(line: 16, column: 7, scope: !79)
|
||||
// CHECK:STDOUT: !81 = !DILocation(line: 16, column: 6, scope: !79)
|
||||
// CHECK:STDOUT: !82 = !DILocation(line: 17, column: 5, scope: !79)
|
||||
// CHECK:STDOUT: !83 = !DILocation(line: 19, column: 21, scope: !79)
|
||||
// CHECK:STDOUT: !84 = !DILocation(line: 19, column: 10, scope: !79)
|
||||
// CHECK:STDOUT: !85 = !DILocation(line: 19, column: 3, scope: !79)
|
||||
// CHECK:STDOUT: !86 = distinct !DISubprogram(name: "F", linkageName: "_CF.Main.02da1a7614ea56b6", scope: null, file: !3, line: 15, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !87 = !DILocation(line: 16, column: 7, scope: !86)
|
||||
// CHECK:STDOUT: !88 = !DILocation(line: 16, column: 6, scope: !86)
|
||||
// CHECK:STDOUT: !89 = !DILocation(line: 17, column: 5, scope: !86)
|
||||
// CHECK:STDOUT: !90 = !DILocation(line: 19, column: 21, scope: !86)
|
||||
// CHECK:STDOUT: !91 = !DILocation(line: 19, column: 10, scope: !86)
|
||||
// CHECK:STDOUT: !92 = !DILocation(line: 19, column: 3, scope: !86)
|
||||
// CHECK:STDOUT: !93 = distinct !DISubprogram(name: "F", linkageName: "_CF.Main.f51a89281f4fb62e", scope: null, file: !3, line: 15, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !94 = !DILocation(line: 16, column: 7, scope: !93)
|
||||
// CHECK:STDOUT: !95 = !DILocation(line: 16, column: 6, scope: !93)
|
||||
// CHECK:STDOUT: !96 = !DILocation(line: 17, column: 5, scope: !93)
|
||||
// CHECK:STDOUT: !97 = !DILocation(line: 19, column: 21, scope: !93)
|
||||
// CHECK:STDOUT: !98 = !DILocation(line: 19, column: 10, scope: !93)
|
||||
// CHECK:STDOUT: !99 = !DILocation(line: 19, column: 3, scope: !93)
|
||||
// CHECK:STDOUT: !100 = distinct !DISubprogram(name: "F", linkageName: "_CF.Main.7776e910959584d9", scope: null, file: !3, line: 15, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !101 = !DILocation(line: 16, column: 7, scope: !100)
|
||||
// CHECK:STDOUT: !102 = !DILocation(line: 16, column: 6, scope: !100)
|
||||
// CHECK:STDOUT: !103 = !DILocation(line: 17, column: 5, scope: !100)
|
||||
// CHECK:STDOUT: !104 = !DILocation(line: 19, column: 21, scope: !100)
|
||||
// CHECK:STDOUT: !105 = !DILocation(line: 19, column: 10, scope: !100)
|
||||
// CHECK:STDOUT: !106 = !DILocation(line: 19, column: 3, scope: !100)
|
||||
// CHECK:STDOUT: !107 = distinct !DISubprogram(name: "F", linkageName: "_CF.Main.bea8bae6e14e4034", scope: null, file: !3, line: 15, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !108 = !DILocation(line: 16, column: 7, scope: !107)
|
||||
// CHECK:STDOUT: !109 = !DILocation(line: 16, column: 6, scope: !107)
|
||||
// CHECK:STDOUT: !110 = !DILocation(line: 17, column: 5, scope: !107)
|
||||
// CHECK:STDOUT: !111 = !DILocation(line: 19, column: 21, scope: !107)
|
||||
// CHECK:STDOUT: !112 = !DILocation(line: 19, column: 10, scope: !107)
|
||||
// CHECK:STDOUT: !113 = !DILocation(line: 19, column: 3, scope: !107)
|
||||
|
||||
+147
-145
@@ -2,6 +2,8 @@
|
||||
// Exceptions. See /LICENSE for license information.
|
||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
//
|
||||
// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/full.carbon
|
||||
//
|
||||
// AUTOUPDATE
|
||||
// TIP: To test this file alone, run:
|
||||
// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/lower/testdata/function/generic/call_recursive_sccs_deep.carbon
|
||||
@@ -98,14 +100,14 @@ fn M() {
|
||||
// CHECK:STDOUT: store double 1.000000e+00, ptr %m.var, align 8, !dbg !8
|
||||
// CHECK:STDOUT: call void @llvm.lifetime.start.p0(i64 8, ptr %ptr_i32.var), !dbg !9
|
||||
// CHECK:STDOUT: call void @llvm.lifetime.start.p0(i64 8, ptr %ptr_f64.var), !dbg !10
|
||||
// CHECK:STDOUT: %.loc77_5 = load i32, ptr %n.var, align 4, !dbg !11
|
||||
// CHECK:STDOUT: %A.call.loc77 = call i32 @_CA.Main.b88d1103f417c6d4(i32 %.loc77_5, i32 0), !dbg !12
|
||||
// CHECK:STDOUT: %.loc78_5 = load double, ptr %m.var, align 8, !dbg !13
|
||||
// CHECK:STDOUT: %A.call.loc78 = call double @_CA.Main.66be507887ceee78(double %.loc78_5, i32 0), !dbg !14
|
||||
// CHECK:STDOUT: %.loc79_5 = load ptr, ptr %ptr_i32.var, align 8, !dbg !15
|
||||
// CHECK:STDOUT: %A.call.loc79 = call ptr @_CA.Main.e8193710fd35b608(ptr %.loc79_5, i32 0), !dbg !16
|
||||
// CHECK:STDOUT: %.loc80_5 = load ptr, ptr %ptr_f64.var, align 8, !dbg !17
|
||||
// CHECK:STDOUT: %A.call.loc80 = call ptr @_CA.Main.e8193710fd35b608(ptr %.loc80_5, i32 0), !dbg !18
|
||||
// CHECK:STDOUT: %.loc79_5 = load i32, ptr %n.var, align 4, !dbg !11
|
||||
// CHECK:STDOUT: %A.call.loc79 = call i32 @_CA.Main.b88d1103f417c6d4(i32 %.loc79_5, i32 0), !dbg !12
|
||||
// CHECK:STDOUT: %.loc80_5 = load double, ptr %m.var, align 8, !dbg !13
|
||||
// CHECK:STDOUT: %A.call.loc80 = call double @_CA.Main.66be507887ceee78(double %.loc80_5, i32 0), !dbg !14
|
||||
// CHECK:STDOUT: %.loc81_5 = load ptr, ptr %ptr_i32.var, align 8, !dbg !15
|
||||
// CHECK:STDOUT: %A.call.loc81 = call ptr @_CA.Main.e8193710fd35b608(ptr %.loc81_5, i32 0), !dbg !16
|
||||
// CHECK:STDOUT: %.loc82_5 = load ptr, ptr %ptr_f64.var, align 8, !dbg !17
|
||||
// CHECK:STDOUT: %A.call.loc82 = call ptr @_CA.Main.e8193710fd35b608(ptr %.loc82_5, i32 0), !dbg !18
|
||||
// CHECK:STDOUT: ret void, !dbg !19
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -142,21 +144,21 @@ fn M() {
|
||||
// CHECK:STDOUT: define linkonce_odr i32 @_CD.Main.b88d1103f417c6d4(i32 %x, i32 %count) !dbg !35 {
|
||||
// CHECK:STDOUT: entry:
|
||||
// CHECK:STDOUT: %int.greater = icmp sgt i32 %count, 4, !dbg !36
|
||||
// CHECK:STDOUT: br i1 %int.greater, label %if.then.loc46, label %if.else.loc46, !dbg !37
|
||||
// CHECK:STDOUT: br i1 %int.greater, label %if.then.loc48, label %if.else.loc48, !dbg !37
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: if.then.loc46: ; preds = %entry
|
||||
// CHECK:STDOUT: if.then.loc48: ; preds = %entry
|
||||
// CHECK:STDOUT: ret i32 %x, !dbg !38
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: if.else.loc46: ; preds = %entry
|
||||
// CHECK:STDOUT: if.else.loc48: ; preds = %entry
|
||||
// CHECK:STDOUT: %int.smod = srem i32 %count, 2, !dbg !39
|
||||
// CHECK:STDOUT: %int.eq = icmp eq i32 %int.smod, 0, !dbg !39
|
||||
// CHECK:STDOUT: br i1 %int.eq, label %if.then.loc49, label %if.else.loc49, !dbg !40
|
||||
// CHECK:STDOUT: br i1 %int.eq, label %if.then.loc51, label %if.else.loc51, !dbg !40
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: if.then.loc49: ; preds = %if.else.loc46
|
||||
// CHECK:STDOUT: if.then.loc51: ; preds = %if.else.loc48
|
||||
// CHECK:STDOUT: %E.call = call i32 @_CE.Main.b88d1103f417c6d4(i32 %x, i32 %count), !dbg !41
|
||||
// CHECK:STDOUT: ret i32 %E.call, !dbg !42
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: if.else.loc49: ; preds = %if.else.loc46
|
||||
// CHECK:STDOUT: if.else.loc51: ; preds = %if.else.loc48
|
||||
// CHECK:STDOUT: %F.call = call i32 @_CF.Main.b88d1103f417c6d4(i32 %x, i32 %count), !dbg !43
|
||||
// CHECK:STDOUT: ret i32 %F.call, !dbg !44
|
||||
// CHECK:STDOUT: }
|
||||
@@ -170,21 +172,21 @@ fn M() {
|
||||
// CHECK:STDOUT: define linkonce_odr double @_CD.Main.66be507887ceee78(double %x, i32 %count) !dbg !48 {
|
||||
// CHECK:STDOUT: entry:
|
||||
// CHECK:STDOUT: %int.greater = icmp sgt i32 %count, 4, !dbg !49
|
||||
// CHECK:STDOUT: br i1 %int.greater, label %if.then.loc46, label %if.else.loc46, !dbg !50
|
||||
// CHECK:STDOUT: br i1 %int.greater, label %if.then.loc48, label %if.else.loc48, !dbg !50
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: if.then.loc46: ; preds = %entry
|
||||
// CHECK:STDOUT: if.then.loc48: ; preds = %entry
|
||||
// CHECK:STDOUT: ret double %x, !dbg !51
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: if.else.loc46: ; preds = %entry
|
||||
// CHECK:STDOUT: if.else.loc48: ; preds = %entry
|
||||
// CHECK:STDOUT: %int.smod = srem i32 %count, 2, !dbg !52
|
||||
// CHECK:STDOUT: %int.eq = icmp eq i32 %int.smod, 0, !dbg !52
|
||||
// CHECK:STDOUT: br i1 %int.eq, label %if.then.loc49, label %if.else.loc49, !dbg !53
|
||||
// CHECK:STDOUT: br i1 %int.eq, label %if.then.loc51, label %if.else.loc51, !dbg !53
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: if.then.loc49: ; preds = %if.else.loc46
|
||||
// CHECK:STDOUT: if.then.loc51: ; preds = %if.else.loc48
|
||||
// CHECK:STDOUT: %E.call = call double @_CE.Main.66be507887ceee78(double %x, i32 %count), !dbg !54
|
||||
// CHECK:STDOUT: ret double %E.call, !dbg !55
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: if.else.loc49: ; preds = %if.else.loc46
|
||||
// CHECK:STDOUT: if.else.loc51: ; preds = %if.else.loc48
|
||||
// CHECK:STDOUT: %F.call = call double @_CF.Main.66be507887ceee78(double %x, i32 %count), !dbg !56
|
||||
// CHECK:STDOUT: ret double %F.call, !dbg !57
|
||||
// CHECK:STDOUT: }
|
||||
@@ -198,21 +200,21 @@ fn M() {
|
||||
// CHECK:STDOUT: define linkonce_odr ptr @_CD.Main.e8193710fd35b608(ptr %x, i32 %count) !dbg !61 {
|
||||
// CHECK:STDOUT: entry:
|
||||
// CHECK:STDOUT: %int.greater = icmp sgt i32 %count, 4, !dbg !62
|
||||
// CHECK:STDOUT: br i1 %int.greater, label %if.then.loc46, label %if.else.loc46, !dbg !63
|
||||
// CHECK:STDOUT: br i1 %int.greater, label %if.then.loc48, label %if.else.loc48, !dbg !63
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: if.then.loc46: ; preds = %entry
|
||||
// CHECK:STDOUT: if.then.loc48: ; preds = %entry
|
||||
// CHECK:STDOUT: ret ptr %x, !dbg !64
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: if.else.loc46: ; preds = %entry
|
||||
// CHECK:STDOUT: if.else.loc48: ; preds = %entry
|
||||
// CHECK:STDOUT: %int.smod = srem i32 %count, 2, !dbg !65
|
||||
// CHECK:STDOUT: %int.eq = icmp eq i32 %int.smod, 0, !dbg !65
|
||||
// CHECK:STDOUT: br i1 %int.eq, label %if.then.loc49, label %if.else.loc49, !dbg !66
|
||||
// CHECK:STDOUT: br i1 %int.eq, label %if.then.loc51, label %if.else.loc51, !dbg !66
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: if.then.loc49: ; preds = %if.else.loc46
|
||||
// CHECK:STDOUT: if.then.loc51: ; preds = %if.else.loc48
|
||||
// CHECK:STDOUT: %E.call = call ptr @_CE.Main.e8193710fd35b608(ptr %x, i32 %count), !dbg !67
|
||||
// CHECK:STDOUT: ret ptr %E.call, !dbg !68
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: if.else.loc49: ; preds = %if.else.loc46
|
||||
// CHECK:STDOUT: if.else.loc51: ; preds = %if.else.loc48
|
||||
// CHECK:STDOUT: %F.call = call ptr @_CF.Main.e8193710fd35b608(ptr %x, i32 %count), !dbg !69
|
||||
// CHECK:STDOUT: ret ptr %F.call, !dbg !70
|
||||
// CHECK:STDOUT: }
|
||||
@@ -338,124 +340,124 @@ fn M() {
|
||||
// CHECK:STDOUT: !1 = !{i32 2, !"Debug Info Version", i32 3}
|
||||
// CHECK:STDOUT: !2 = distinct !DICompileUnit(language: DW_LANG_C, file: !3, producer: "carbon", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug)
|
||||
// CHECK:STDOUT: !3 = !DIFile(filename: "call_recursive_sccs_deep.carbon", directory: "")
|
||||
// CHECK:STDOUT: !4 = distinct !DISubprogram(name: "M", linkageName: "_CM.Main", scope: null, file: !3, line: 71, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !4 = distinct !DISubprogram(name: "M", linkageName: "_CM.Main", scope: null, file: !3, line: 73, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !5 = !DISubroutineType(types: !6)
|
||||
// CHECK:STDOUT: !6 = !{}
|
||||
// CHECK:STDOUT: !7 = !DILocation(line: 72, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !8 = !DILocation(line: 73, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !9 = !DILocation(line: 74, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !10 = !DILocation(line: 75, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !11 = !DILocation(line: 77, column: 5, scope: !4)
|
||||
// CHECK:STDOUT: !12 = !DILocation(line: 77, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !13 = !DILocation(line: 78, column: 5, scope: !4)
|
||||
// CHECK:STDOUT: !14 = !DILocation(line: 78, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !15 = !DILocation(line: 79, column: 5, scope: !4)
|
||||
// CHECK:STDOUT: !16 = !DILocation(line: 79, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !17 = !DILocation(line: 80, column: 5, scope: !4)
|
||||
// CHECK:STDOUT: !18 = !DILocation(line: 80, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !19 = !DILocation(line: 71, column: 1, scope: !4)
|
||||
// CHECK:STDOUT: !20 = distinct !DISubprogram(name: "A", linkageName: "_CA.Main.b88d1103f417c6d4", scope: null, file: !3, line: 29, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !21 = !DILocation(line: 30, column: 3, scope: !20)
|
||||
// CHECK:STDOUT: !22 = !DILocation(line: 31, column: 10, scope: !20)
|
||||
// CHECK:STDOUT: !23 = !DILocation(line: 31, column: 3, scope: !20)
|
||||
// CHECK:STDOUT: !24 = distinct !DISubprogram(name: "A", linkageName: "_CA.Main.66be507887ceee78", scope: null, file: !3, line: 29, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !25 = !DILocation(line: 30, column: 3, scope: !24)
|
||||
// CHECK:STDOUT: !26 = !DILocation(line: 31, column: 10, scope: !24)
|
||||
// CHECK:STDOUT: !27 = !DILocation(line: 31, column: 3, scope: !24)
|
||||
// CHECK:STDOUT: !28 = distinct !DISubprogram(name: "A", linkageName: "_CA.Main.e8193710fd35b608", scope: null, file: !3, line: 29, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !29 = !DILocation(line: 30, column: 3, scope: !28)
|
||||
// CHECK:STDOUT: !30 = !DILocation(line: 31, column: 10, scope: !28)
|
||||
// CHECK:STDOUT: !31 = !DILocation(line: 31, column: 3, scope: !28)
|
||||
// CHECK:STDOUT: !32 = distinct !DISubprogram(name: "B", linkageName: "_CB.Main.b88d1103f417c6d4", scope: null, file: !3, line: 34, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !33 = !DILocation(line: 35, column: 3, scope: !32)
|
||||
// CHECK:STDOUT: !34 = !DILocation(line: 34, column: 1, scope: !32)
|
||||
// CHECK:STDOUT: !35 = distinct !DISubprogram(name: "D", linkageName: "_CD.Main.b88d1103f417c6d4", scope: null, file: !3, line: 45, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !36 = !DILocation(line: 46, column: 7, scope: !35)
|
||||
// CHECK:STDOUT: !37 = !DILocation(line: 46, column: 6, scope: !35)
|
||||
// CHECK:STDOUT: !38 = !DILocation(line: 47, column: 5, scope: !35)
|
||||
// CHECK:STDOUT: !39 = !DILocation(line: 49, column: 7, scope: !35)
|
||||
// CHECK:STDOUT: !40 = !DILocation(line: 49, column: 6, scope: !35)
|
||||
// CHECK:STDOUT: !41 = !DILocation(line: 50, column: 12, scope: !35)
|
||||
// CHECK:STDOUT: !42 = !DILocation(line: 50, column: 5, scope: !35)
|
||||
// CHECK:STDOUT: !43 = !DILocation(line: 52, column: 12, scope: !35)
|
||||
// CHECK:STDOUT: !44 = !DILocation(line: 52, column: 5, scope: !35)
|
||||
// CHECK:STDOUT: !45 = distinct !DISubprogram(name: "B", linkageName: "_CB.Main.66be507887ceee78", scope: null, file: !3, line: 34, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !46 = !DILocation(line: 35, column: 3, scope: !45)
|
||||
// CHECK:STDOUT: !47 = !DILocation(line: 34, column: 1, scope: !45)
|
||||
// CHECK:STDOUT: !48 = distinct !DISubprogram(name: "D", linkageName: "_CD.Main.66be507887ceee78", scope: null, file: !3, line: 45, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !49 = !DILocation(line: 46, column: 7, scope: !48)
|
||||
// CHECK:STDOUT: !50 = !DILocation(line: 46, column: 6, scope: !48)
|
||||
// CHECK:STDOUT: !51 = !DILocation(line: 47, column: 5, scope: !48)
|
||||
// CHECK:STDOUT: !52 = !DILocation(line: 49, column: 7, scope: !48)
|
||||
// CHECK:STDOUT: !53 = !DILocation(line: 49, column: 6, scope: !48)
|
||||
// CHECK:STDOUT: !54 = !DILocation(line: 50, column: 12, scope: !48)
|
||||
// CHECK:STDOUT: !55 = !DILocation(line: 50, column: 5, scope: !48)
|
||||
// CHECK:STDOUT: !56 = !DILocation(line: 52, column: 12, scope: !48)
|
||||
// CHECK:STDOUT: !57 = !DILocation(line: 52, column: 5, scope: !48)
|
||||
// CHECK:STDOUT: !58 = distinct !DISubprogram(name: "B", linkageName: "_CB.Main.e8193710fd35b608", scope: null, file: !3, line: 34, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !59 = !DILocation(line: 35, column: 3, scope: !58)
|
||||
// CHECK:STDOUT: !60 = !DILocation(line: 34, column: 1, scope: !58)
|
||||
// CHECK:STDOUT: !61 = distinct !DISubprogram(name: "D", linkageName: "_CD.Main.e8193710fd35b608", scope: null, file: !3, line: 45, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !62 = !DILocation(line: 46, column: 7, scope: !61)
|
||||
// CHECK:STDOUT: !63 = !DILocation(line: 46, column: 6, scope: !61)
|
||||
// CHECK:STDOUT: !64 = !DILocation(line: 47, column: 5, scope: !61)
|
||||
// CHECK:STDOUT: !65 = !DILocation(line: 49, column: 7, scope: !61)
|
||||
// CHECK:STDOUT: !66 = !DILocation(line: 49, column: 6, scope: !61)
|
||||
// CHECK:STDOUT: !67 = !DILocation(line: 50, column: 12, scope: !61)
|
||||
// CHECK:STDOUT: !68 = !DILocation(line: 50, column: 5, scope: !61)
|
||||
// CHECK:STDOUT: !69 = !DILocation(line: 52, column: 12, scope: !61)
|
||||
// CHECK:STDOUT: !70 = !DILocation(line: 52, column: 5, scope: !61)
|
||||
// CHECK:STDOUT: !71 = distinct !DISubprogram(name: "C", linkageName: "_CC.Main.b88d1103f417c6d4", scope: null, file: !3, line: 38, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !72 = !DILocation(line: 39, column: 7, scope: !71)
|
||||
// CHECK:STDOUT: !73 = !DILocation(line: 39, column: 6, scope: !71)
|
||||
// CHECK:STDOUT: !74 = !DILocation(line: 40, column: 5, scope: !71)
|
||||
// CHECK:STDOUT: !75 = !DILocation(line: 41, column: 10, scope: !71)
|
||||
// CHECK:STDOUT: !76 = !DILocation(line: 41, column: 5, scope: !71)
|
||||
// CHECK:STDOUT: !77 = !DILocation(line: 39, column: 3, scope: !71)
|
||||
// CHECK:STDOUT: !78 = !DILocation(line: 38, column: 1, scope: !71)
|
||||
// CHECK:STDOUT: !79 = distinct !DISubprogram(name: "E", linkageName: "_CE.Main.b88d1103f417c6d4", scope: null, file: !3, line: 58, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !80 = !DILocation(line: 59, column: 10, scope: !79)
|
||||
// CHECK:STDOUT: !81 = !DILocation(line: 59, column: 3, scope: !79)
|
||||
// CHECK:STDOUT: !82 = distinct !DISubprogram(name: "F", linkageName: "_CF.Main.b88d1103f417c6d4", scope: null, file: !3, line: 62, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !83 = !DILocation(line: 63, column: 10, scope: !82)
|
||||
// CHECK:STDOUT: !84 = !DILocation(line: 63, column: 3, scope: !82)
|
||||
// CHECK:STDOUT: !85 = distinct !DISubprogram(name: "C", linkageName: "_CC.Main.66be507887ceee78", scope: null, file: !3, line: 38, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !86 = !DILocation(line: 39, column: 7, scope: !85)
|
||||
// CHECK:STDOUT: !87 = !DILocation(line: 39, column: 6, scope: !85)
|
||||
// CHECK:STDOUT: !88 = !DILocation(line: 40, column: 5, scope: !85)
|
||||
// CHECK:STDOUT: !89 = !DILocation(line: 41, column: 10, scope: !85)
|
||||
// CHECK:STDOUT: !90 = !DILocation(line: 41, column: 5, scope: !85)
|
||||
// CHECK:STDOUT: !91 = !DILocation(line: 39, column: 3, scope: !85)
|
||||
// CHECK:STDOUT: !92 = !DILocation(line: 38, column: 1, scope: !85)
|
||||
// CHECK:STDOUT: !93 = distinct !DISubprogram(name: "E", linkageName: "_CE.Main.66be507887ceee78", scope: null, file: !3, line: 58, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !94 = !DILocation(line: 59, column: 10, scope: !93)
|
||||
// CHECK:STDOUT: !95 = !DILocation(line: 59, column: 3, scope: !93)
|
||||
// CHECK:STDOUT: !96 = distinct !DISubprogram(name: "F", linkageName: "_CF.Main.66be507887ceee78", scope: null, file: !3, line: 62, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !97 = !DILocation(line: 63, column: 10, scope: !96)
|
||||
// CHECK:STDOUT: !98 = !DILocation(line: 63, column: 3, scope: !96)
|
||||
// CHECK:STDOUT: !99 = distinct !DISubprogram(name: "C", linkageName: "_CC.Main.e8193710fd35b608", scope: null, file: !3, line: 38, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !100 = !DILocation(line: 39, column: 7, scope: !99)
|
||||
// CHECK:STDOUT: !101 = !DILocation(line: 39, column: 6, scope: !99)
|
||||
// CHECK:STDOUT: !102 = !DILocation(line: 40, column: 5, scope: !99)
|
||||
// CHECK:STDOUT: !103 = !DILocation(line: 41, column: 10, scope: !99)
|
||||
// CHECK:STDOUT: !104 = !DILocation(line: 41, column: 5, scope: !99)
|
||||
// CHECK:STDOUT: !105 = !DILocation(line: 39, column: 3, scope: !99)
|
||||
// CHECK:STDOUT: !106 = !DILocation(line: 38, column: 1, scope: !99)
|
||||
// CHECK:STDOUT: !107 = distinct !DISubprogram(name: "E", linkageName: "_CE.Main.e8193710fd35b608", scope: null, file: !3, line: 58, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !108 = !DILocation(line: 59, column: 10, scope: !107)
|
||||
// CHECK:STDOUT: !109 = !DILocation(line: 59, column: 3, scope: !107)
|
||||
// CHECK:STDOUT: !110 = distinct !DISubprogram(name: "F", linkageName: "_CF.Main.e8193710fd35b608", scope: null, file: !3, line: 62, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !111 = !DILocation(line: 63, column: 10, scope: !110)
|
||||
// CHECK:STDOUT: !112 = !DILocation(line: 63, column: 3, scope: !110)
|
||||
// CHECK:STDOUT: !113 = distinct !DISubprogram(name: "G", linkageName: "_CG.Main.b88d1103f417c6d4", scope: null, file: !3, line: 66, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !114 = !DILocation(line: 67, column: 15, scope: !113)
|
||||
// CHECK:STDOUT: !115 = !DILocation(line: 67, column: 10, scope: !113)
|
||||
// CHECK:STDOUT: !116 = !DILocation(line: 67, column: 3, scope: !113)
|
||||
// CHECK:STDOUT: !117 = distinct !DISubprogram(name: "G", linkageName: "_CG.Main.66be507887ceee78", scope: null, file: !3, line: 66, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !118 = !DILocation(line: 67, column: 15, scope: !117)
|
||||
// CHECK:STDOUT: !119 = !DILocation(line: 67, column: 10, scope: !117)
|
||||
// CHECK:STDOUT: !120 = !DILocation(line: 67, column: 3, scope: !117)
|
||||
// CHECK:STDOUT: !121 = distinct !DISubprogram(name: "G", linkageName: "_CG.Main.e8193710fd35b608", scope: null, file: !3, line: 66, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !122 = !DILocation(line: 67, column: 15, scope: !121)
|
||||
// CHECK:STDOUT: !123 = !DILocation(line: 67, column: 10, scope: !121)
|
||||
// CHECK:STDOUT: !124 = !DILocation(line: 67, column: 3, scope: !121)
|
||||
// CHECK:STDOUT: !7 = !DILocation(line: 74, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !8 = !DILocation(line: 75, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !9 = !DILocation(line: 76, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !10 = !DILocation(line: 77, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !11 = !DILocation(line: 79, column: 5, scope: !4)
|
||||
// CHECK:STDOUT: !12 = !DILocation(line: 79, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !13 = !DILocation(line: 80, column: 5, scope: !4)
|
||||
// CHECK:STDOUT: !14 = !DILocation(line: 80, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !15 = !DILocation(line: 81, column: 5, scope: !4)
|
||||
// CHECK:STDOUT: !16 = !DILocation(line: 81, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !17 = !DILocation(line: 82, column: 5, scope: !4)
|
||||
// CHECK:STDOUT: !18 = !DILocation(line: 82, column: 3, scope: !4)
|
||||
// CHECK:STDOUT: !19 = !DILocation(line: 73, column: 1, scope: !4)
|
||||
// CHECK:STDOUT: !20 = distinct !DISubprogram(name: "A", linkageName: "_CA.Main.b88d1103f417c6d4", scope: null, file: !3, line: 31, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !21 = !DILocation(line: 32, column: 3, scope: !20)
|
||||
// CHECK:STDOUT: !22 = !DILocation(line: 33, column: 10, scope: !20)
|
||||
// CHECK:STDOUT: !23 = !DILocation(line: 33, column: 3, scope: !20)
|
||||
// CHECK:STDOUT: !24 = distinct !DISubprogram(name: "A", linkageName: "_CA.Main.66be507887ceee78", scope: null, file: !3, line: 31, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !25 = !DILocation(line: 32, column: 3, scope: !24)
|
||||
// CHECK:STDOUT: !26 = !DILocation(line: 33, column: 10, scope: !24)
|
||||
// CHECK:STDOUT: !27 = !DILocation(line: 33, column: 3, scope: !24)
|
||||
// CHECK:STDOUT: !28 = distinct !DISubprogram(name: "A", linkageName: "_CA.Main.e8193710fd35b608", scope: null, file: !3, line: 31, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !29 = !DILocation(line: 32, column: 3, scope: !28)
|
||||
// CHECK:STDOUT: !30 = !DILocation(line: 33, column: 10, scope: !28)
|
||||
// CHECK:STDOUT: !31 = !DILocation(line: 33, column: 3, scope: !28)
|
||||
// CHECK:STDOUT: !32 = distinct !DISubprogram(name: "B", linkageName: "_CB.Main.b88d1103f417c6d4", scope: null, file: !3, line: 36, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !33 = !DILocation(line: 37, column: 3, scope: !32)
|
||||
// CHECK:STDOUT: !34 = !DILocation(line: 36, column: 1, scope: !32)
|
||||
// CHECK:STDOUT: !35 = distinct !DISubprogram(name: "D", linkageName: "_CD.Main.b88d1103f417c6d4", scope: null, file: !3, line: 47, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !36 = !DILocation(line: 48, column: 7, scope: !35)
|
||||
// CHECK:STDOUT: !37 = !DILocation(line: 48, column: 6, scope: !35)
|
||||
// CHECK:STDOUT: !38 = !DILocation(line: 49, column: 5, scope: !35)
|
||||
// CHECK:STDOUT: !39 = !DILocation(line: 51, column: 7, scope: !35)
|
||||
// CHECK:STDOUT: !40 = !DILocation(line: 51, column: 6, scope: !35)
|
||||
// CHECK:STDOUT: !41 = !DILocation(line: 52, column: 12, scope: !35)
|
||||
// CHECK:STDOUT: !42 = !DILocation(line: 52, column: 5, scope: !35)
|
||||
// CHECK:STDOUT: !43 = !DILocation(line: 54, column: 12, scope: !35)
|
||||
// CHECK:STDOUT: !44 = !DILocation(line: 54, column: 5, scope: !35)
|
||||
// CHECK:STDOUT: !45 = distinct !DISubprogram(name: "B", linkageName: "_CB.Main.66be507887ceee78", scope: null, file: !3, line: 36, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !46 = !DILocation(line: 37, column: 3, scope: !45)
|
||||
// CHECK:STDOUT: !47 = !DILocation(line: 36, column: 1, scope: !45)
|
||||
// CHECK:STDOUT: !48 = distinct !DISubprogram(name: "D", linkageName: "_CD.Main.66be507887ceee78", scope: null, file: !3, line: 47, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !49 = !DILocation(line: 48, column: 7, scope: !48)
|
||||
// CHECK:STDOUT: !50 = !DILocation(line: 48, column: 6, scope: !48)
|
||||
// CHECK:STDOUT: !51 = !DILocation(line: 49, column: 5, scope: !48)
|
||||
// CHECK:STDOUT: !52 = !DILocation(line: 51, column: 7, scope: !48)
|
||||
// CHECK:STDOUT: !53 = !DILocation(line: 51, column: 6, scope: !48)
|
||||
// CHECK:STDOUT: !54 = !DILocation(line: 52, column: 12, scope: !48)
|
||||
// CHECK:STDOUT: !55 = !DILocation(line: 52, column: 5, scope: !48)
|
||||
// CHECK:STDOUT: !56 = !DILocation(line: 54, column: 12, scope: !48)
|
||||
// CHECK:STDOUT: !57 = !DILocation(line: 54, column: 5, scope: !48)
|
||||
// CHECK:STDOUT: !58 = distinct !DISubprogram(name: "B", linkageName: "_CB.Main.e8193710fd35b608", scope: null, file: !3, line: 36, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !59 = !DILocation(line: 37, column: 3, scope: !58)
|
||||
// CHECK:STDOUT: !60 = !DILocation(line: 36, column: 1, scope: !58)
|
||||
// CHECK:STDOUT: !61 = distinct !DISubprogram(name: "D", linkageName: "_CD.Main.e8193710fd35b608", scope: null, file: !3, line: 47, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !62 = !DILocation(line: 48, column: 7, scope: !61)
|
||||
// CHECK:STDOUT: !63 = !DILocation(line: 48, column: 6, scope: !61)
|
||||
// CHECK:STDOUT: !64 = !DILocation(line: 49, column: 5, scope: !61)
|
||||
// CHECK:STDOUT: !65 = !DILocation(line: 51, column: 7, scope: !61)
|
||||
// CHECK:STDOUT: !66 = !DILocation(line: 51, column: 6, scope: !61)
|
||||
// CHECK:STDOUT: !67 = !DILocation(line: 52, column: 12, scope: !61)
|
||||
// CHECK:STDOUT: !68 = !DILocation(line: 52, column: 5, scope: !61)
|
||||
// CHECK:STDOUT: !69 = !DILocation(line: 54, column: 12, scope: !61)
|
||||
// CHECK:STDOUT: !70 = !DILocation(line: 54, column: 5, scope: !61)
|
||||
// CHECK:STDOUT: !71 = distinct !DISubprogram(name: "C", linkageName: "_CC.Main.b88d1103f417c6d4", scope: null, file: !3, line: 40, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !72 = !DILocation(line: 41, column: 7, scope: !71)
|
||||
// CHECK:STDOUT: !73 = !DILocation(line: 41, column: 6, scope: !71)
|
||||
// CHECK:STDOUT: !74 = !DILocation(line: 42, column: 5, scope: !71)
|
||||
// CHECK:STDOUT: !75 = !DILocation(line: 43, column: 10, scope: !71)
|
||||
// CHECK:STDOUT: !76 = !DILocation(line: 43, column: 5, scope: !71)
|
||||
// CHECK:STDOUT: !77 = !DILocation(line: 41, column: 3, scope: !71)
|
||||
// CHECK:STDOUT: !78 = !DILocation(line: 40, column: 1, scope: !71)
|
||||
// CHECK:STDOUT: !79 = distinct !DISubprogram(name: "E", linkageName: "_CE.Main.b88d1103f417c6d4", scope: null, file: !3, line: 60, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !80 = !DILocation(line: 61, column: 10, scope: !79)
|
||||
// CHECK:STDOUT: !81 = !DILocation(line: 61, column: 3, scope: !79)
|
||||
// CHECK:STDOUT: !82 = distinct !DISubprogram(name: "F", linkageName: "_CF.Main.b88d1103f417c6d4", scope: null, file: !3, line: 64, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !83 = !DILocation(line: 65, column: 10, scope: !82)
|
||||
// CHECK:STDOUT: !84 = !DILocation(line: 65, column: 3, scope: !82)
|
||||
// CHECK:STDOUT: !85 = distinct !DISubprogram(name: "C", linkageName: "_CC.Main.66be507887ceee78", scope: null, file: !3, line: 40, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !86 = !DILocation(line: 41, column: 7, scope: !85)
|
||||
// CHECK:STDOUT: !87 = !DILocation(line: 41, column: 6, scope: !85)
|
||||
// CHECK:STDOUT: !88 = !DILocation(line: 42, column: 5, scope: !85)
|
||||
// CHECK:STDOUT: !89 = !DILocation(line: 43, column: 10, scope: !85)
|
||||
// CHECK:STDOUT: !90 = !DILocation(line: 43, column: 5, scope: !85)
|
||||
// CHECK:STDOUT: !91 = !DILocation(line: 41, column: 3, scope: !85)
|
||||
// CHECK:STDOUT: !92 = !DILocation(line: 40, column: 1, scope: !85)
|
||||
// CHECK:STDOUT: !93 = distinct !DISubprogram(name: "E", linkageName: "_CE.Main.66be507887ceee78", scope: null, file: !3, line: 60, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !94 = !DILocation(line: 61, column: 10, scope: !93)
|
||||
// CHECK:STDOUT: !95 = !DILocation(line: 61, column: 3, scope: !93)
|
||||
// CHECK:STDOUT: !96 = distinct !DISubprogram(name: "F", linkageName: "_CF.Main.66be507887ceee78", scope: null, file: !3, line: 64, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !97 = !DILocation(line: 65, column: 10, scope: !96)
|
||||
// CHECK:STDOUT: !98 = !DILocation(line: 65, column: 3, scope: !96)
|
||||
// CHECK:STDOUT: !99 = distinct !DISubprogram(name: "C", linkageName: "_CC.Main.e8193710fd35b608", scope: null, file: !3, line: 40, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !100 = !DILocation(line: 41, column: 7, scope: !99)
|
||||
// CHECK:STDOUT: !101 = !DILocation(line: 41, column: 6, scope: !99)
|
||||
// CHECK:STDOUT: !102 = !DILocation(line: 42, column: 5, scope: !99)
|
||||
// CHECK:STDOUT: !103 = !DILocation(line: 43, column: 10, scope: !99)
|
||||
// CHECK:STDOUT: !104 = !DILocation(line: 43, column: 5, scope: !99)
|
||||
// CHECK:STDOUT: !105 = !DILocation(line: 41, column: 3, scope: !99)
|
||||
// CHECK:STDOUT: !106 = !DILocation(line: 40, column: 1, scope: !99)
|
||||
// CHECK:STDOUT: !107 = distinct !DISubprogram(name: "E", linkageName: "_CE.Main.e8193710fd35b608", scope: null, file: !3, line: 60, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !108 = !DILocation(line: 61, column: 10, scope: !107)
|
||||
// CHECK:STDOUT: !109 = !DILocation(line: 61, column: 3, scope: !107)
|
||||
// CHECK:STDOUT: !110 = distinct !DISubprogram(name: "F", linkageName: "_CF.Main.e8193710fd35b608", scope: null, file: !3, line: 64, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !111 = !DILocation(line: 65, column: 10, scope: !110)
|
||||
// CHECK:STDOUT: !112 = !DILocation(line: 65, column: 3, scope: !110)
|
||||
// CHECK:STDOUT: !113 = distinct !DISubprogram(name: "G", linkageName: "_CG.Main.b88d1103f417c6d4", scope: null, file: !3, line: 68, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !114 = !DILocation(line: 69, column: 15, scope: !113)
|
||||
// CHECK:STDOUT: !115 = !DILocation(line: 69, column: 10, scope: !113)
|
||||
// CHECK:STDOUT: !116 = !DILocation(line: 69, column: 3, scope: !113)
|
||||
// CHECK:STDOUT: !117 = distinct !DISubprogram(name: "G", linkageName: "_CG.Main.66be507887ceee78", scope: null, file: !3, line: 68, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !118 = !DILocation(line: 69, column: 15, scope: !117)
|
||||
// CHECK:STDOUT: !119 = !DILocation(line: 69, column: 10, scope: !117)
|
||||
// CHECK:STDOUT: !120 = !DILocation(line: 69, column: 3, scope: !117)
|
||||
// CHECK:STDOUT: !121 = distinct !DISubprogram(name: "G", linkageName: "_CG.Main.e8193710fd35b608", scope: null, file: !3, line: 68, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !122 = !DILocation(line: 69, column: 15, scope: !121)
|
||||
// CHECK:STDOUT: !123 = !DILocation(line: 69, column: 10, scope: !121)
|
||||
// CHECK:STDOUT: !124 = !DILocation(line: 69, column: 3, scope: !121)
|
||||
|
||||
+56
-54
@@ -2,6 +2,8 @@
|
||||
// Exceptions. See /LICENSE for license information.
|
||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
//
|
||||
// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/full.carbon
|
||||
//
|
||||
// AUTOUPDATE
|
||||
// TIP: To test this file alone, run:
|
||||
// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/lower/testdata/operators/overloaded.carbon
|
||||
@@ -33,59 +35,59 @@ fn Calculate(a: Number, b: Number) -> Number {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: define void @"_COp.Number.Main:Negate.Core"(ptr sret({ i1 }) %return, ptr %self) !dbg !4 {
|
||||
// CHECK:STDOUT: entry:
|
||||
// CHECK:STDOUT: %.loc17_36.1.is_positive = getelementptr inbounds nuw { i1 }, ptr %self, i32 0, i32 0, !dbg !7
|
||||
// CHECK:STDOUT: %.loc17_36.2 = load i1, ptr %.loc17_36.1.is_positive, align 1, !dbg !7
|
||||
// CHECK:STDOUT: %.loc17_28 = xor i1 %.loc17_36.2, true, !dbg !8
|
||||
// CHECK:STDOUT: %.loc17_48.2.is_positive = getelementptr inbounds nuw { i1 }, ptr %return, i32 0, i32 0, !dbg !9
|
||||
// CHECK:STDOUT: store i1 %.loc17_28, ptr %.loc17_48.2.is_positive, align 1, !dbg !9
|
||||
// CHECK:STDOUT: %.loc19_36.1.is_positive = getelementptr inbounds nuw { i1 }, ptr %self, i32 0, i32 0, !dbg !7
|
||||
// CHECK:STDOUT: %.loc19_36.2 = load i1, ptr %.loc19_36.1.is_positive, align 1, !dbg !7
|
||||
// CHECK:STDOUT: %.loc19_28 = xor i1 %.loc19_36.2, true, !dbg !8
|
||||
// CHECK:STDOUT: %.loc19_48.2.is_positive = getelementptr inbounds nuw { i1 }, ptr %return, i32 0, i32 0, !dbg !9
|
||||
// CHECK:STDOUT: store i1 %.loc19_28, ptr %.loc19_48.2.is_positive, align 1, !dbg !9
|
||||
// CHECK:STDOUT: ret void, !dbg !10
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: define void @"_COp.Number.Main:MulWith.Core"(ptr sret({ i1 }) %return, ptr %self, ptr %other) !dbg !11 {
|
||||
// CHECK:STDOUT: entry:
|
||||
// CHECK:STDOUT: %.loc22_33.1.is_positive = getelementptr inbounds nuw { i1 }, ptr %self, i32 0, i32 0, !dbg !12
|
||||
// CHECK:STDOUT: %.loc22_33.2 = load i1, ptr %.loc22_33.1.is_positive, align 1, !dbg !12
|
||||
// CHECK:STDOUT: br i1 %.loc22_33.2, label %and.rhs.loc22, label %and.result.loc22, !dbg !12
|
||||
// CHECK:STDOUT: %.loc24_33.1.is_positive = getelementptr inbounds nuw { i1 }, ptr %self, i32 0, i32 0, !dbg !12
|
||||
// CHECK:STDOUT: %.loc24_33.2 = load i1, ptr %.loc24_33.1.is_positive, align 1, !dbg !12
|
||||
// CHECK:STDOUT: br i1 %.loc24_33.2, label %and.rhs.loc24, label %and.result.loc24, !dbg !12
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: and.rhs.loc22: ; preds = %entry
|
||||
// CHECK:STDOUT: %.loc22_55.1.is_positive = getelementptr inbounds nuw { i1 }, ptr %other, i32 0, i32 0, !dbg !13
|
||||
// CHECK:STDOUT: %.loc22_55.2 = load i1, ptr %.loc22_55.1.is_positive, align 1, !dbg !13
|
||||
// CHECK:STDOUT: br label %and.result.loc22, !dbg !12
|
||||
// CHECK:STDOUT: and.rhs.loc24: ; preds = %entry
|
||||
// CHECK:STDOUT: %.loc24_55.1.is_positive = getelementptr inbounds nuw { i1 }, ptr %other, i32 0, i32 0, !dbg !13
|
||||
// CHECK:STDOUT: %.loc24_55.2 = load i1, ptr %.loc24_55.1.is_positive, align 1, !dbg !13
|
||||
// CHECK:STDOUT: br label %and.result.loc24, !dbg !12
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: and.result.loc22: ; preds = %and.rhs.loc22, %entry
|
||||
// CHECK:STDOUT: %0 = phi i1 [ false, %entry ], [ %.loc22_55.2, %and.rhs.loc22 ]
|
||||
// CHECK:STDOUT: %.loc22_69.1 = xor i1 %0, true, !dbg !14
|
||||
// CHECK:STDOUT: br i1 %.loc22_69.1, label %or.rhs, label %or.result, !dbg !14
|
||||
// CHECK:STDOUT: and.result.loc24: ; preds = %and.rhs.loc24, %entry
|
||||
// CHECK:STDOUT: %0 = phi i1 [ false, %entry ], [ %.loc24_55.2, %and.rhs.loc24 ]
|
||||
// CHECK:STDOUT: %.loc24_69.1 = xor i1 %0, true, !dbg !14
|
||||
// CHECK:STDOUT: br i1 %.loc24_69.1, label %or.rhs, label %or.result, !dbg !14
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: or.rhs: ; preds = %and.result.loc22
|
||||
// CHECK:STDOUT: %.loc23_38.1.is_positive = getelementptr inbounds nuw { i1 }, ptr %self, i32 0, i32 0, !dbg !15
|
||||
// CHECK:STDOUT: %.loc23_38.2 = load i1, ptr %.loc23_38.1.is_positive, align 1, !dbg !15
|
||||
// CHECK:STDOUT: %.loc23_30 = xor i1 %.loc23_38.2, true, !dbg !16
|
||||
// CHECK:STDOUT: br i1 %.loc23_30, label %and.rhs.loc23, label %and.result.loc23, !dbg !16
|
||||
// CHECK:STDOUT: or.rhs: ; preds = %and.result.loc24
|
||||
// CHECK:STDOUT: %.loc25_38.1.is_positive = getelementptr inbounds nuw { i1 }, ptr %self, i32 0, i32 0, !dbg !15
|
||||
// CHECK:STDOUT: %.loc25_38.2 = load i1, ptr %.loc25_38.1.is_positive, align 1, !dbg !15
|
||||
// CHECK:STDOUT: %.loc25_30 = xor i1 %.loc25_38.2, true, !dbg !16
|
||||
// CHECK:STDOUT: br i1 %.loc25_30, label %and.rhs.loc25, label %and.result.loc25, !dbg !16
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: and.rhs.loc23: ; preds = %or.rhs
|
||||
// CHECK:STDOUT: %.loc23_64.1.is_positive = getelementptr inbounds nuw { i1 }, ptr %other, i32 0, i32 0, !dbg !17
|
||||
// CHECK:STDOUT: %.loc23_64.2 = load i1, ptr %.loc23_64.1.is_positive, align 1, !dbg !17
|
||||
// CHECK:STDOUT: %.loc23_55 = xor i1 %.loc23_64.2, true, !dbg !18
|
||||
// CHECK:STDOUT: br label %and.result.loc23, !dbg !16
|
||||
// CHECK:STDOUT: and.rhs.loc25: ; preds = %or.rhs
|
||||
// CHECK:STDOUT: %.loc25_64.1.is_positive = getelementptr inbounds nuw { i1 }, ptr %other, i32 0, i32 0, !dbg !17
|
||||
// CHECK:STDOUT: %.loc25_64.2 = load i1, ptr %.loc25_64.1.is_positive, align 1, !dbg !17
|
||||
// CHECK:STDOUT: %.loc25_55 = xor i1 %.loc25_64.2, true, !dbg !18
|
||||
// CHECK:STDOUT: br label %and.result.loc25, !dbg !16
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: and.result.loc23: ; preds = %and.rhs.loc23, %or.rhs
|
||||
// CHECK:STDOUT: %1 = phi i1 [ false, %or.rhs ], [ %.loc23_55, %and.rhs.loc23 ]
|
||||
// CHECK:STDOUT: and.result.loc25: ; preds = %and.rhs.loc25, %or.rhs
|
||||
// CHECK:STDOUT: %1 = phi i1 [ false, %or.rhs ], [ %.loc25_55, %and.rhs.loc25 ]
|
||||
// CHECK:STDOUT: br label %or.result, !dbg !14
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: or.result: ; preds = %and.result.loc23, %and.result.loc22
|
||||
// CHECK:STDOUT: %2 = phi i1 [ true, %and.result.loc22 ], [ %1, %and.result.loc23 ]
|
||||
// CHECK:STDOUT: %.loc23_77.2.is_positive = getelementptr inbounds nuw { i1 }, ptr %return, i32 0, i32 0, !dbg !19
|
||||
// CHECK:STDOUT: store i1 %2, ptr %.loc23_77.2.is_positive, align 1, !dbg !19
|
||||
// CHECK:STDOUT: or.result: ; preds = %and.result.loc25, %and.result.loc24
|
||||
// CHECK:STDOUT: %2 = phi i1 [ true, %and.result.loc24 ], [ %1, %and.result.loc25 ]
|
||||
// CHECK:STDOUT: %.loc25_77.2.is_positive = getelementptr inbounds nuw { i1 }, ptr %return, i32 0, i32 0, !dbg !19
|
||||
// CHECK:STDOUT: store i1 %2, ptr %.loc25_77.2.is_positive, align 1, !dbg !19
|
||||
// CHECK:STDOUT: ret void, !dbg !20
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: define void @_CCalculate.Main(ptr sret({ i1 }) %return, ptr %a, ptr %b) !dbg !21 {
|
||||
// CHECK:STDOUT: entry:
|
||||
// CHECK:STDOUT: %.loc28_10.1.temp = alloca { i1 }, align 8, !dbg !22
|
||||
// CHECK:STDOUT: call void @llvm.lifetime.start.p0(i64 1, ptr %.loc28_10.1.temp), !dbg !22
|
||||
// CHECK:STDOUT: call void @"_COp.Number.Main:Negate.Core"(ptr %.loc28_10.1.temp, ptr %a), !dbg !22
|
||||
// CHECK:STDOUT: call void @"_COp.Number.Main:MulWith.Core"(ptr %return, ptr %.loc28_10.1.temp, ptr %b), !dbg !22
|
||||
// CHECK:STDOUT: %.loc30_10.1.temp = alloca { i1 }, align 8, !dbg !22
|
||||
// CHECK:STDOUT: call void @llvm.lifetime.start.p0(i64 1, ptr %.loc30_10.1.temp), !dbg !22
|
||||
// CHECK:STDOUT: call void @"_COp.Number.Main:Negate.Core"(ptr %.loc30_10.1.temp, ptr %a), !dbg !22
|
||||
// CHECK:STDOUT: call void @"_COp.Number.Main:MulWith.Core"(ptr %return, ptr %.loc30_10.1.temp, ptr %b), !dbg !22
|
||||
// CHECK:STDOUT: ret void, !dbg !23
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -101,23 +103,23 @@ fn Calculate(a: Number, b: Number) -> Number {
|
||||
// CHECK:STDOUT: !1 = !{i32 2, !"Debug Info Version", i32 3}
|
||||
// CHECK:STDOUT: !2 = distinct !DICompileUnit(language: DW_LANG_C, file: !3, producer: "carbon", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug)
|
||||
// CHECK:STDOUT: !3 = !DIFile(filename: "overloaded.carbon", directory: "")
|
||||
// CHECK:STDOUT: !4 = distinct !DISubprogram(name: "Op", linkageName: "_COp.Number.Main:Negate.Core", scope: null, file: !3, line: 16, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !4 = distinct !DISubprogram(name: "Op", linkageName: "_COp.Number.Main:Negate.Core", scope: null, file: !3, line: 18, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !5 = !DISubroutineType(types: !6)
|
||||
// CHECK:STDOUT: !6 = !{}
|
||||
// CHECK:STDOUT: !7 = !DILocation(line: 17, column: 32, scope: !4)
|
||||
// CHECK:STDOUT: !8 = !DILocation(line: 17, column: 28, scope: !4)
|
||||
// CHECK:STDOUT: !9 = !DILocation(line: 17, column: 12, scope: !4)
|
||||
// CHECK:STDOUT: !10 = !DILocation(line: 17, column: 5, scope: !4)
|
||||
// CHECK:STDOUT: !11 = distinct !DISubprogram(name: "Op", linkageName: "_COp.Number.Main:MulWith.Core", scope: null, file: !3, line: 21, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !12 = !DILocation(line: 22, column: 29, scope: !11)
|
||||
// CHECK:STDOUT: !13 = !DILocation(line: 22, column: 50, scope: !11)
|
||||
// CHECK:STDOUT: !14 = !DILocation(line: 22, column: 28, scope: !11)
|
||||
// CHECK:STDOUT: !15 = !DILocation(line: 23, column: 34, scope: !11)
|
||||
// CHECK:STDOUT: !16 = !DILocation(line: 23, column: 30, scope: !11)
|
||||
// CHECK:STDOUT: !17 = !DILocation(line: 23, column: 59, scope: !11)
|
||||
// CHECK:STDOUT: !18 = !DILocation(line: 23, column: 55, scope: !11)
|
||||
// CHECK:STDOUT: !19 = !DILocation(line: 22, column: 12, scope: !11)
|
||||
// CHECK:STDOUT: !20 = !DILocation(line: 22, column: 5, scope: !11)
|
||||
// CHECK:STDOUT: !21 = distinct !DISubprogram(name: "Calculate", linkageName: "_CCalculate.Main", scope: null, file: !3, line: 27, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !22 = !DILocation(line: 28, column: 10, scope: !21)
|
||||
// CHECK:STDOUT: !23 = !DILocation(line: 28, column: 3, scope: !21)
|
||||
// CHECK:STDOUT: !7 = !DILocation(line: 19, column: 32, scope: !4)
|
||||
// CHECK:STDOUT: !8 = !DILocation(line: 19, column: 28, scope: !4)
|
||||
// CHECK:STDOUT: !9 = !DILocation(line: 19, column: 12, scope: !4)
|
||||
// CHECK:STDOUT: !10 = !DILocation(line: 19, column: 5, scope: !4)
|
||||
// CHECK:STDOUT: !11 = distinct !DISubprogram(name: "Op", linkageName: "_COp.Number.Main:MulWith.Core", scope: null, file: !3, line: 23, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !12 = !DILocation(line: 24, column: 29, scope: !11)
|
||||
// CHECK:STDOUT: !13 = !DILocation(line: 24, column: 50, scope: !11)
|
||||
// CHECK:STDOUT: !14 = !DILocation(line: 24, column: 28, scope: !11)
|
||||
// CHECK:STDOUT: !15 = !DILocation(line: 25, column: 34, scope: !11)
|
||||
// CHECK:STDOUT: !16 = !DILocation(line: 25, column: 30, scope: !11)
|
||||
// CHECK:STDOUT: !17 = !DILocation(line: 25, column: 59, scope: !11)
|
||||
// CHECK:STDOUT: !18 = !DILocation(line: 25, column: 55, scope: !11)
|
||||
// CHECK:STDOUT: !19 = !DILocation(line: 24, column: 12, scope: !11)
|
||||
// CHECK:STDOUT: !20 = !DILocation(line: 24, column: 5, scope: !11)
|
||||
// CHECK:STDOUT: !21 = distinct !DISubprogram(name: "Calculate", linkageName: "_CCalculate.Main", scope: null, file: !3, line: 29, type: !5, spFlags: DISPFlagDefinition, unit: !2)
|
||||
// CHECK:STDOUT: !22 = !DILocation(line: 30, column: 10, scope: !21)
|
||||
// CHECK:STDOUT: !23 = !DILocation(line: 30, column: 3, scope: !21)
|
||||
|
||||
@@ -163,11 +163,9 @@ auto ToolchainFileTest::Run(
|
||||
}
|
||||
}
|
||||
if (!found_prelude_flag) {
|
||||
// TODO: Enable this error when all check/ and lower/ tests include a
|
||||
// prelude choice explicitly.
|
||||
// return Error(
|
||||
// "Include a prelude from //toolchain/testing/testdata/min_prelude "
|
||||
// "to specify what should be imported into the test.");
|
||||
return Error(
|
||||
"Include a prelude from //toolchain/testing/testdata/min_prelude "
|
||||
"to specify what should be imported into the test.");
|
||||
}
|
||||
} else {
|
||||
filtered_test_args = test_args;
|
||||
|
||||
Reference in New Issue
Block a user