mirror of
https://github.com/carbon-language/carbon-lang.git
synced 2026-10-04 22:02:52 +01:00
Collapse names into VarStorage (#3116)
This removes BindName, putting name information directly on VarStorage.
As a side-effect of updating semantics_ir_test for this change, I also
noted that function bodies were being generated as invalid YAML so am
fixing that (just `{}` to `[]` bracketing, otherwise the test wouldn't
work anymore).
Because names are now available, I've updated lowering to use them for
vars.
In the SemIR formatter, the name is now repeated because it's a
parameter to VarStorage. I believe this is just default behavior, and
we'd have to special-case VarStorage to remove it because it's automatic
argument printing in action. On the balance, it felt like letting it
print was reasonable.
I've noted in places that the name on VarStorage is expected to be
optional, but am not adding support because I'd have no way of testing
it at present.
This commit is contained in:
@@ -78,9 +78,8 @@ auto LoweringContext::BuildFunctionDeclaration(SemanticsFunctionId function_id)
|
||||
|
||||
// Set parameter names.
|
||||
for (int i = 0; i < static_cast<int>(param_refs.size()); ++i) {
|
||||
auto [param_name_id, _] =
|
||||
semantics_ir().GetNode(param_refs[i]).GetAsBindName();
|
||||
llvm_function->getArg(i)->setName(semantics_ir().GetString(param_name_id));
|
||||
auto name_id = semantics_ir().GetNode(param_refs[i]).GetAsVarStorage();
|
||||
llvm_function->getArg(i)->setName(semantics_ir().GetString(name_id));
|
||||
}
|
||||
|
||||
return llvm_function;
|
||||
@@ -101,9 +100,7 @@ auto LoweringContext::BuildFunctionDefinition(SemanticsFunctionId function_id)
|
||||
// Add parameters to locals.
|
||||
auto param_refs = semantics_ir().GetNodeBlock(function.param_refs_id);
|
||||
for (int i = 0; i < static_cast<int>(param_refs.size()); ++i) {
|
||||
auto param_storage =
|
||||
semantics_ir().GetNode(param_refs[i]).GetAsBindName().second;
|
||||
function_lowering.SetLocal(param_storage, llvm_function->getArg(i));
|
||||
function_lowering.SetLocal(param_refs[i], llvm_function->getArg(i));
|
||||
}
|
||||
|
||||
// Lower all blocks.
|
||||
|
||||
@@ -363,14 +363,12 @@ auto LoweringHandleUnaryOperatorNot(LoweringFunctionContext& context,
|
||||
auto LoweringHandleVarStorage(LoweringFunctionContext& context,
|
||||
SemanticsNodeId node_id, SemanticsNode node)
|
||||
-> void {
|
||||
// TODO: This should provide a name, not just `var`. Also, LLVM requires
|
||||
// globals to have a name. Do we want to generate a name, which would need to
|
||||
// be consistent across translation units, or use the given name, which
|
||||
// requires either looking ahead for BindName or restructuring semantics,
|
||||
// either of which affects the destructuring due to the difference in
|
||||
// storage?
|
||||
// TODO: Eventually this name will be optional, and we'll want to provide
|
||||
// something like `var` as a default. However, that's not possible right now
|
||||
// so cannot be tested.
|
||||
auto name = context.semantics_ir().GetString(node.GetAsVarStorage());
|
||||
auto* alloca = context.builder().CreateAlloca(context.GetType(node.type_id()),
|
||||
/*ArraySize=*/nullptr, "var");
|
||||
/*ArraySize=*/nullptr, name);
|
||||
context.SetLocal(node_id, alloca);
|
||||
}
|
||||
|
||||
|
||||
@@ -24,7 +24,7 @@ fn Run() {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: define void @Run() {
|
||||
// CHECK:STDOUT: %var = alloca [2 x i32], align 4
|
||||
// CHECK:STDOUT: %t = alloca [2 x i32], align 4
|
||||
// CHECK:STDOUT: %F = call { i32, i32 } @F()
|
||||
// CHECK:STDOUT: %array = alloca [2 x i32], align 4
|
||||
// CHECK:STDOUT: %array.element = extractvalue { i32, i32 } %F, 0
|
||||
@@ -34,6 +34,6 @@ fn Run() {
|
||||
// CHECK:STDOUT: %2 = getelementptr inbounds [2 x i32], ptr %array, i32 0, i32 1
|
||||
// CHECK:STDOUT: store i32 %array.element1, ptr %2, align 4
|
||||
// CHECK:STDOUT: %3 = load [2 x i32], ptr %array, align 4
|
||||
// CHECK:STDOUT: store [2 x i32] %3, ptr %var, align 4
|
||||
// CHECK:STDOUT: store [2 x i32] %3, ptr %t, align 4
|
||||
// CHECK:STDOUT: ret void
|
||||
// CHECK:STDOUT: }
|
||||
|
||||
+71
-71
@@ -18,7 +18,7 @@ fn Run() {
|
||||
// CHECK:STDOUT: %type = type {}
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: define void @Run() {
|
||||
// CHECK:STDOUT: %var = alloca [1 x i32], align 4
|
||||
// CHECK:STDOUT: %a = alloca [1 x i32], align 4
|
||||
// CHECK:STDOUT: %tuple = alloca { i32 }, align 8
|
||||
// CHECK:STDOUT: %1 = getelementptr inbounds { i32 }, ptr %tuple, i32 0, i32 0
|
||||
// CHECK:STDOUT: store i32 1, ptr %1, align 4
|
||||
@@ -28,97 +28,97 @@ fn Run() {
|
||||
// CHECK:STDOUT: %3 = getelementptr inbounds [1 x i32], ptr %array, i32 0, i32 0
|
||||
// CHECK:STDOUT: store i32 %2, ptr %3, align 4
|
||||
// CHECK:STDOUT: %4 = load [1 x i32], ptr %array, align 4
|
||||
// CHECK:STDOUT: store [1 x i32] %4, ptr %var, align 4
|
||||
// CHECK:STDOUT: %var1 = alloca [2 x double], align 8
|
||||
// CHECK:STDOUT: %tuple2 = alloca { double, double }, align 8
|
||||
// CHECK:STDOUT: %5 = getelementptr inbounds { double, double }, ptr %tuple2, i32 0, i32 0
|
||||
// CHECK:STDOUT: store [1 x i32] %4, ptr %a, align 4
|
||||
// CHECK:STDOUT: %b = alloca [2 x double], align 8
|
||||
// CHECK:STDOUT: %tuple1 = alloca { double, double }, align 8
|
||||
// CHECK:STDOUT: %5 = getelementptr inbounds { double, double }, ptr %tuple1, i32 0, i32 0
|
||||
// CHECK:STDOUT: store double 0x4026333333333334, ptr %5, align 8
|
||||
// CHECK:STDOUT: %6 = getelementptr inbounds { double, double }, ptr %tuple2, i32 0, i32 1
|
||||
// CHECK:STDOUT: %6 = getelementptr inbounds { double, double }, ptr %tuple1, i32 0, i32 1
|
||||
// CHECK:STDOUT: store double 2.200000e+00, ptr %6, align 8
|
||||
// CHECK:STDOUT: %array3 = alloca [2 x double], align 8
|
||||
// CHECK:STDOUT: %array.element4 = getelementptr inbounds { double, double }, ptr %tuple2, i32 0, i32 0
|
||||
// CHECK:STDOUT: %7 = load double, ptr %array.element4, align 8
|
||||
// CHECK:STDOUT: %8 = getelementptr inbounds [2 x double], ptr %array3, i32 0, i32 0
|
||||
// CHECK:STDOUT: %array2 = alloca [2 x double], align 8
|
||||
// CHECK:STDOUT: %array.element3 = getelementptr inbounds { double, double }, ptr %tuple1, i32 0, i32 0
|
||||
// CHECK:STDOUT: %7 = load double, ptr %array.element3, align 8
|
||||
// CHECK:STDOUT: %8 = getelementptr inbounds [2 x double], ptr %array2, i32 0, i32 0
|
||||
// CHECK:STDOUT: store double %7, ptr %8, align 8
|
||||
// CHECK:STDOUT: %array.element5 = getelementptr inbounds { double, double }, ptr %tuple2, i32 0, i32 1
|
||||
// CHECK:STDOUT: %9 = load double, ptr %array.element5, align 8
|
||||
// CHECK:STDOUT: %10 = getelementptr inbounds [2 x double], ptr %array3, i32 0, i32 1
|
||||
// CHECK:STDOUT: %array.element4 = getelementptr inbounds { double, double }, ptr %tuple1, i32 0, i32 1
|
||||
// CHECK:STDOUT: %9 = load double, ptr %array.element4, align 8
|
||||
// CHECK:STDOUT: %10 = getelementptr inbounds [2 x double], ptr %array2, i32 0, i32 1
|
||||
// CHECK:STDOUT: store double %9, ptr %10, align 8
|
||||
// CHECK:STDOUT: %11 = load [2 x double], ptr %array3, align 8
|
||||
// CHECK:STDOUT: store [2 x double] %11, ptr %var1, align 8
|
||||
// CHECK:STDOUT: %11 = load [2 x double], ptr %array2, align 8
|
||||
// CHECK:STDOUT: store [2 x double] %11, ptr %b, align 8
|
||||
// CHECK:STDOUT: %tuple5 = alloca {}, align 8
|
||||
// CHECK:STDOUT: %c = alloca [5 x {}], align 8
|
||||
// CHECK:STDOUT: %tuple6 = alloca {}, align 8
|
||||
// CHECK:STDOUT: %var7 = alloca [5 x {}], align 8
|
||||
// CHECK:STDOUT: %tuple7 = alloca {}, align 8
|
||||
// CHECK:STDOUT: %tuple8 = alloca {}, align 8
|
||||
// CHECK:STDOUT: %tuple9 = alloca {}, align 8
|
||||
// CHECK:STDOUT: %tuple10 = alloca {}, align 8
|
||||
// CHECK:STDOUT: %tuple11 = alloca {}, align 8
|
||||
// CHECK:STDOUT: %tuple12 = alloca {}, align 8
|
||||
// CHECK:STDOUT: %tuple13 = alloca { {}, {}, {}, {}, {} }, align 8
|
||||
// CHECK:STDOUT: %12 = getelementptr inbounds { {}, {}, {}, {}, {} }, ptr %tuple13, i32 0, i32 0
|
||||
// CHECK:STDOUT: store ptr %tuple8, ptr %12, align 8
|
||||
// CHECK:STDOUT: %13 = getelementptr inbounds { {}, {}, {}, {}, {} }, ptr %tuple13, i32 0, i32 1
|
||||
// CHECK:STDOUT: store ptr %tuple9, ptr %13, align 8
|
||||
// CHECK:STDOUT: %14 = getelementptr inbounds { {}, {}, {}, {}, {} }, ptr %tuple13, i32 0, i32 2
|
||||
// CHECK:STDOUT: store ptr %tuple10, ptr %14, align 8
|
||||
// CHECK:STDOUT: %15 = getelementptr inbounds { {}, {}, {}, {}, {} }, ptr %tuple13, i32 0, i32 3
|
||||
// CHECK:STDOUT: store ptr %tuple11, ptr %15, align 8
|
||||
// CHECK:STDOUT: %16 = getelementptr inbounds { {}, {}, {}, {}, {} }, ptr %tuple13, i32 0, i32 4
|
||||
// CHECK:STDOUT: store ptr %tuple12, ptr %16, align 8
|
||||
// CHECK:STDOUT: %array14 = alloca [5 x {}], align 8
|
||||
// CHECK:STDOUT: %array.element15 = getelementptr inbounds { {}, {}, {}, {}, {} }, ptr %tuple13, i32 0, i32 0
|
||||
// CHECK:STDOUT: %17 = load {}, ptr %array.element15, align 1
|
||||
// CHECK:STDOUT: %18 = getelementptr inbounds [5 x {}], ptr %array14, i32 0, i32 0
|
||||
// CHECK:STDOUT: %tuple11 = alloca { {}, {}, {}, {}, {} }, align 8
|
||||
// CHECK:STDOUT: %12 = getelementptr inbounds { {}, {}, {}, {}, {} }, ptr %tuple11, i32 0, i32 0
|
||||
// CHECK:STDOUT: store ptr %tuple6, ptr %12, align 8
|
||||
// CHECK:STDOUT: %13 = getelementptr inbounds { {}, {}, {}, {}, {} }, ptr %tuple11, i32 0, i32 1
|
||||
// CHECK:STDOUT: store ptr %tuple7, ptr %13, align 8
|
||||
// CHECK:STDOUT: %14 = getelementptr inbounds { {}, {}, {}, {}, {} }, ptr %tuple11, i32 0, i32 2
|
||||
// CHECK:STDOUT: store ptr %tuple8, ptr %14, align 8
|
||||
// CHECK:STDOUT: %15 = getelementptr inbounds { {}, {}, {}, {}, {} }, ptr %tuple11, i32 0, i32 3
|
||||
// CHECK:STDOUT: store ptr %tuple9, ptr %15, align 8
|
||||
// CHECK:STDOUT: %16 = getelementptr inbounds { {}, {}, {}, {}, {} }, ptr %tuple11, i32 0, i32 4
|
||||
// CHECK:STDOUT: store ptr %tuple10, ptr %16, align 8
|
||||
// CHECK:STDOUT: %array12 = alloca [5 x {}], align 8
|
||||
// CHECK:STDOUT: %array.element13 = getelementptr inbounds { {}, {}, {}, {}, {} }, ptr %tuple11, i32 0, i32 0
|
||||
// CHECK:STDOUT: %17 = load {}, ptr %array.element13, align 1
|
||||
// CHECK:STDOUT: %18 = getelementptr inbounds [5 x {}], ptr %array12, i32 0, i32 0
|
||||
// CHECK:STDOUT: store {} %17, ptr %18, align 1
|
||||
// CHECK:STDOUT: %array.element16 = getelementptr inbounds { {}, {}, {}, {}, {} }, ptr %tuple13, i32 0, i32 1
|
||||
// CHECK:STDOUT: %19 = load {}, ptr %array.element16, align 1
|
||||
// CHECK:STDOUT: %20 = getelementptr inbounds [5 x {}], ptr %array14, i32 0, i32 1
|
||||
// CHECK:STDOUT: %array.element14 = getelementptr inbounds { {}, {}, {}, {}, {} }, ptr %tuple11, i32 0, i32 1
|
||||
// CHECK:STDOUT: %19 = load {}, ptr %array.element14, align 1
|
||||
// CHECK:STDOUT: %20 = getelementptr inbounds [5 x {}], ptr %array12, i32 0, i32 1
|
||||
// CHECK:STDOUT: store {} %19, ptr %20, align 1
|
||||
// CHECK:STDOUT: %array.element17 = getelementptr inbounds { {}, {}, {}, {}, {} }, ptr %tuple13, i32 0, i32 2
|
||||
// CHECK:STDOUT: %21 = load {}, ptr %array.element17, align 1
|
||||
// CHECK:STDOUT: %22 = getelementptr inbounds [5 x {}], ptr %array14, i32 0, i32 2
|
||||
// CHECK:STDOUT: %array.element15 = getelementptr inbounds { {}, {}, {}, {}, {} }, ptr %tuple11, i32 0, i32 2
|
||||
// CHECK:STDOUT: %21 = load {}, ptr %array.element15, align 1
|
||||
// CHECK:STDOUT: %22 = getelementptr inbounds [5 x {}], ptr %array12, i32 0, i32 2
|
||||
// CHECK:STDOUT: store {} %21, ptr %22, align 1
|
||||
// CHECK:STDOUT: %array.element18 = getelementptr inbounds { {}, {}, {}, {}, {} }, ptr %tuple13, i32 0, i32 3
|
||||
// CHECK:STDOUT: %23 = load {}, ptr %array.element18, align 1
|
||||
// CHECK:STDOUT: %24 = getelementptr inbounds [5 x {}], ptr %array14, i32 0, i32 3
|
||||
// CHECK:STDOUT: %array.element16 = getelementptr inbounds { {}, {}, {}, {}, {} }, ptr %tuple11, i32 0, i32 3
|
||||
// CHECK:STDOUT: %23 = load {}, ptr %array.element16, align 1
|
||||
// CHECK:STDOUT: %24 = getelementptr inbounds [5 x {}], ptr %array12, i32 0, i32 3
|
||||
// CHECK:STDOUT: store {} %23, ptr %24, align 1
|
||||
// CHECK:STDOUT: %array.element19 = getelementptr inbounds { {}, {}, {}, {}, {} }, ptr %tuple13, i32 0, i32 4
|
||||
// CHECK:STDOUT: %25 = load {}, ptr %array.element19, align 1
|
||||
// CHECK:STDOUT: %26 = getelementptr inbounds [5 x {}], ptr %array14, i32 0, i32 4
|
||||
// CHECK:STDOUT: %array.element17 = getelementptr inbounds { {}, {}, {}, {}, {} }, ptr %tuple11, i32 0, i32 4
|
||||
// CHECK:STDOUT: %25 = load {}, ptr %array.element17, align 1
|
||||
// CHECK:STDOUT: %26 = getelementptr inbounds [5 x {}], ptr %array12, i32 0, i32 4
|
||||
// CHECK:STDOUT: store {} %25, ptr %26, align 1
|
||||
// CHECK:STDOUT: %27 = load [5 x {}], ptr %array14, align 1
|
||||
// CHECK:STDOUT: store [5 x {}] %27, ptr %var7, align 1
|
||||
// CHECK:STDOUT: %tuple20 = alloca { %type, %type, %type }, align 8
|
||||
// CHECK:STDOUT: %28 = getelementptr inbounds { %type, %type, %type }, ptr %tuple20, i32 0, i32 0
|
||||
// CHECK:STDOUT: %27 = load [5 x {}], ptr %array12, align 1
|
||||
// CHECK:STDOUT: store [5 x {}] %27, ptr %c, align 1
|
||||
// CHECK:STDOUT: %tuple18 = alloca { %type, %type, %type }, align 8
|
||||
// CHECK:STDOUT: %28 = getelementptr inbounds { %type, %type, %type }, ptr %tuple18, i32 0, i32 0
|
||||
// CHECK:STDOUT: store %type zeroinitializer, ptr %28, align 1
|
||||
// CHECK:STDOUT: %29 = getelementptr inbounds { %type, %type, %type }, ptr %tuple20, i32 0, i32 1
|
||||
// CHECK:STDOUT: %29 = getelementptr inbounds { %type, %type, %type }, ptr %tuple18, i32 0, i32 1
|
||||
// CHECK:STDOUT: store %type zeroinitializer, ptr %29, align 1
|
||||
// CHECK:STDOUT: %30 = getelementptr inbounds { %type, %type, %type }, ptr %tuple20, i32 0, i32 2
|
||||
// CHECK:STDOUT: %30 = getelementptr inbounds { %type, %type, %type }, ptr %tuple18, i32 0, i32 2
|
||||
// CHECK:STDOUT: store %type zeroinitializer, ptr %30, align 1
|
||||
// CHECK:STDOUT: %var21 = alloca { i32, i32, i32 }, align 8
|
||||
// CHECK:STDOUT: %tuple22 = alloca { i32, i32, i32 }, align 8
|
||||
// CHECK:STDOUT: %31 = getelementptr inbounds { i32, i32, i32 }, ptr %tuple22, i32 0, i32 0
|
||||
// CHECK:STDOUT: %d = alloca { i32, i32, i32 }, align 8
|
||||
// CHECK:STDOUT: %tuple19 = alloca { i32, i32, i32 }, align 8
|
||||
// CHECK:STDOUT: %31 = getelementptr inbounds { i32, i32, i32 }, ptr %tuple19, i32 0, i32 0
|
||||
// CHECK:STDOUT: store i32 1, ptr %31, align 4
|
||||
// CHECK:STDOUT: %32 = getelementptr inbounds { i32, i32, i32 }, ptr %tuple22, i32 0, i32 1
|
||||
// CHECK:STDOUT: %32 = getelementptr inbounds { i32, i32, i32 }, ptr %tuple19, i32 0, i32 1
|
||||
// CHECK:STDOUT: store i32 2, ptr %32, align 4
|
||||
// CHECK:STDOUT: %33 = getelementptr inbounds { i32, i32, i32 }, ptr %tuple22, i32 0, i32 2
|
||||
// CHECK:STDOUT: %33 = getelementptr inbounds { i32, i32, i32 }, ptr %tuple19, i32 0, i32 2
|
||||
// CHECK:STDOUT: store i32 3, ptr %33, align 4
|
||||
// CHECK:STDOUT: %34 = load { i32, i32, i32 }, ptr %tuple22, align 4
|
||||
// CHECK:STDOUT: store { i32, i32, i32 } %34, ptr %var21, align 4
|
||||
// CHECK:STDOUT: %var23 = alloca [3 x i32], align 4
|
||||
// CHECK:STDOUT: %array24 = alloca [3 x i32], align 4
|
||||
// CHECK:STDOUT: %array.element25 = getelementptr inbounds { i32, i32, i32 }, ptr %var21, i32 0, i32 0
|
||||
// CHECK:STDOUT: %35 = load i32, ptr %array.element25, align 4
|
||||
// CHECK:STDOUT: %36 = getelementptr inbounds [3 x i32], ptr %array24, i32 0, i32 0
|
||||
// CHECK:STDOUT: %34 = load { i32, i32, i32 }, ptr %tuple19, align 4
|
||||
// CHECK:STDOUT: store { i32, i32, i32 } %34, ptr %d, align 4
|
||||
// CHECK:STDOUT: %e = alloca [3 x i32], align 4
|
||||
// CHECK:STDOUT: %array20 = alloca [3 x i32], align 4
|
||||
// CHECK:STDOUT: %array.element21 = getelementptr inbounds { i32, i32, i32 }, ptr %d, i32 0, i32 0
|
||||
// CHECK:STDOUT: %35 = load i32, ptr %array.element21, align 4
|
||||
// CHECK:STDOUT: %36 = getelementptr inbounds [3 x i32], ptr %array20, i32 0, i32 0
|
||||
// CHECK:STDOUT: store i32 %35, ptr %36, align 4
|
||||
// CHECK:STDOUT: %array.element26 = getelementptr inbounds { i32, i32, i32 }, ptr %var21, i32 0, i32 1
|
||||
// CHECK:STDOUT: %37 = load i32, ptr %array.element26, align 4
|
||||
// CHECK:STDOUT: %38 = getelementptr inbounds [3 x i32], ptr %array24, i32 0, i32 1
|
||||
// CHECK:STDOUT: %array.element22 = getelementptr inbounds { i32, i32, i32 }, ptr %d, i32 0, i32 1
|
||||
// CHECK:STDOUT: %37 = load i32, ptr %array.element22, align 4
|
||||
// CHECK:STDOUT: %38 = getelementptr inbounds [3 x i32], ptr %array20, i32 0, i32 1
|
||||
// CHECK:STDOUT: store i32 %37, ptr %38, align 4
|
||||
// CHECK:STDOUT: %array.element27 = getelementptr inbounds { i32, i32, i32 }, ptr %var21, i32 0, i32 2
|
||||
// CHECK:STDOUT: %39 = load i32, ptr %array.element27, align 4
|
||||
// CHECK:STDOUT: %40 = getelementptr inbounds [3 x i32], ptr %array24, i32 0, i32 2
|
||||
// CHECK:STDOUT: %array.element23 = getelementptr inbounds { i32, i32, i32 }, ptr %d, i32 0, i32 2
|
||||
// CHECK:STDOUT: %39 = load i32, ptr %array.element23, align 4
|
||||
// CHECK:STDOUT: %40 = getelementptr inbounds [3 x i32], ptr %array20, i32 0, i32 2
|
||||
// CHECK:STDOUT: store i32 %39, ptr %40, align 4
|
||||
// CHECK:STDOUT: %41 = load [3 x i32], ptr %array24, align 4
|
||||
// CHECK:STDOUT: store [3 x i32] %41, ptr %var23, align 4
|
||||
// CHECK:STDOUT: %41 = load [3 x i32], ptr %array20, align 4
|
||||
// CHECK:STDOUT: store [3 x i32] %41, ptr %e, align 4
|
||||
// CHECK:STDOUT: ret void
|
||||
// CHECK:STDOUT: }
|
||||
|
||||
@@ -23,10 +23,10 @@ fn Main() {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: define void @Main() {
|
||||
// CHECK:STDOUT: %struct = alloca {}, align 8
|
||||
// CHECK:STDOUT: %var = alloca {}, align 8
|
||||
// CHECK:STDOUT: %b = alloca {}, align 8
|
||||
// CHECK:STDOUT: %struct1 = alloca {}, align 8
|
||||
// CHECK:STDOUT: %1 = load {}, ptr %struct1, align 1
|
||||
// CHECK:STDOUT: %Echo = call {} @Echo({} %1)
|
||||
// CHECK:STDOUT: store {} %Echo, ptr %var, align 1
|
||||
// CHECK:STDOUT: store {} %Echo, ptr %b, align 1
|
||||
// CHECK:STDOUT: ret void
|
||||
// CHECK:STDOUT: }
|
||||
|
||||
@@ -21,10 +21,10 @@ fn Main() {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: define void @Main() {
|
||||
// CHECK:STDOUT: %tuple = alloca {}, align 8
|
||||
// CHECK:STDOUT: %var = alloca {}, align 8
|
||||
// CHECK:STDOUT: %b = alloca {}, align 8
|
||||
// CHECK:STDOUT: %tuple1 = alloca {}, align 8
|
||||
// CHECK:STDOUT: %1 = load {}, ptr %tuple1, align 1
|
||||
// CHECK:STDOUT: %Echo = call {} @Echo({} %1)
|
||||
// CHECK:STDOUT: store {} %Echo, ptr %var, align 1
|
||||
// CHECK:STDOUT: store {} %Echo, ptr %b, align 1
|
||||
// CHECK:STDOUT: ret void
|
||||
// CHECK:STDOUT: }
|
||||
|
||||
+2
-2
@@ -20,8 +20,8 @@ fn Main() {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: define void @Main() {
|
||||
// CHECK:STDOUT: %var = alloca i32, align 4
|
||||
// CHECK:STDOUT: %b = alloca i32, align 4
|
||||
// CHECK:STDOUT: %Echo = call i32 @Echo(i32 1)
|
||||
// CHECK:STDOUT: store i32 %Echo, ptr %var, align 4
|
||||
// CHECK:STDOUT: store i32 %Echo, ptr %b, align 4
|
||||
// CHECK:STDOUT: ret void
|
||||
// CHECK:STDOUT: }
|
||||
|
||||
+2
-2
@@ -26,11 +26,11 @@ fn Main() {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: define void @Main() {
|
||||
// CHECK:STDOUT: %tuple = alloca {}, align 8
|
||||
// CHECK:STDOUT: %var = alloca {}, align 8
|
||||
// CHECK:STDOUT: %x = alloca {}, align 8
|
||||
// CHECK:STDOUT: call void @Foo()
|
||||
// CHECK:STDOUT: %call.result = alloca {}, align 8
|
||||
// CHECK:STDOUT: %1 = load {}, ptr %call.result, align 1
|
||||
// CHECK:STDOUT: %Bar = call {} @Bar({} %1)
|
||||
// CHECK:STDOUT: store {} %Bar, ptr %var, align 1
|
||||
// CHECK:STDOUT: store {} %Bar, ptr %x, align 1
|
||||
// CHECK:STDOUT: ret void
|
||||
// CHECK:STDOUT: }
|
||||
|
||||
@@ -21,10 +21,10 @@ fn Main() {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: define void @Main() {
|
||||
// CHECK:STDOUT: %tuple = alloca {}, align 8
|
||||
// CHECK:STDOUT: %var = alloca {}, align 8
|
||||
// CHECK:STDOUT: %b = alloca {}, align 8
|
||||
// CHECK:STDOUT: call void @MakeImplicitEmptyTuple()
|
||||
// CHECK:STDOUT: %call.result = alloca {}, align 8
|
||||
// CHECK:STDOUT: %1 = load {}, ptr %call.result, align 1
|
||||
// CHECK:STDOUT: store {} %1, ptr %var, align 1
|
||||
// CHECK:STDOUT: store {} %1, ptr %b, align 1
|
||||
// CHECK:STDOUT: ret void
|
||||
// CHECK:STDOUT: }
|
||||
|
||||
@@ -19,9 +19,9 @@ fn Main() {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: define void @Main() {
|
||||
// CHECK:STDOUT: %var = alloca i32, align 4
|
||||
// CHECK:STDOUT: store i32 0, ptr %var, align 4
|
||||
// CHECK:STDOUT: %1 = load i32, ptr %var, align 4
|
||||
// CHECK:STDOUT: %a = alloca i32, align 4
|
||||
// CHECK:STDOUT: store i32 0, ptr %a, align 4
|
||||
// CHECK:STDOUT: %1 = load i32, ptr %a, align 4
|
||||
// CHECK:STDOUT: call void @DoNothing(i32 %1)
|
||||
// CHECK:STDOUT: %call.result = alloca {}, align 8
|
||||
// CHECK:STDOUT: ret void
|
||||
|
||||
+13
-13
@@ -47,7 +47,7 @@ fn Run() {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: define void @Run() {
|
||||
// CHECK:STDOUT: %var = alloca [2 x i32], align 4
|
||||
// CHECK:STDOUT: %a = alloca [2 x i32], align 4
|
||||
// CHECK:STDOUT: %A = call { i32, i32 } @A()
|
||||
// CHECK:STDOUT: %array = alloca [2 x i32], align 4
|
||||
// CHECK:STDOUT: %array.element = extractvalue { i32, i32 } %A, 0
|
||||
@@ -57,19 +57,19 @@ fn Run() {
|
||||
// CHECK:STDOUT: %2 = getelementptr inbounds [2 x i32], ptr %array, i32 0, i32 1
|
||||
// CHECK:STDOUT: store i32 %array.element1, ptr %2, align 4
|
||||
// CHECK:STDOUT: %3 = load [2 x i32], ptr %array, align 4
|
||||
// CHECK:STDOUT: store [2 x i32] %3, ptr %var, align 4
|
||||
// CHECK:STDOUT: %var2 = alloca i32, align 4
|
||||
// CHECK:STDOUT: %A3 = call { i32, i32 } @A()
|
||||
// CHECK:STDOUT: %tuple.index = extractvalue { i32, i32 } %A3, 0
|
||||
// CHECK:STDOUT: store i32 %tuple.index, ptr %var2, align 4
|
||||
// CHECK:STDOUT: %var4 = alloca i32, align 4
|
||||
// CHECK:STDOUT: %4 = load i32, ptr %var2, align 4
|
||||
// CHECK:STDOUT: %array.index = getelementptr inbounds [2 x i32], ptr %var, i32 %4
|
||||
// CHECK:STDOUT: store [2 x i32] %3, ptr %a, align 4
|
||||
// CHECK:STDOUT: %b = alloca i32, align 4
|
||||
// CHECK:STDOUT: %A2 = call { i32, i32 } @A()
|
||||
// CHECK:STDOUT: %tuple.index = extractvalue { i32, i32 } %A2, 0
|
||||
// CHECK:STDOUT: store i32 %tuple.index, ptr %b, align 4
|
||||
// CHECK:STDOUT: %c = alloca i32, align 4
|
||||
// CHECK:STDOUT: %4 = load i32, ptr %b, align 4
|
||||
// CHECK:STDOUT: %array.index = getelementptr inbounds [2 x i32], ptr %a, i32 %4
|
||||
// CHECK:STDOUT: %5 = load i32, ptr %array.index, align 4
|
||||
// CHECK:STDOUT: store i32 %5, ptr %var4, align 4
|
||||
// CHECK:STDOUT: %var5 = alloca i32, align 4
|
||||
// CHECK:STDOUT: store i32 %5, ptr %c, align 4
|
||||
// CHECK:STDOUT: %d = alloca i32, align 4
|
||||
// CHECK:STDOUT: %B = call [2 x i32] @B()
|
||||
// CHECK:STDOUT: %array.index6 = extractvalue [2 x i32] %B, 1
|
||||
// CHECK:STDOUT: store i32 %array.index6, ptr %var5, align 4
|
||||
// CHECK:STDOUT: %array.index3 = extractvalue [2 x i32] %B, 1
|
||||
// CHECK:STDOUT: store i32 %array.index3, ptr %d, align 4
|
||||
// CHECK:STDOUT: ret void
|
||||
// CHECK:STDOUT: }
|
||||
|
||||
@@ -24,7 +24,7 @@ fn Run() -> i32 {
|
||||
// CHECK:STDOUT: store %type zeroinitializer, ptr %2, align 1
|
||||
// CHECK:STDOUT: %3 = getelementptr inbounds { %type, %type, %type }, ptr %tuple, i32 0, i32 2
|
||||
// CHECK:STDOUT: store %type zeroinitializer, ptr %3, align 1
|
||||
// CHECK:STDOUT: %var = alloca { i32, i32, i32 }, align 8
|
||||
// CHECK:STDOUT: %a = alloca { i32, i32, i32 }, align 8
|
||||
// CHECK:STDOUT: %tuple1 = alloca { i32, i32, i32 }, align 8
|
||||
// CHECK:STDOUT: %4 = getelementptr inbounds { i32, i32, i32 }, ptr %tuple1, i32 0, i32 0
|
||||
// CHECK:STDOUT: store i32 0, ptr %4, align 4
|
||||
@@ -33,14 +33,14 @@ fn Run() -> i32 {
|
||||
// CHECK:STDOUT: %6 = getelementptr inbounds { i32, i32, i32 }, ptr %tuple1, i32 0, i32 2
|
||||
// CHECK:STDOUT: store i32 2, ptr %6, align 4
|
||||
// CHECK:STDOUT: %7 = load { i32, i32, i32 }, ptr %tuple1, align 4
|
||||
// CHECK:STDOUT: store { i32, i32, i32 } %7, ptr %var, align 4
|
||||
// CHECK:STDOUT: %var2 = alloca i32, align 4
|
||||
// CHECK:STDOUT: %tuple.index = getelementptr inbounds { i32, i32, i32 }, ptr %var, i32 0, i32 0
|
||||
// CHECK:STDOUT: store { i32, i32, i32 } %7, ptr %a, align 4
|
||||
// CHECK:STDOUT: %b = alloca i32, align 4
|
||||
// CHECK:STDOUT: %tuple.index = getelementptr inbounds { i32, i32, i32 }, ptr %a, i32 0, i32 0
|
||||
// CHECK:STDOUT: %8 = load i32, ptr %tuple.index, align 4
|
||||
// CHECK:STDOUT: store i32 %8, ptr %var2, align 4
|
||||
// CHECK:STDOUT: %var3 = alloca i32, align 4
|
||||
// CHECK:STDOUT: %tuple.index4 = getelementptr inbounds { i32, i32, i32 }, ptr %var, i32 0, i32 2
|
||||
// CHECK:STDOUT: %9 = load i32, ptr %tuple.index4, align 4
|
||||
// CHECK:STDOUT: store i32 %9, ptr %var3, align 4
|
||||
// CHECK:STDOUT: store i32 %8, ptr %b, align 4
|
||||
// CHECK:STDOUT: %c = alloca i32, align 4
|
||||
// CHECK:STDOUT: %tuple.index2 = getelementptr inbounds { i32, i32, i32 }, ptr %a, i32 0, i32 2
|
||||
// CHECK:STDOUT: %9 = load i32, ptr %tuple.index2, align 4
|
||||
// CHECK:STDOUT: store i32 %9, ptr %c, align 4
|
||||
// CHECK:STDOUT: ret i32 0
|
||||
// CHECK:STDOUT: }
|
||||
|
||||
@@ -24,9 +24,9 @@ fn Run() {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: define void @Run() {
|
||||
// CHECK:STDOUT: %var = alloca i32, align 4
|
||||
// CHECK:STDOUT: %t = alloca i32, align 4
|
||||
// CHECK:STDOUT: %F = call { i32, i32 } @F()
|
||||
// CHECK:STDOUT: %tuple.index = extractvalue { i32, i32 } %F, 1
|
||||
// CHECK:STDOUT: store i32 %tuple.index, ptr %var, align 4
|
||||
// CHECK:STDOUT: store i32 %tuple.index, ptr %t, align 4
|
||||
// CHECK:STDOUT: ret void
|
||||
// CHECK:STDOUT: }
|
||||
|
||||
+9
-9
@@ -17,21 +17,21 @@ fn Main() {
|
||||
// CHECK:STDOUT: %type = type {}
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: define void @Main() {
|
||||
// CHECK:STDOUT: %var = alloca i32, align 4
|
||||
// CHECK:STDOUT: store i32 12, ptr %var, align 4
|
||||
// CHECK:STDOUT: store i32 -7, ptr %var, align 4
|
||||
// CHECK:STDOUT: %a = alloca i32, align 4
|
||||
// CHECK:STDOUT: store i32 12, ptr %a, align 4
|
||||
// CHECK:STDOUT: store i32 -7, ptr %a, align 4
|
||||
// CHECK:STDOUT: %tuple = alloca { %type, %type }, align 8
|
||||
// CHECK:STDOUT: %1 = getelementptr inbounds { %type, %type }, ptr %tuple, i32 0, i32 0
|
||||
// CHECK:STDOUT: store %type zeroinitializer, ptr %1, align 1
|
||||
// CHECK:STDOUT: %2 = getelementptr inbounds { %type, %type }, ptr %tuple, i32 0, i32 1
|
||||
// CHECK:STDOUT: store %type zeroinitializer, ptr %2, align 1
|
||||
// CHECK:STDOUT: %var1 = alloca { i32, i32 }, align 8
|
||||
// CHECK:STDOUT: %tuple2 = alloca { i32, i32 }, align 8
|
||||
// CHECK:STDOUT: %3 = getelementptr inbounds { i32, i32 }, ptr %tuple2, i32 0, i32 0
|
||||
// CHECK:STDOUT: %b = alloca { i32, i32 }, align 8
|
||||
// CHECK:STDOUT: %tuple1 = alloca { i32, i32 }, align 8
|
||||
// CHECK:STDOUT: %3 = getelementptr inbounds { i32, i32 }, ptr %tuple1, i32 0, i32 0
|
||||
// CHECK:STDOUT: store i32 1, ptr %3, align 4
|
||||
// CHECK:STDOUT: %4 = getelementptr inbounds { i32, i32 }, ptr %tuple2, i32 0, i32 1
|
||||
// CHECK:STDOUT: %4 = getelementptr inbounds { i32, i32 }, ptr %tuple1, i32 0, i32 1
|
||||
// CHECK:STDOUT: store i32 2, ptr %4, align 4
|
||||
// CHECK:STDOUT: %5 = load { i32, i32 }, ptr %tuple2, align 4
|
||||
// CHECK:STDOUT: store { i32, i32 } %5, ptr %var1, align 4
|
||||
// CHECK:STDOUT: %5 = load { i32, i32 }, ptr %tuple1, align 4
|
||||
// CHECK:STDOUT: store { i32, i32 } %5, ptr %b, align 4
|
||||
// CHECK:STDOUT: ret void
|
||||
// CHECK:STDOUT: }
|
||||
|
||||
@@ -18,15 +18,15 @@ fn F() {
|
||||
// CHECK:STDOUT: declare void @G(ptr)
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: define void @F() {
|
||||
// CHECK:STDOUT: %var = alloca { i32, i32 }, align 8
|
||||
// CHECK:STDOUT: %s = alloca { i32, i32 }, align 8
|
||||
// CHECK:STDOUT: %struct = alloca { i32, i32 }, align 8
|
||||
// CHECK:STDOUT: %a = getelementptr inbounds { i32, i32 }, ptr %struct, i32 0, i32 0
|
||||
// CHECK:STDOUT: store i32 1, ptr %a, align 4
|
||||
// CHECK:STDOUT: %b = getelementptr inbounds { i32, i32 }, ptr %struct, i32 0, i32 1
|
||||
// CHECK:STDOUT: store i32 2, ptr %b, align 4
|
||||
// CHECK:STDOUT: %1 = load { i32, i32 }, ptr %struct, align 4
|
||||
// CHECK:STDOUT: store { i32, i32 } %1, ptr %var, align 4
|
||||
// CHECK:STDOUT: %b1 = getelementptr inbounds { i32, i32 }, ptr %var, i32 0, i32 1
|
||||
// CHECK:STDOUT: store { i32, i32 } %1, ptr %s, align 4
|
||||
// CHECK:STDOUT: %b1 = getelementptr inbounds { i32, i32 }, ptr %s, i32 0, i32 1
|
||||
// CHECK:STDOUT: %2 = load ptr, ptr %b1, align 8
|
||||
// CHECK:STDOUT: call void @G(ptr %2)
|
||||
// CHECK:STDOUT: %call.result = alloca {}, align 8
|
||||
|
||||
+3
-3
@@ -22,9 +22,9 @@ fn F() -> i32 {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: define i32 @F() {
|
||||
// CHECK:STDOUT: %var = alloca i32, align 4
|
||||
// CHECK:STDOUT: store i32 0, ptr %var, align 4
|
||||
// CHECK:STDOUT: %1 = load ptr, ptr %var, align 8
|
||||
// CHECK:STDOUT: %n = alloca i32, align 4
|
||||
// CHECK:STDOUT: store i32 0, ptr %n, align 4
|
||||
// CHECK:STDOUT: %1 = load ptr, ptr %n, align 8
|
||||
// CHECK:STDOUT: %G = call i32 @G(ptr %1)
|
||||
// CHECK:STDOUT: ret i32 %G
|
||||
// CHECK:STDOUT: }
|
||||
|
||||
+3
-3
@@ -13,8 +13,8 @@ fn Main() -> i32 {
|
||||
// CHECK:STDOUT: source_filename = "var.carbon"
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: define i32 @Main() {
|
||||
// CHECK:STDOUT: %var = alloca i32, align 4
|
||||
// CHECK:STDOUT: store i32 0, ptr %var, align 4
|
||||
// CHECK:STDOUT: %1 = load i32, ptr %var, align 4
|
||||
// CHECK:STDOUT: %x = alloca i32, align 4
|
||||
// CHECK:STDOUT: store i32 0, ptr %x, align 4
|
||||
// CHECK:STDOUT: %1 = load i32, ptr %x, align 4
|
||||
// CHECK:STDOUT: ret i32 %1
|
||||
// CHECK:STDOUT: }
|
||||
|
||||
+5
-5
@@ -15,13 +15,13 @@ fn Run() -> i32 {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: define i32 @Run() {
|
||||
// CHECK:STDOUT: %struct = alloca {}, align 8
|
||||
// CHECK:STDOUT: %var = alloca {}, align 8
|
||||
// CHECK:STDOUT: %x = alloca {}, align 8
|
||||
// CHECK:STDOUT: %struct1 = alloca {}, align 8
|
||||
// CHECK:STDOUT: %1 = load {}, ptr %struct1, align 1
|
||||
// CHECK:STDOUT: store {} %1, ptr %var, align 1
|
||||
// CHECK:STDOUT: store {} %1, ptr %x, align 1
|
||||
// CHECK:STDOUT: %struct2 = alloca {}, align 8
|
||||
// CHECK:STDOUT: %var3 = alloca {}, align 8
|
||||
// CHECK:STDOUT: %2 = load {}, ptr %var, align 1
|
||||
// CHECK:STDOUT: store {} %2, ptr %var3, align 1
|
||||
// CHECK:STDOUT: %y = alloca {}, align 8
|
||||
// CHECK:STDOUT: %2 = load {}, ptr %x, align 1
|
||||
// CHECK:STDOUT: store {} %2, ptr %y, align 1
|
||||
// CHECK:STDOUT: ret i32 0
|
||||
// CHECK:STDOUT: }
|
||||
|
||||
+9
-9
@@ -15,20 +15,20 @@ fn Run() -> i32 {
|
||||
// CHECK:STDOUT: source_filename = "member_access.carbon"
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: define i32 @Run() {
|
||||
// CHECK:STDOUT: %var = alloca { double, i32 }, align 8
|
||||
// CHECK:STDOUT: %x = alloca { double, i32 }, align 8
|
||||
// CHECK:STDOUT: %struct = alloca { double, i32 }, align 8
|
||||
// CHECK:STDOUT: %a = getelementptr inbounds { double, i32 }, ptr %struct, i32 0, i32 0
|
||||
// CHECK:STDOUT: store double 0.000000e+00, ptr %a, align 8
|
||||
// CHECK:STDOUT: %b = getelementptr inbounds { double, i32 }, ptr %struct, i32 0, i32 1
|
||||
// CHECK:STDOUT: store i32 1, ptr %b, align 4
|
||||
// CHECK:STDOUT: %1 = load { double, i32 }, ptr %struct, align 8
|
||||
// CHECK:STDOUT: store { double, i32 } %1, ptr %var, align 8
|
||||
// CHECK:STDOUT: %var1 = alloca i32, align 4
|
||||
// CHECK:STDOUT: %b2 = getelementptr inbounds { double, i32 }, ptr %var, i32 0, i32 1
|
||||
// CHECK:STDOUT: %2 = load i32, ptr %b2, align 4
|
||||
// CHECK:STDOUT: store i32 %2, ptr %var1, align 4
|
||||
// CHECK:STDOUT: %var3 = alloca i32, align 4
|
||||
// CHECK:STDOUT: %3 = load i32, ptr %var1, align 4
|
||||
// CHECK:STDOUT: store i32 %3, ptr %var3, align 4
|
||||
// CHECK:STDOUT: store { double, i32 } %1, ptr %x, align 8
|
||||
// CHECK:STDOUT: %y = alloca i32, align 4
|
||||
// CHECK:STDOUT: %b1 = getelementptr inbounds { double, i32 }, ptr %x, i32 0, i32 1
|
||||
// CHECK:STDOUT: %2 = load i32, ptr %b1, align 4
|
||||
// CHECK:STDOUT: store i32 %2, ptr %y, align 4
|
||||
// CHECK:STDOUT: %z = alloca i32, align 4
|
||||
// CHECK:STDOUT: %3 = load i32, ptr %y, align 4
|
||||
// CHECK:STDOUT: store i32 %3, ptr %z, align 4
|
||||
// CHECK:STDOUT: ret i32 0
|
||||
// CHECK:STDOUT: }
|
||||
|
||||
+5
-5
@@ -14,14 +14,14 @@ fn Run() -> i32 {
|
||||
// CHECK:STDOUT: source_filename = "one_entry.carbon"
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: define i32 @Run() {
|
||||
// CHECK:STDOUT: %var = alloca { i32 }, align 8
|
||||
// CHECK:STDOUT: %x = alloca { i32 }, align 8
|
||||
// CHECK:STDOUT: %struct = alloca { i32 }, align 8
|
||||
// CHECK:STDOUT: %a = getelementptr inbounds { i32 }, ptr %struct, i32 0, i32 0
|
||||
// CHECK:STDOUT: store i32 4, ptr %a, align 4
|
||||
// CHECK:STDOUT: %1 = load { i32 }, ptr %struct, align 4
|
||||
// CHECK:STDOUT: store { i32 } %1, ptr %var, align 4
|
||||
// CHECK:STDOUT: %var1 = alloca { i32 }, align 8
|
||||
// CHECK:STDOUT: %2 = load { i32 }, ptr %var, align 4
|
||||
// CHECK:STDOUT: store { i32 } %2, ptr %var1, align 4
|
||||
// CHECK:STDOUT: store { i32 } %1, ptr %x, align 4
|
||||
// CHECK:STDOUT: %y = alloca { i32 }, align 8
|
||||
// CHECK:STDOUT: %2 = load { i32 }, ptr %x, align 4
|
||||
// CHECK:STDOUT: store { i32 } %2, ptr %y, align 4
|
||||
// CHECK:STDOUT: ret i32 0
|
||||
// CHECK:STDOUT: }
|
||||
|
||||
+5
-5
@@ -14,16 +14,16 @@ fn Run() -> i32 {
|
||||
// CHECK:STDOUT: source_filename = "two_entries.carbon"
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: define i32 @Run() {
|
||||
// CHECK:STDOUT: %var = alloca { i32, i32 }, align 8
|
||||
// CHECK:STDOUT: %x = alloca { i32, i32 }, align 8
|
||||
// CHECK:STDOUT: %struct = alloca { i32, i32 }, align 8
|
||||
// CHECK:STDOUT: %a = getelementptr inbounds { i32, i32 }, ptr %struct, i32 0, i32 0
|
||||
// CHECK:STDOUT: store i32 1, ptr %a, align 4
|
||||
// CHECK:STDOUT: %b = getelementptr inbounds { i32, i32 }, ptr %struct, i32 0, i32 1
|
||||
// CHECK:STDOUT: store i32 2, ptr %b, align 4
|
||||
// CHECK:STDOUT: %1 = load { i32, i32 }, ptr %struct, align 4
|
||||
// CHECK:STDOUT: store { i32, i32 } %1, ptr %var, align 4
|
||||
// CHECK:STDOUT: %var1 = alloca { i32, i32 }, align 8
|
||||
// CHECK:STDOUT: %2 = load { i32, i32 }, ptr %var, align 4
|
||||
// CHECK:STDOUT: store { i32, i32 } %2, ptr %var1, align 4
|
||||
// CHECK:STDOUT: store { i32, i32 } %1, ptr %x, align 4
|
||||
// CHECK:STDOUT: %y = alloca { i32, i32 }, align 8
|
||||
// CHECK:STDOUT: %2 = load { i32, i32 }, ptr %x, align 4
|
||||
// CHECK:STDOUT: store { i32, i32 } %2, ptr %y, align 4
|
||||
// CHECK:STDOUT: ret i32 0
|
||||
// CHECK:STDOUT: }
|
||||
|
||||
+5
-5
@@ -15,13 +15,13 @@ fn Run() -> i32 {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: define i32 @Run() {
|
||||
// CHECK:STDOUT: %tuple = alloca {}, align 8
|
||||
// CHECK:STDOUT: %var = alloca {}, align 8
|
||||
// CHECK:STDOUT: %x = alloca {}, align 8
|
||||
// CHECK:STDOUT: %tuple1 = alloca {}, align 8
|
||||
// CHECK:STDOUT: %1 = load {}, ptr %tuple1, align 1
|
||||
// CHECK:STDOUT: store {} %1, ptr %var, align 1
|
||||
// CHECK:STDOUT: store {} %1, ptr %x, align 1
|
||||
// CHECK:STDOUT: %tuple2 = alloca {}, align 8
|
||||
// CHECK:STDOUT: %var3 = alloca {}, align 8
|
||||
// CHECK:STDOUT: %2 = load {}, ptr %var, align 1
|
||||
// CHECK:STDOUT: store {} %2, ptr %var3, align 1
|
||||
// CHECK:STDOUT: %y = alloca {}, align 8
|
||||
// CHECK:STDOUT: %2 = load {}, ptr %x, align 1
|
||||
// CHECK:STDOUT: store {} %2, ptr %y, align 1
|
||||
// CHECK:STDOUT: ret i32 0
|
||||
// CHECK:STDOUT: }
|
||||
|
||||
+5
-5
@@ -19,17 +19,17 @@ fn Run() -> i32 {
|
||||
// CHECK:STDOUT: %tuple = alloca { %type }, align 8
|
||||
// CHECK:STDOUT: %1 = getelementptr inbounds { %type }, ptr %tuple, i32 0, i32 0
|
||||
// CHECK:STDOUT: store %type zeroinitializer, ptr %1, align 1
|
||||
// CHECK:STDOUT: %var = alloca { i32 }, align 8
|
||||
// CHECK:STDOUT: %x = alloca { i32 }, align 8
|
||||
// CHECK:STDOUT: %tuple1 = alloca { i32 }, align 8
|
||||
// CHECK:STDOUT: %2 = getelementptr inbounds { i32 }, ptr %tuple1, i32 0, i32 0
|
||||
// CHECK:STDOUT: store i32 1, ptr %2, align 4
|
||||
// CHECK:STDOUT: %3 = load { i32 }, ptr %tuple1, align 4
|
||||
// CHECK:STDOUT: store { i32 } %3, ptr %var, align 4
|
||||
// CHECK:STDOUT: store { i32 } %3, ptr %x, align 4
|
||||
// CHECK:STDOUT: %tuple2 = alloca { %type }, align 8
|
||||
// CHECK:STDOUT: %4 = getelementptr inbounds { %type }, ptr %tuple2, i32 0, i32 0
|
||||
// CHECK:STDOUT: store %type zeroinitializer, ptr %4, align 1
|
||||
// CHECK:STDOUT: %var3 = alloca { i32 }, align 8
|
||||
// CHECK:STDOUT: %5 = load { i32 }, ptr %var, align 4
|
||||
// CHECK:STDOUT: store { i32 } %5, ptr %var3, align 4
|
||||
// CHECK:STDOUT: %y = alloca { i32 }, align 8
|
||||
// CHECK:STDOUT: %5 = load { i32 }, ptr %x, align 4
|
||||
// CHECK:STDOUT: store { i32 } %5, ptr %y, align 4
|
||||
// CHECK:STDOUT: ret i32 0
|
||||
// CHECK:STDOUT: }
|
||||
|
||||
+5
-5
@@ -21,21 +21,21 @@ fn Run() -> i32 {
|
||||
// CHECK:STDOUT: store %type zeroinitializer, ptr %1, align 1
|
||||
// CHECK:STDOUT: %2 = getelementptr inbounds { %type, %type }, ptr %tuple, i32 0, i32 1
|
||||
// CHECK:STDOUT: store %type zeroinitializer, ptr %2, align 1
|
||||
// CHECK:STDOUT: %var = alloca { i32, i32 }, align 8
|
||||
// CHECK:STDOUT: %x = alloca { i32, i32 }, align 8
|
||||
// CHECK:STDOUT: %tuple1 = alloca { i32, i32 }, align 8
|
||||
// CHECK:STDOUT: %3 = getelementptr inbounds { i32, i32 }, ptr %tuple1, i32 0, i32 0
|
||||
// CHECK:STDOUT: store i32 12, ptr %3, align 4
|
||||
// CHECK:STDOUT: %4 = getelementptr inbounds { i32, i32 }, ptr %tuple1, i32 0, i32 1
|
||||
// CHECK:STDOUT: store i32 7, ptr %4, align 4
|
||||
// CHECK:STDOUT: %5 = load { i32, i32 }, ptr %tuple1, align 4
|
||||
// CHECK:STDOUT: store { i32, i32 } %5, ptr %var, align 4
|
||||
// CHECK:STDOUT: store { i32, i32 } %5, ptr %x, align 4
|
||||
// CHECK:STDOUT: %tuple2 = alloca { %type, %type }, align 8
|
||||
// CHECK:STDOUT: %6 = getelementptr inbounds { %type, %type }, ptr %tuple2, i32 0, i32 0
|
||||
// CHECK:STDOUT: store %type zeroinitializer, ptr %6, align 1
|
||||
// CHECK:STDOUT: %7 = getelementptr inbounds { %type, %type }, ptr %tuple2, i32 0, i32 1
|
||||
// CHECK:STDOUT: store %type zeroinitializer, ptr %7, align 1
|
||||
// CHECK:STDOUT: %var3 = alloca { i32, i32 }, align 8
|
||||
// CHECK:STDOUT: %8 = load { i32, i32 }, ptr %var, align 4
|
||||
// CHECK:STDOUT: store { i32, i32 } %8, ptr %var3, align 4
|
||||
// CHECK:STDOUT: %y = alloca { i32, i32 }, align 8
|
||||
// CHECK:STDOUT: %8 = load { i32, i32 }, ptr %x, align 4
|
||||
// CHECK:STDOUT: store { i32, i32 } %8, ptr %y, align 4
|
||||
// CHECK:STDOUT: ret i32 0
|
||||
// CHECK:STDOUT: }
|
||||
|
||||
+3
-3
@@ -13,8 +13,8 @@ fn Run() -> i32 {
|
||||
// CHECK:STDOUT: source_filename = "local.carbon"
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: define i32 @Run() {
|
||||
// CHECK:STDOUT: %var = alloca i32, align 4
|
||||
// CHECK:STDOUT: store i32 1, ptr %var, align 4
|
||||
// CHECK:STDOUT: %1 = load i32, ptr %var, align 4
|
||||
// CHECK:STDOUT: %x = alloca i32, align 4
|
||||
// CHECK:STDOUT: store i32 1, ptr %x, align 4
|
||||
// CHECK:STDOUT: %1 = load i32, ptr %x, align 4
|
||||
// CHECK:STDOUT: ret i32 %1
|
||||
// CHECK:STDOUT: }
|
||||
|
||||
@@ -91,8 +91,8 @@ auto SemanticsHandleFunctionDefinitionStart(SemanticsContext& context,
|
||||
for (auto ref_id :
|
||||
context.semantics_ir().GetNodeBlock(function.param_refs_id)) {
|
||||
auto ref = context.semantics_ir().GetNode(ref_id);
|
||||
auto [name_id, target_id] = ref.GetAsBindName();
|
||||
context.AddNameToLookup(ref.parse_node(), name_id, target_id);
|
||||
auto name_id = ref.GetAsVarStorage();
|
||||
context.AddNameToLookup(ref.parse_node(), name_id, ref_id);
|
||||
}
|
||||
|
||||
context.node_stack().Push(parse_node, function_id);
|
||||
|
||||
@@ -28,13 +28,8 @@ auto SemanticsHandlePatternBinding(SemanticsContext& context,
|
||||
context.node_stack().PopWithParseNode<ParseNodeKind::Name>();
|
||||
|
||||
// Allocate storage, linked to the name for error locations.
|
||||
auto storage_id =
|
||||
context.AddNode(SemanticsNode::VarStorage::Make(name_node, cast_type_id));
|
||||
|
||||
// Bind the name to storage.
|
||||
context.AddNodeAndPush(parse_node,
|
||||
SemanticsNode::BindName::Make(name_node, cast_type_id,
|
||||
name_id, storage_id));
|
||||
context.AddNodeAndPush(parse_node, SemanticsNode::VarStorage::Make(
|
||||
name_node, cast_type_id, name_id));
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -21,18 +21,17 @@ auto SemanticsHandleVariableDeclaration(SemanticsContext& context,
|
||||
}
|
||||
|
||||
// Get the storage and add it to name lookup.
|
||||
SemanticsNodeId binding_id =
|
||||
SemanticsNodeId var_id =
|
||||
context.node_stack().Pop<ParseNodeKind::PatternBinding>();
|
||||
auto binding = context.semantics_ir().GetNode(binding_id);
|
||||
auto [name_id, storage_id] = binding.GetAsBindName();
|
||||
context.AddNameToLookup(binding.parse_node(), name_id, storage_id);
|
||||
auto var = context.semantics_ir().GetNode(var_id);
|
||||
auto name_id = var.GetAsVarStorage();
|
||||
context.AddNameToLookup(var.parse_node(), name_id, var_id);
|
||||
// If there was an initializer, assign it to storage.
|
||||
if (has_init) {
|
||||
auto cast_value_id = context.ImplicitAsRequired(
|
||||
parse_node, expr_node_id,
|
||||
context.semantics_ir().GetNode(storage_id).type_id());
|
||||
auto cast_value_id =
|
||||
context.ImplicitAsRequired(parse_node, expr_node_id, var.type_id());
|
||||
context.AddNode(
|
||||
SemanticsNode::Assign::Make(parse_node, storage_id, cast_value_id));
|
||||
SemanticsNode::Assign::Make(parse_node, var_id, cast_value_id));
|
||||
}
|
||||
|
||||
context.node_stack()
|
||||
|
||||
@@ -226,7 +226,6 @@ static auto GetTypePrecedence(SemanticsNodeKind kind) -> int {
|
||||
case SemanticsNodeKind::ArrayValue:
|
||||
case SemanticsNodeKind::Assign:
|
||||
case SemanticsNodeKind::BinaryOperatorAdd:
|
||||
case SemanticsNodeKind::BindName:
|
||||
case SemanticsNodeKind::BlockArg:
|
||||
case SemanticsNodeKind::BoolLiteral:
|
||||
case SemanticsNodeKind::Branch:
|
||||
@@ -381,7 +380,6 @@ auto SemanticsIR::StringifyType(SemanticsTypeId type_id,
|
||||
case SemanticsNodeKind::ArrayValue:
|
||||
case SemanticsNodeKind::Assign:
|
||||
case SemanticsNodeKind::BinaryOperatorAdd:
|
||||
case SemanticsNodeKind::BindName:
|
||||
case SemanticsNodeKind::BlockArg:
|
||||
case SemanticsNodeKind::BoolLiteral:
|
||||
case SemanticsNodeKind::Branch:
|
||||
@@ -459,12 +457,6 @@ auto GetSemanticsExpressionCategory(const SemanticsIR& semantics_ir,
|
||||
// TODO: This should eventually be Initializing.
|
||||
return SemanticsExpressionCategory::Value;
|
||||
|
||||
case SemanticsNodeKind::BindName: {
|
||||
auto [name_id, value_id] = node.GetAsBindName();
|
||||
node_id = value_id;
|
||||
continue;
|
||||
}
|
||||
|
||||
case SemanticsNodeKind::AddressOf:
|
||||
case SemanticsNodeKind::ArrayType:
|
||||
case SemanticsNodeKind::BinaryOperatorAdd:
|
||||
|
||||
@@ -24,7 +24,7 @@ struct SemanticsFunction {
|
||||
}
|
||||
if (!body_block_ids.empty()) {
|
||||
out << llvm::formatv(
|
||||
", body: {{{0}}}",
|
||||
", body: [{0}]",
|
||||
llvm::make_range(body_block_ids.begin(), body_block_ids.end()));
|
||||
}
|
||||
out << "}";
|
||||
|
||||
@@ -326,20 +326,10 @@ class NodeNamer {
|
||||
|
||||
Scope& scope = GetScopeInfo(scope_idx);
|
||||
|
||||
// Use bound names where available. The BindName node appears after the node
|
||||
// that it's giving a name to, so we need to do this before assigning
|
||||
// fallback names.
|
||||
// Use bound names where available. Otherwise, assign a backup name.
|
||||
for (auto node_id : semantics_ir_.GetNodeBlock(block_id)) {
|
||||
auto node = semantics_ir_.GetNode(node_id);
|
||||
switch (node.kind()) {
|
||||
case SemanticsNodeKind::BindName: {
|
||||
auto [name_id, named_node_id] = node.GetAsBindName();
|
||||
nodes[named_node_id.index] = {
|
||||
scope_idx,
|
||||
scope.nodes.AllocateName(*this, node.parse_node(),
|
||||
semantics_ir_.GetString(name_id).str())};
|
||||
break;
|
||||
}
|
||||
case SemanticsNodeKind::Branch: {
|
||||
auto dest_id = node.GetAsBranch();
|
||||
AddBlockLabel(scope_idx, dest_id, node);
|
||||
@@ -355,20 +345,24 @@ class NodeNamer {
|
||||
AddBlockLabel(scope_idx, dest_id, node);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
case SemanticsNodeKind::VarStorage: {
|
||||
// TODO: Eventually this name will be optional, and we'll want to
|
||||
// provide something like `var` as a default. However, that's not
|
||||
// possible right now so cannot be tested.
|
||||
auto name_id = node.GetAsVarStorage();
|
||||
nodes[node_id.index] = {
|
||||
scope_idx,
|
||||
scope.nodes.AllocateName(*this, node.parse_node(),
|
||||
semantics_ir_.GetString(name_id).str())};
|
||||
break;
|
||||
}
|
||||
default: {
|
||||
// Sequentially number all remaining values.
|
||||
if (node.kind().value_kind() != SemanticsNodeValueKind::None) {
|
||||
nodes[node_id.index] = {
|
||||
scope_idx, scope.nodes.AllocateName(*this, node.parse_node())};
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// Sequentially number all remaining values.
|
||||
for (auto node_id : semantics_ir_.GetNodeBlock(block_id)) {
|
||||
auto node = semantics_ir_.GetNode(node_id);
|
||||
if (node.kind() != SemanticsNodeKind::BindName &&
|
||||
node.kind().value_kind() != SemanticsNodeValueKind::None) {
|
||||
auto& name = nodes[node_id.index];
|
||||
if (!name.second) {
|
||||
name = {scope_idx,
|
||||
scope.nodes.AllocateName(*this, node.parse_node())};
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -429,11 +423,9 @@ class SemanticsIRFormatter {
|
||||
for (const SemanticsNodeId param_id :
|
||||
semantics_ir_.GetNodeBlock(fn.param_refs_id)) {
|
||||
out_ << sep;
|
||||
auto param = semantics_ir_.GetNode(param_id);
|
||||
auto [name_id, node_id] = param.GetAsBindName();
|
||||
FormatNodeName(node_id);
|
||||
FormatNodeName(param_id);
|
||||
out_ << ": ";
|
||||
FormatType(param.type_id());
|
||||
FormatType(semantics_ir_.GetNode(param_id).type_id());
|
||||
}
|
||||
out_ << ")";
|
||||
if (fn.return_type_id.is_valid()) {
|
||||
@@ -521,15 +513,6 @@ class SemanticsIRFormatter {
|
||||
FormatArgs(Kind::Get(node));
|
||||
}
|
||||
|
||||
// BindName is handled by the NodeNamer and doesn't appear in the output.
|
||||
// These nodes are currently used simply to give a name to another node, and
|
||||
// are never referenced themselves.
|
||||
// TODO: Include BindName nodes in the output if we start referring to them.
|
||||
template <>
|
||||
auto FormatInstruction<SemanticsNode::BindName>(SemanticsNodeId /*node_id*/,
|
||||
SemanticsNode /*node*/)
|
||||
-> void {}
|
||||
|
||||
template <>
|
||||
auto FormatInstructionRHS<SemanticsNode::BlockArg>(SemanticsNode node)
|
||||
-> void {
|
||||
|
||||
@@ -25,11 +25,13 @@ using ::testing::ElementsAre;
|
||||
using ::testing::IsEmpty;
|
||||
using ::testing::MatchesRegex;
|
||||
using ::testing::Pair;
|
||||
using ::testing::SizeIs;
|
||||
|
||||
TEST(SemanticsIRTest, YAML) {
|
||||
llvm::vfs::InMemoryFileSystem fs;
|
||||
CARBON_CHECK(fs.addFile("test.carbon", /*ModificationTime=*/0,
|
||||
llvm::MemoryBuffer::getMemBuffer("var x: i32 = 0;")));
|
||||
CARBON_CHECK(fs.addFile(
|
||||
"test.carbon", /*ModificationTime=*/0,
|
||||
llvm::MemoryBuffer::getMemBuffer("fn F() { var x: i32 = 0; return; }")));
|
||||
TestRawOstream print_stream;
|
||||
Driver d(fs, print_stream, llvm::errs());
|
||||
d.RunCommand(
|
||||
@@ -45,10 +47,10 @@ TEST(SemanticsIRTest, YAML) {
|
||||
Yaml::Value::FromText(print_stream.TakeStr()),
|
||||
ElementsAre(Yaml::Mapping(ElementsAre(
|
||||
Pair("cross_reference_irs_size", "1"),
|
||||
Pair("functions", Yaml::Sequence(IsEmpty())),
|
||||
Pair("functions", Yaml::Sequence(SizeIs(1))),
|
||||
Pair("integer_literals", Yaml::Sequence(ElementsAre("0"))),
|
||||
Pair("real_literals", Yaml::Sequence(IsEmpty())),
|
||||
Pair("strings", Yaml::Sequence(ElementsAre("x"))),
|
||||
Pair("strings", Yaml::Sequence(ElementsAre("F", "x"))),
|
||||
Pair("types", Yaml::Sequence(ElementsAre(node_builtin))),
|
||||
Pair("type_blocks", Yaml::Sequence(IsEmpty())),
|
||||
Pair("nodes",
|
||||
@@ -56,19 +58,19 @@ TEST(SemanticsIRTest, YAML) {
|
||||
// kind is required, other parts are optional.
|
||||
Each(Yaml::Mapping(Contains(Pair("kind", _)))),
|
||||
// A 0-arg node.
|
||||
Contains(Yaml::Mapping(ElementsAre(
|
||||
Pair("kind", "VarStorage"), Pair("type", type_id)))),
|
||||
Contains(Yaml::Mapping(ElementsAre(Pair("kind", "Return")))),
|
||||
// A 1-arg node.
|
||||
Contains(Yaml::Mapping(ElementsAre(
|
||||
Pair("kind", "IntegerLiteral"), Pair("arg0", "int0"),
|
||||
Pair("type", type_id)))),
|
||||
// A 2-arg node.
|
||||
Contains(Yaml::Mapping(ElementsAre(
|
||||
Pair("kind", "BindName"), Pair("arg0", "str0"),
|
||||
Pair("arg1", node_id), Pair("type", type_id))))))),
|
||||
// This production has only one node block.
|
||||
Pair("kind", "Assign"), Pair("arg0", node_id),
|
||||
Pair("arg1", node_id))))))),
|
||||
// This production has only two node blocks.
|
||||
Pair("node_blocks",
|
||||
Yaml::Sequence(ElementsAre(Yaml::Sequence(IsEmpty()),
|
||||
Yaml::Sequence(Each(node_id)),
|
||||
Yaml::Sequence(Each(node_id)))))))));
|
||||
}
|
||||
|
||||
|
||||
@@ -331,10 +331,6 @@ class SemanticsNode {
|
||||
SemanticsNodeId /*lhs_id*/,
|
||||
SemanticsNodeId /*rhs_id*/>;
|
||||
|
||||
using BindName = SemanticsNode::Factory<SemanticsNodeKind::BindName,
|
||||
SemanticsStringId /*name_id*/,
|
||||
SemanticsNodeId /*node_id*/>;
|
||||
|
||||
using BlockArg =
|
||||
Factory<SemanticsNodeKind::BlockArg, SemanticsNodeBlockId /*block_id*/>;
|
||||
|
||||
@@ -448,8 +444,10 @@ class SemanticsNode {
|
||||
using UnaryOperatorNot = Factory<SemanticsNodeKind::UnaryOperatorNot,
|
||||
SemanticsNodeId /*operand_id*/>;
|
||||
|
||||
using VarStorage = Factory<SemanticsNodeKind::VarStorage>;
|
||||
SemanticsNode()
|
||||
using VarStorage =
|
||||
Factory<SemanticsNodeKind::VarStorage, SemanticsStringId /*name_id*/>;
|
||||
|
||||
explicit SemanticsNode()
|
||||
: SemanticsNode(ParseTree::Node::Invalid, SemanticsNodeKind::Invalid,
|
||||
SemanticsTypeId::Invalid) {}
|
||||
|
||||
|
||||
@@ -51,7 +51,6 @@ CARBON_SEMANTICS_NODE_KIND_IMPL(ArrayType, "array_type", Typed, NotTerminator)
|
||||
CARBON_SEMANTICS_NODE_KIND_IMPL(ArrayValue, "array_value", Typed, NotTerminator)
|
||||
CARBON_SEMANTICS_NODE_KIND_IMPL(Assign, "assign", None, NotTerminator)
|
||||
CARBON_SEMANTICS_NODE_KIND_IMPL(BinaryOperatorAdd, "add", Typed, NotTerminator)
|
||||
CARBON_SEMANTICS_NODE_KIND_IMPL(BindName, "bind_name", Typed, NotTerminator)
|
||||
CARBON_SEMANTICS_NODE_KIND_IMPL(BlockArg, "block_arg", Typed, NotTerminator)
|
||||
CARBON_SEMANTICS_NODE_KIND_IMPL(BoolLiteral, "bool_literal", Typed, NotTerminator)
|
||||
CARBON_SEMANTICS_NODE_KIND_IMPL(Branch, "br", None, Terminator)
|
||||
|
||||
@@ -12,8 +12,8 @@ fn Run() {
|
||||
|
||||
// CHECK:STDOUT: cross_reference_irs_size: 1
|
||||
// CHECK:STDOUT: functions: [
|
||||
// CHECK:STDOUT: {name: str0, param_refs: block0, return_type: type2, body: {block3}}},
|
||||
// CHECK:STDOUT: {name: str1, param_refs: block0, body: {block5}}},
|
||||
// CHECK:STDOUT: {name: str0, param_refs: block0, return_type: type2, body: [block3]},
|
||||
// CHECK:STDOUT: {name: str1, param_refs: block0, body: [block5]},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: integer_literals: [
|
||||
// CHECK:STDOUT: 0,
|
||||
@@ -53,11 +53,10 @@ fn Run() {
|
||||
// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: function1},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int1, type: type1},
|
||||
// CHECK:STDOUT: {kind: ArrayType, arg0: node+10, arg1: type1, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type3},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str2, arg1: node+12, type: type3},
|
||||
// CHECK:STDOUT: {kind: VarStorage, arg0: str2, type: type3},
|
||||
// CHECK:STDOUT: {kind: Call, arg0: block0, arg1: function0, type: type2},
|
||||
// CHECK:STDOUT: {kind: ArrayValue, arg0: node+14, type: type3},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+12, arg1: node+15},
|
||||
// CHECK:STDOUT: {kind: ArrayValue, arg0: node+13, type: type3},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+12, arg1: node+14},
|
||||
// CHECK:STDOUT: {kind: Return},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: node_blocks: [
|
||||
@@ -91,7 +90,6 @@ fn Run() {
|
||||
// CHECK:STDOUT: node+14,
|
||||
// CHECK:STDOUT: node+15,
|
||||
// CHECK:STDOUT: node+16,
|
||||
// CHECK:STDOUT: node+17,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT:
|
||||
@@ -116,7 +114,7 @@ fn Run() {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %.loc10_16: i32 = int_literal 1
|
||||
// CHECK:STDOUT: %.loc10_17: type = array_type %.loc10_16, i32
|
||||
// CHECK:STDOUT: %t: [i32; 1] = var
|
||||
// CHECK:STDOUT: %t: [i32; 1] = var "t"
|
||||
// CHECK:STDOUT: %.loc10_22.1: (i32,) = call @F()
|
||||
// CHECK:STDOUT: %.loc10_22.2: [i32; 1] = array_value %.loc10_22.1
|
||||
// CHECK:STDOUT: assign %t, %.loc10_22.2
|
||||
|
||||
+14
-18
@@ -26,7 +26,7 @@ var b: [i32; 3] = a;
|
||||
// CHECK:STDOUT: node+3,
|
||||
// CHECK:STDOUT: nodeIntegerType,
|
||||
// CHECK:STDOUT: node+5,
|
||||
// CHECK:STDOUT: node+17,
|
||||
// CHECK:STDOUT: node+16,
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: type_blocks: [
|
||||
// CHECK:STDOUT: [
|
||||
@@ -47,22 +47,20 @@ var b: [i32; 3] = a;
|
||||
// CHECK:STDOUT: {kind: TupleType, arg0: typeBlock0, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: TupleValue, arg0: block2, type: type0},
|
||||
// CHECK:STDOUT: {kind: TupleType, arg0: typeBlock1, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type2},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node+6, type: type2},
|
||||
// CHECK:STDOUT: {kind: VarStorage, arg0: str0, type: type2},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int0, type: type1},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+8, type: type1},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+7, type: type1},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int1, type: type1},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+10, type: type1},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+9, type: type1},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int2, type: type1},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+12, type: type1},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+11, type: type1},
|
||||
// CHECK:STDOUT: {kind: TupleValue, arg0: block3, type: type2},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+6, arg1: node+14},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+6, arg1: node+13},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int3, type: type1},
|
||||
// CHECK:STDOUT: {kind: ArrayType, arg0: node+16, arg1: type1, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type3},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node+18, type: type3},
|
||||
// CHECK:STDOUT: {kind: ArrayType, arg0: node+15, arg1: type1, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: VarStorage, arg0: str1, type: type3},
|
||||
// CHECK:STDOUT: {kind: ArrayValue, arg0: node+6, type: type3},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+18, arg1: node+20},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+17, arg1: node+18},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: node_blocks: [
|
||||
// CHECK:STDOUT: [
|
||||
@@ -88,8 +86,6 @@ var b: [i32; 3] = a;
|
||||
// CHECK:STDOUT: node+17,
|
||||
// CHECK:STDOUT: node+18,
|
||||
// CHECK:STDOUT: node+19,
|
||||
// CHECK:STDOUT: node+20,
|
||||
// CHECK:STDOUT: node+21,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+0,
|
||||
@@ -97,9 +93,9 @@ var b: [i32; 3] = a;
|
||||
// CHECK:STDOUT: node+2,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+9,
|
||||
// CHECK:STDOUT: node+11,
|
||||
// CHECK:STDOUT: node+13,
|
||||
// CHECK:STDOUT: node+8,
|
||||
// CHECK:STDOUT: node+10,
|
||||
// CHECK:STDOUT: node+12,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT:
|
||||
@@ -110,7 +106,7 @@ var b: [i32; 3] = a;
|
||||
// CHECK:STDOUT: %.loc7_22.1: type = tuple_type (type, type, type)
|
||||
// CHECK:STDOUT: %.loc7_22.2: (type, type, type) = tuple_value (%.loc7_9, %.loc7_14, %.loc7_19)
|
||||
// CHECK:STDOUT: %.loc7_22.3: type = tuple_type (i32, i32, i32)
|
||||
// CHECK:STDOUT: %a: (i32, i32, i32) = var
|
||||
// CHECK:STDOUT: %a: (i32, i32, i32) = var "a"
|
||||
// CHECK:STDOUT: %.loc7_27.1: i32 = int_literal 1
|
||||
// CHECK:STDOUT: %.loc7_27.2: i32 = stub_reference %.loc7_27.1
|
||||
// CHECK:STDOUT: %.loc7_30.1: i32 = int_literal 2
|
||||
@@ -121,7 +117,7 @@ var b: [i32; 3] = a;
|
||||
// CHECK:STDOUT: assign %a, %.loc7_34
|
||||
// CHECK:STDOUT: %.loc8_14: i32 = int_literal 3
|
||||
// CHECK:STDOUT: %.loc8_15: type = array_type %.loc8_14, i32
|
||||
// CHECK:STDOUT: %b: [i32; 3] = var
|
||||
// CHECK:STDOUT: %b: [i32; 3] = var "b"
|
||||
// CHECK:STDOUT: %.loc7_5: [i32; 3] = array_value %a
|
||||
// CHECK:STDOUT: assign %b, %.loc7_5
|
||||
// CHECK:STDOUT: }
|
||||
|
||||
+35
-41
@@ -29,13 +29,13 @@ var c: [(); 5] = ((), (), (), (), (),);
|
||||
// CHECK:STDOUT: types: [
|
||||
// CHECK:STDOUT: nodeIntegerType,
|
||||
// CHECK:STDOUT: node+1,
|
||||
// CHECK:STDOUT: node+6,
|
||||
// CHECK:STDOUT: node+5,
|
||||
// CHECK:STDOUT: nodeFloatingPointType,
|
||||
// CHECK:STDOUT: node+11,
|
||||
// CHECK:STDOUT: node+18,
|
||||
// CHECK:STDOUT: node+22,
|
||||
// CHECK:STDOUT: node+25,
|
||||
// CHECK:STDOUT: node+38,
|
||||
// CHECK:STDOUT: node+10,
|
||||
// CHECK:STDOUT: node+16,
|
||||
// CHECK:STDOUT: node+20,
|
||||
// CHECK:STDOUT: node+23,
|
||||
// CHECK:STDOUT: node+35,
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: type_blocks: [
|
||||
// CHECK:STDOUT: [
|
||||
@@ -58,46 +58,43 @@ var c: [(); 5] = ((), (), (), (), (),);
|
||||
// CHECK:STDOUT: nodes: [
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int0, type: type0},
|
||||
// CHECK:STDOUT: {kind: ArrayType, arg0: node+0, arg1: type0, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type1},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node+2, type: type1},
|
||||
// CHECK:STDOUT: {kind: VarStorage, arg0: str0, type: type1},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int1, type: type0},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+4, type: type0},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+3, type: type0},
|
||||
// CHECK:STDOUT: {kind: TupleType, arg0: typeBlock0, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: TupleValue, arg0: block2, type: type2},
|
||||
// CHECK:STDOUT: {kind: ArrayValue, arg0: node+7, type: type1},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+2, arg1: node+8},
|
||||
// CHECK:STDOUT: {kind: ArrayValue, arg0: node+6, type: type1},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+2, arg1: node+7},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int2, type: type0},
|
||||
// CHECK:STDOUT: {kind: ArrayType, arg0: node+10, arg1: type3, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type4},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node+12, type: type4},
|
||||
// CHECK:STDOUT: {kind: ArrayType, arg0: node+9, arg1: type3, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: VarStorage, arg0: str1, type: type4},
|
||||
// CHECK:STDOUT: {kind: RealLiteral, arg0: real0, type: type3},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+14, type: type3},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+12, type: type3},
|
||||
// CHECK:STDOUT: {kind: RealLiteral, arg0: real1, type: type3},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+16, type: type3},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+14, type: type3},
|
||||
// CHECK:STDOUT: {kind: TupleType, arg0: typeBlock1, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: TupleValue, arg0: block3, type: type5},
|
||||
// CHECK:STDOUT: {kind: ArrayValue, arg0: node+19, type: type4},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+12, arg1: node+20},
|
||||
// CHECK:STDOUT: {kind: ArrayValue, arg0: node+17, type: type4},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+11, arg1: node+18},
|
||||
// CHECK:STDOUT: {kind: TupleType, arg0: typeBlock2, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: TupleValue, arg0: block0, type: type6},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int3, type: type0},
|
||||
// CHECK:STDOUT: {kind: ArrayType, arg0: node+24, arg1: type6, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type7},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str2, arg1: node+26, type: type7},
|
||||
// CHECK:STDOUT: {kind: ArrayType, arg0: node+22, arg1: type6, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: VarStorage, arg0: str2, type: type7},
|
||||
// CHECK:STDOUT: {kind: TupleValue, arg0: block0, type: type6},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+28, type: type6},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+25, type: type6},
|
||||
// CHECK:STDOUT: {kind: TupleValue, arg0: block0, type: type6},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+30, type: type6},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+27, type: type6},
|
||||
// CHECK:STDOUT: {kind: TupleValue, arg0: block0, type: type6},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+32, type: type6},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+29, type: type6},
|
||||
// CHECK:STDOUT: {kind: TupleValue, arg0: block0, type: type6},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+34, type: type6},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+31, type: type6},
|
||||
// CHECK:STDOUT: {kind: TupleValue, arg0: block0, type: type6},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+36, type: type6},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+33, type: type6},
|
||||
// CHECK:STDOUT: {kind: TupleType, arg0: typeBlock3, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: TupleValue, arg0: block4, type: type8},
|
||||
// CHECK:STDOUT: {kind: ArrayValue, arg0: node+39, type: type7},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+26, arg1: node+40},
|
||||
// CHECK:STDOUT: {kind: ArrayValue, arg0: node+36, type: type7},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+24, arg1: node+37},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: node_blocks: [
|
||||
// CHECK:STDOUT: [
|
||||
@@ -142,30 +139,27 @@ var c: [(); 5] = ((), (), (), (), (),);
|
||||
// CHECK:STDOUT: node+36,
|
||||
// CHECK:STDOUT: node+37,
|
||||
// CHECK:STDOUT: node+38,
|
||||
// CHECK:STDOUT: node+39,
|
||||
// CHECK:STDOUT: node+40,
|
||||
// CHECK:STDOUT: node+41,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+5,
|
||||
// CHECK:STDOUT: node+4,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+13,
|
||||
// CHECK:STDOUT: node+15,
|
||||
// CHECK:STDOUT: node+17,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+29,
|
||||
// CHECK:STDOUT: node+31,
|
||||
// CHECK:STDOUT: node+33,
|
||||
// CHECK:STDOUT: node+35,
|
||||
// CHECK:STDOUT: node+37,
|
||||
// CHECK:STDOUT: node+26,
|
||||
// CHECK:STDOUT: node+28,
|
||||
// CHECK:STDOUT: node+30,
|
||||
// CHECK:STDOUT: node+32,
|
||||
// CHECK:STDOUT: node+34,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: package {
|
||||
// CHECK:STDOUT: %.loc7_14: i32 = int_literal 1
|
||||
// CHECK:STDOUT: %.loc7_15: type = array_type %.loc7_14, i32
|
||||
// CHECK:STDOUT: %a: [i32; 1] = var
|
||||
// CHECK:STDOUT: %a: [i32; 1] = var "a"
|
||||
// CHECK:STDOUT: %.loc7_20.1: i32 = int_literal 1
|
||||
// CHECK:STDOUT: %.loc7_20.2: i32 = stub_reference %.loc7_20.1
|
||||
// CHECK:STDOUT: %.loc7_22.1: type = tuple_type (i32)
|
||||
@@ -174,7 +168,7 @@ var c: [(); 5] = ((), (), (), (), (),);
|
||||
// CHECK:STDOUT: assign %a, %.loc7_22.3
|
||||
// CHECK:STDOUT: %.loc8_14: i32 = int_literal 2
|
||||
// CHECK:STDOUT: %.loc8_15: type = array_type %.loc8_14, f64
|
||||
// CHECK:STDOUT: %b: [f64; 2] = var
|
||||
// CHECK:STDOUT: %b: [f64; 2] = var "b"
|
||||
// CHECK:STDOUT: %.loc8_20.1: f64 = real_literal 111e-1
|
||||
// CHECK:STDOUT: %.loc8_20.2: f64 = stub_reference %.loc8_20.1
|
||||
// CHECK:STDOUT: %.loc8_26.1: f64 = real_literal 22e-1
|
||||
@@ -187,7 +181,7 @@ var c: [(); 5] = ((), (), (), (), (),);
|
||||
// CHECK:STDOUT: %.loc9_10.2: () = tuple_value ()
|
||||
// CHECK:STDOUT: %.loc9_13: i32 = int_literal 5
|
||||
// CHECK:STDOUT: %.loc9_14: type = array_type %.loc9_13, ()
|
||||
// CHECK:STDOUT: %c: [(); 5] = var
|
||||
// CHECK:STDOUT: %c: [(); 5] = var "c"
|
||||
// CHECK:STDOUT: %.loc9_20.1: () = tuple_value ()
|
||||
// CHECK:STDOUT: %.loc9_20.2: () = stub_reference %.loc9_20.1
|
||||
// CHECK:STDOUT: %.loc9_24.1: () = tuple_value ()
|
||||
|
||||
@@ -31,8 +31,7 @@ var a: [1; 1];
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int0, type: type0},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int1, type: type0},
|
||||
// CHECK:STDOUT: {kind: ArrayType, arg0: node+1, arg1: typeError, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type1},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node+3, type: type1},
|
||||
// CHECK:STDOUT: {kind: VarStorage, arg0: str0, type: type1},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: node_blocks: [
|
||||
// CHECK:STDOUT: [
|
||||
@@ -42,7 +41,6 @@ var a: [1; 1];
|
||||
// CHECK:STDOUT: node+1,
|
||||
// CHECK:STDOUT: node+2,
|
||||
// CHECK:STDOUT: node+3,
|
||||
// CHECK:STDOUT: node+4,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT:
|
||||
@@ -50,5 +48,5 @@ var a: [1; 1];
|
||||
// CHECK:STDOUT: %.loc10_9: i32 = int_literal 1
|
||||
// CHECK:STDOUT: %.loc10_12: i32 = int_literal 1
|
||||
// CHECK:STDOUT: %.loc10_13: type = array_type %.loc10_12, <error>
|
||||
// CHECK:STDOUT: %a: [<error>; 1] = var
|
||||
// CHECK:STDOUT: %a: [<error>; 1] = var "a"
|
||||
// CHECK:STDOUT: }
|
||||
|
||||
+9
-11
@@ -26,7 +26,7 @@ var a: [i32; 1] = (1, 2, 3);
|
||||
// CHECK:STDOUT: types: [
|
||||
// CHECK:STDOUT: nodeIntegerType,
|
||||
// CHECK:STDOUT: node+1,
|
||||
// CHECK:STDOUT: node+10,
|
||||
// CHECK:STDOUT: node+9,
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: type_blocks: [
|
||||
// CHECK:STDOUT: [
|
||||
@@ -38,14 +38,13 @@ var a: [i32; 1] = (1, 2, 3);
|
||||
// CHECK:STDOUT: nodes: [
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int0, type: type0},
|
||||
// CHECK:STDOUT: {kind: ArrayType, arg0: node+0, arg1: type0, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type1},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node+2, type: type1},
|
||||
// CHECK:STDOUT: {kind: VarStorage, arg0: str0, type: type1},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int1, type: type0},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+4, type: type0},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+3, type: type0},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int2, type: type0},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+6, type: type0},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+5, type: type0},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int3, type: type0},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+8, type: type0},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+7, type: type0},
|
||||
// CHECK:STDOUT: {kind: TupleType, arg0: typeBlock0, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: TupleValue, arg0: block2, type: type2},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+2, arg1: nodeError},
|
||||
@@ -66,19 +65,18 @@ var a: [i32; 1] = (1, 2, 3);
|
||||
// CHECK:STDOUT: node+9,
|
||||
// CHECK:STDOUT: node+10,
|
||||
// CHECK:STDOUT: node+11,
|
||||
// CHECK:STDOUT: node+12,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+5,
|
||||
// CHECK:STDOUT: node+7,
|
||||
// CHECK:STDOUT: node+9,
|
||||
// CHECK:STDOUT: node+4,
|
||||
// CHECK:STDOUT: node+6,
|
||||
// CHECK:STDOUT: node+8,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: package {
|
||||
// CHECK:STDOUT: %.loc10_14: i32 = int_literal 1
|
||||
// CHECK:STDOUT: %.loc10_15: type = array_type %.loc10_14, i32
|
||||
// CHECK:STDOUT: %a: [i32; 1] = var
|
||||
// CHECK:STDOUT: %a: [i32; 1] = var "a"
|
||||
// CHECK:STDOUT: %.loc10_20.1: i32 = int_literal 1
|
||||
// CHECK:STDOUT: %.loc10_20.2: i32 = stub_reference %.loc10_20.1
|
||||
// CHECK:STDOUT: %.loc10_23.1: i32 = int_literal 2
|
||||
|
||||
@@ -26,7 +26,7 @@ var a: [i32; 2] = (1, 2.5);
|
||||
// CHECK:STDOUT: nodeIntegerType,
|
||||
// CHECK:STDOUT: node+1,
|
||||
// CHECK:STDOUT: nodeFloatingPointType,
|
||||
// CHECK:STDOUT: node+8,
|
||||
// CHECK:STDOUT: node+7,
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: type_blocks: [
|
||||
// CHECK:STDOUT: [
|
||||
@@ -37,12 +37,11 @@ var a: [i32; 2] = (1, 2.5);
|
||||
// CHECK:STDOUT: nodes: [
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int0, type: type0},
|
||||
// CHECK:STDOUT: {kind: ArrayType, arg0: node+0, arg1: type0, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type1},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node+2, type: type1},
|
||||
// CHECK:STDOUT: {kind: VarStorage, arg0: str0, type: type1},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int1, type: type0},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+4, type: type0},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+3, type: type0},
|
||||
// CHECK:STDOUT: {kind: RealLiteral, arg0: real0, type: type2},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+6, type: type2},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+5, type: type2},
|
||||
// CHECK:STDOUT: {kind: TupleType, arg0: typeBlock0, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: TupleValue, arg0: block2, type: type3},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+2, arg1: nodeError},
|
||||
@@ -61,18 +60,17 @@ var a: [i32; 2] = (1, 2.5);
|
||||
// CHECK:STDOUT: node+7,
|
||||
// CHECK:STDOUT: node+8,
|
||||
// CHECK:STDOUT: node+9,
|
||||
// CHECK:STDOUT: node+10,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+5,
|
||||
// CHECK:STDOUT: node+7,
|
||||
// CHECK:STDOUT: node+4,
|
||||
// CHECK:STDOUT: node+6,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: package {
|
||||
// CHECK:STDOUT: %.loc10_14: i32 = int_literal 2
|
||||
// CHECK:STDOUT: %.loc10_15: type = array_type %.loc10_14, i32
|
||||
// CHECK:STDOUT: %a: [i32; 2] = var
|
||||
// CHECK:STDOUT: %a: [i32; 2] = var "a"
|
||||
// CHECK:STDOUT: %.loc10_20.1: i32 = int_literal 1
|
||||
// CHECK:STDOUT: %.loc10_20.2: i32 = stub_reference %.loc10_20.1
|
||||
// CHECK:STDOUT: %.loc10_23.1: f64 = real_literal 25e-1
|
||||
|
||||
+12
-20
@@ -33,21 +33,17 @@ var test_type: type = i32;
|
||||
// CHECK:STDOUT: type_blocks: [
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: nodes: [
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type0},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node+0, type: type0},
|
||||
// CHECK:STDOUT: {kind: VarStorage, arg0: str0, type: type0},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int0, type: type0},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+0, arg1: node+2},
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type1},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node+4, type: type1},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+0, arg1: node+1},
|
||||
// CHECK:STDOUT: {kind: VarStorage, arg0: str1, type: type1},
|
||||
// CHECK:STDOUT: {kind: RealLiteral, arg0: real0, type: type1},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+4, arg1: node+6},
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type2},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str2, arg1: node+8, type: type2},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+3, arg1: node+4},
|
||||
// CHECK:STDOUT: {kind: VarStorage, arg0: str2, type: type2},
|
||||
// CHECK:STDOUT: {kind: StringLiteral, arg0: str3, type: type2},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+8, arg1: node+10},
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str4, arg1: node+12, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+12, arg1: nodeIntegerType},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+6, arg1: node+7},
|
||||
// CHECK:STDOUT: {kind: VarStorage, arg0: str4, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+9, arg1: nodeIntegerType},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: node_blocks: [
|
||||
// CHECK:STDOUT: [
|
||||
@@ -64,23 +60,19 @@ var test_type: type = i32;
|
||||
// CHECK:STDOUT: node+8,
|
||||
// CHECK:STDOUT: node+9,
|
||||
// CHECK:STDOUT: node+10,
|
||||
// CHECK:STDOUT: node+11,
|
||||
// CHECK:STDOUT: node+12,
|
||||
// CHECK:STDOUT: node+13,
|
||||
// CHECK:STDOUT: node+14,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: package {
|
||||
// CHECK:STDOUT: %test_i32: i32 = var
|
||||
// CHECK:STDOUT: %test_i32: i32 = var "test_i32"
|
||||
// CHECK:STDOUT: %.loc7: i32 = int_literal 0
|
||||
// CHECK:STDOUT: assign %test_i32, %.loc7
|
||||
// CHECK:STDOUT: %test_f64: f64 = var
|
||||
// CHECK:STDOUT: %test_f64: f64 = var "test_f64"
|
||||
// CHECK:STDOUT: %.loc8: f64 = real_literal 1e-1
|
||||
// CHECK:STDOUT: assign %test_f64, %.loc8
|
||||
// CHECK:STDOUT: %test_str: String = var
|
||||
// CHECK:STDOUT: %test_str: String = var "test_str"
|
||||
// CHECK:STDOUT: %.loc9: String = string_literal "Test"
|
||||
// CHECK:STDOUT: assign %test_str, %.loc9
|
||||
// CHECK:STDOUT: %test_type: type = var
|
||||
// CHECK:STDOUT: %test_type: type = var "test_type"
|
||||
// CHECK:STDOUT: assign %test_type, i32
|
||||
// CHECK:STDOUT: }
|
||||
|
||||
@@ -13,7 +13,7 @@ fn Main() {
|
||||
|
||||
// CHECK:STDOUT: cross_reference_irs_size: 1
|
||||
// CHECK:STDOUT: functions: [
|
||||
// CHECK:STDOUT: {name: str0, param_refs: block0, body: {block2}}},
|
||||
// CHECK:STDOUT: {name: str0, param_refs: block0, body: [block2]},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: integer_literals: [
|
||||
// CHECK:STDOUT: ]
|
||||
|
||||
@@ -26,8 +26,7 @@ var x: type = 42;
|
||||
// CHECK:STDOUT: type_blocks: [
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: nodes: [
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node+0, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: VarStorage, arg0: str0, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int0, type: type0},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+0, arg1: nodeError},
|
||||
// CHECK:STDOUT: ]
|
||||
@@ -38,12 +37,11 @@ var x: type = 42;
|
||||
// CHECK:STDOUT: node+0,
|
||||
// CHECK:STDOUT: node+1,
|
||||
// CHECK:STDOUT: node+2,
|
||||
// CHECK:STDOUT: node+3,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: package {
|
||||
// CHECK:STDOUT: %x: type = var
|
||||
// CHECK:STDOUT: %x: type = var "x"
|
||||
// CHECK:STDOUT: %.loc10: i32 = int_literal 42
|
||||
// CHECK:STDOUT: assign %x, <error>
|
||||
// CHECK:STDOUT: }
|
||||
|
||||
@@ -28,11 +28,9 @@ var y: i32 = x.b;
|
||||
// CHECK:STDOUT: type_blocks: [
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: nodes: [
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type0},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node+0, type: type0},
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type0},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node+2, type: type0},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+2, arg1: nodeError},
|
||||
// CHECK:STDOUT: {kind: VarStorage, arg0: str0, type: type0},
|
||||
// CHECK:STDOUT: {kind: VarStorage, arg0: str1, type: type0},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+1, arg1: nodeError},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: node_blocks: [
|
||||
// CHECK:STDOUT: [
|
||||
@@ -41,13 +39,11 @@ var y: i32 = x.b;
|
||||
// CHECK:STDOUT: node+0,
|
||||
// CHECK:STDOUT: node+1,
|
||||
// CHECK:STDOUT: node+2,
|
||||
// CHECK:STDOUT: node+3,
|
||||
// CHECK:STDOUT: node+4,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: package {
|
||||
// CHECK:STDOUT: %x: i32 = var
|
||||
// CHECK:STDOUT: %y: i32 = var
|
||||
// CHECK:STDOUT: %x: i32 = var "x"
|
||||
// CHECK:STDOUT: %y: i32 = var "y"
|
||||
// CHECK:STDOUT: assign %y, <error>
|
||||
// CHECK:STDOUT: }
|
||||
|
||||
+4
-6
@@ -24,12 +24,11 @@ var test_i32: i32 = ((1) + (2));
|
||||
// CHECK:STDOUT: type_blocks: [
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: nodes: [
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type0},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node+0, type: type0},
|
||||
// CHECK:STDOUT: {kind: VarStorage, arg0: str0, type: type0},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int0, type: type0},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int1, type: type0},
|
||||
// CHECK:STDOUT: {kind: BinaryOperatorAdd, arg0: node+2, arg1: node+3, type: type0},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+0, arg1: node+4},
|
||||
// CHECK:STDOUT: {kind: BinaryOperatorAdd, arg0: node+1, arg1: node+2, type: type0},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+0, arg1: node+3},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: node_blocks: [
|
||||
// CHECK:STDOUT: [
|
||||
@@ -40,12 +39,11 @@ var test_i32: i32 = ((1) + (2));
|
||||
// CHECK:STDOUT: node+2,
|
||||
// CHECK:STDOUT: node+3,
|
||||
// CHECK:STDOUT: node+4,
|
||||
// CHECK:STDOUT: node+5,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: package {
|
||||
// CHECK:STDOUT: %test_i32: i32 = var
|
||||
// CHECK:STDOUT: %test_i32: i32 = var "test_i32"
|
||||
// CHECK:STDOUT: %.loc7_23: i32 = int_literal 1
|
||||
// CHECK:STDOUT: %.loc7_29: i32 = int_literal 2
|
||||
// CHECK:STDOUT: %.loc7_26: i32 = add %.loc7_23, %.loc7_29
|
||||
|
||||
+6
-8
@@ -14,7 +14,7 @@ fn F(p: const i32**) -> const (const i32)** {
|
||||
|
||||
// CHECK:STDOUT: cross_reference_irs_size: 1
|
||||
// CHECK:STDOUT: functions: [
|
||||
// CHECK:STDOUT: {name: str0, param_refs: block2, return_type: type3, body: {block4}}},
|
||||
// CHECK:STDOUT: {name: str0, param_refs: block2, return_type: type3, body: [block4]},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: integer_literals: [
|
||||
// CHECK:STDOUT: ]
|
||||
@@ -36,8 +36,7 @@ fn F(p: const i32**) -> const (const i32)** {
|
||||
// CHECK:STDOUT: {kind: ConstType, arg0: type0, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: PointerType, arg0: type1, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: PointerType, arg0: type2, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type3},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node+3, type: type3},
|
||||
// CHECK:STDOUT: {kind: VarStorage, arg0: str1, type: type3},
|
||||
// CHECK:STDOUT: {kind: ConstType, arg0: type0, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: ConstType, arg0: type1, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: PointerType, arg0: type1, type: typeTypeType},
|
||||
@@ -53,20 +52,19 @@ fn F(p: const i32**) -> const (const i32)** {
|
||||
// CHECK:STDOUT: node+1,
|
||||
// CHECK:STDOUT: node+2,
|
||||
// CHECK:STDOUT: node+3,
|
||||
// CHECK:STDOUT: node+4,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+3,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+4,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+5,
|
||||
// CHECK:STDOUT: node+6,
|
||||
// CHECK:STDOUT: node+7,
|
||||
// CHECK:STDOUT: node+8,
|
||||
// CHECK:STDOUT: node+9,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+10,
|
||||
// CHECK:STDOUT: node+9,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT:
|
||||
|
||||
+7
-9
@@ -16,7 +16,7 @@ fn G(p: const (const i32)**) -> i32** {
|
||||
|
||||
// CHECK:STDOUT: cross_reference_irs_size: 1
|
||||
// CHECK:STDOUT: functions: [
|
||||
// CHECK:STDOUT: {name: str0, param_refs: block2, return_type: type5, body: {block4}}},
|
||||
// CHECK:STDOUT: {name: str0, param_refs: block2, return_type: type5, body: [block4]},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: integer_literals: [
|
||||
// CHECK:STDOUT: ]
|
||||
@@ -31,8 +31,8 @@ fn G(p: const (const i32)**) -> i32** {
|
||||
// CHECK:STDOUT: node+0,
|
||||
// CHECK:STDOUT: node+2,
|
||||
// CHECK:STDOUT: node+3,
|
||||
// CHECK:STDOUT: node+5,
|
||||
// CHECK:STDOUT: node+6,
|
||||
// CHECK:STDOUT: node+7,
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: type_blocks: [
|
||||
// CHECK:STDOUT: ]
|
||||
@@ -41,8 +41,7 @@ fn G(p: const (const i32)**) -> i32** {
|
||||
// CHECK:STDOUT: {kind: ConstType, arg0: type1, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: PointerType, arg0: type1, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: PointerType, arg0: type2, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type3},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node+4, type: type3},
|
||||
// CHECK:STDOUT: {kind: VarStorage, arg0: str1, type: type3},
|
||||
// CHECK:STDOUT: {kind: PointerType, arg0: type0, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: PointerType, arg0: type4, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: function0},
|
||||
@@ -57,18 +56,17 @@ fn G(p: const (const i32)**) -> i32** {
|
||||
// CHECK:STDOUT: node+2,
|
||||
// CHECK:STDOUT: node+3,
|
||||
// CHECK:STDOUT: node+4,
|
||||
// CHECK:STDOUT: node+5,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+4,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+5,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+6,
|
||||
// CHECK:STDOUT: node+7,
|
||||
// CHECK:STDOUT: node+8,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+9,
|
||||
// CHECK:STDOUT: node+8,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT:
|
||||
|
||||
+12
-14
@@ -14,8 +14,8 @@ fn Main() {
|
||||
|
||||
// CHECK:STDOUT: cross_reference_irs_size: 1
|
||||
// CHECK:STDOUT: functions: [
|
||||
// CHECK:STDOUT: {name: str0, param_refs: block2, return_type: type0, body: {block4}}},
|
||||
// CHECK:STDOUT: {name: str2, param_refs: block0, body: {block5}}},
|
||||
// CHECK:STDOUT: {name: str0, param_refs: block2, return_type: type0, body: [block4]},
|
||||
// CHECK:STDOUT: {name: str2, param_refs: block0, body: [block5]},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: integer_literals: [
|
||||
// CHECK:STDOUT: ]
|
||||
@@ -34,14 +34,13 @@ fn Main() {
|
||||
// CHECK:STDOUT: nodes: [
|
||||
// CHECK:STDOUT: {kind: StructType, arg0: block0, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: StructValue, arg0: block0, type: type0},
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type0},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node+2, type: type0},
|
||||
// CHECK:STDOUT: {kind: VarStorage, arg0: str1, type: type0},
|
||||
// CHECK:STDOUT: {kind: StructValue, arg0: block0, type: type0},
|
||||
// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: function0},
|
||||
// CHECK:STDOUT: {kind: ReturnExpression, arg0: node+2},
|
||||
// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: function1},
|
||||
// CHECK:STDOUT: {kind: StructValue, arg0: block0, type: type0},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+8, type: type0},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+7, type: type0},
|
||||
// CHECK:STDOUT: {kind: Call, arg0: block6, arg1: function0, type: type0},
|
||||
// CHECK:STDOUT: {kind: Return},
|
||||
// CHECK:STDOUT: ]
|
||||
@@ -52,27 +51,26 @@ fn Main() {
|
||||
// CHECK:STDOUT: node+0,
|
||||
// CHECK:STDOUT: node+1,
|
||||
// CHECK:STDOUT: node+2,
|
||||
// CHECK:STDOUT: node+3,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+2,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+3,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+4,
|
||||
// CHECK:STDOUT: node+5,
|
||||
// CHECK:STDOUT: node+7,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+6,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+5,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+7,
|
||||
// CHECK:STDOUT: node+8,
|
||||
// CHECK:STDOUT: node+9,
|
||||
// CHECK:STDOUT: node+10,
|
||||
// CHECK:STDOUT: node+11,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+9,
|
||||
// CHECK:STDOUT: node+8,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT:
|
||||
|
||||
+12
-14
@@ -14,8 +14,8 @@ fn Main() {
|
||||
|
||||
// CHECK:STDOUT: cross_reference_irs_size: 1
|
||||
// CHECK:STDOUT: functions: [
|
||||
// CHECK:STDOUT: {name: str0, param_refs: block2, return_type: type0, body: {block4}}},
|
||||
// CHECK:STDOUT: {name: str2, param_refs: block0, body: {block5}}},
|
||||
// CHECK:STDOUT: {name: str0, param_refs: block2, return_type: type0, body: [block4]},
|
||||
// CHECK:STDOUT: {name: str2, param_refs: block0, body: [block5]},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: integer_literals: [
|
||||
// CHECK:STDOUT: ]
|
||||
@@ -36,14 +36,13 @@ fn Main() {
|
||||
// CHECK:STDOUT: nodes: [
|
||||
// CHECK:STDOUT: {kind: TupleType, arg0: typeBlock0, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: TupleValue, arg0: block0, type: type0},
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type0},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node+2, type: type0},
|
||||
// CHECK:STDOUT: {kind: VarStorage, arg0: str1, type: type0},
|
||||
// CHECK:STDOUT: {kind: TupleValue, arg0: block0, type: type0},
|
||||
// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: function0},
|
||||
// CHECK:STDOUT: {kind: ReturnExpression, arg0: node+2},
|
||||
// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: function1},
|
||||
// CHECK:STDOUT: {kind: TupleValue, arg0: block0, type: type0},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+8, type: type0},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+7, type: type0},
|
||||
// CHECK:STDOUT: {kind: Call, arg0: block6, arg1: function0, type: type0},
|
||||
// CHECK:STDOUT: {kind: Return},
|
||||
// CHECK:STDOUT: ]
|
||||
@@ -54,27 +53,26 @@ fn Main() {
|
||||
// CHECK:STDOUT: node+0,
|
||||
// CHECK:STDOUT: node+1,
|
||||
// CHECK:STDOUT: node+2,
|
||||
// CHECK:STDOUT: node+3,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+2,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+3,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+4,
|
||||
// CHECK:STDOUT: node+5,
|
||||
// CHECK:STDOUT: node+7,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+6,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+5,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+7,
|
||||
// CHECK:STDOUT: node+8,
|
||||
// CHECK:STDOUT: node+9,
|
||||
// CHECK:STDOUT: node+10,
|
||||
// CHECK:STDOUT: node+11,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+9,
|
||||
// CHECK:STDOUT: node+8,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT:
|
||||
|
||||
@@ -57,10 +57,10 @@ fn Main() {
|
||||
|
||||
// CHECK:STDOUT: cross_reference_irs_size: 1
|
||||
// CHECK:STDOUT: functions: [
|
||||
// CHECK:STDOUT: {name: str0, param_refs: block0, body: {block2}}},
|
||||
// CHECK:STDOUT: {name: str1, param_refs: block4, body: {block5}}},
|
||||
// CHECK:STDOUT: {name: str3, param_refs: block7, body: {block8}}},
|
||||
// CHECK:STDOUT: {name: str5, param_refs: block0, body: {block9}}},
|
||||
// CHECK:STDOUT: {name: str0, param_refs: block0, body: [block2]},
|
||||
// CHECK:STDOUT: {name: str1, param_refs: block4, body: [block5]},
|
||||
// CHECK:STDOUT: {name: str3, param_refs: block7, body: [block8]},
|
||||
// CHECK:STDOUT: {name: str5, param_refs: block0, body: [block9]},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: integer_literals: [
|
||||
// CHECK:STDOUT: 1,
|
||||
@@ -88,29 +88,26 @@ fn Main() {
|
||||
// CHECK:STDOUT: nodes: [
|
||||
// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: function0},
|
||||
// CHECK:STDOUT: {kind: Return},
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type0},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str2, arg1: node+2, type: type0},
|
||||
// CHECK:STDOUT: {kind: VarStorage, arg0: str2, type: type0},
|
||||
// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: function1},
|
||||
// CHECK:STDOUT: {kind: Return},
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type0},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str2, arg1: node+6, type: type0},
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type0},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str4, arg1: node+8, type: type0},
|
||||
// CHECK:STDOUT: {kind: VarStorage, arg0: str2, type: type0},
|
||||
// CHECK:STDOUT: {kind: VarStorage, arg0: str4, type: type0},
|
||||
// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: function2},
|
||||
// CHECK:STDOUT: {kind: Return},
|
||||
// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: function3},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int0, type: type0},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+13, type: type0},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+10, type: type0},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int1, type: type0},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+15, type: type0},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+12, type: type0},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int2, type: type0},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+17, type: type0},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+14, type: type0},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int3, type: type0},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+19, type: type0},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+16, type: type0},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int4, type: type0},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+21, type: type0},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+18, type: type0},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int5, type: type0},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+23, type: type0},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+20, type: type0},
|
||||
// CHECK:STDOUT: {kind: Return},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: node_blocks: [
|
||||
@@ -118,37 +115,37 @@ fn Main() {
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+0,
|
||||
// CHECK:STDOUT: node+4,
|
||||
// CHECK:STDOUT: node+10,
|
||||
// CHECK:STDOUT: node+12,
|
||||
// CHECK:STDOUT: node+3,
|
||||
// CHECK:STDOUT: node+7,
|
||||
// CHECK:STDOUT: node+9,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+1,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+2,
|
||||
// CHECK:STDOUT: node+3,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+3,
|
||||
// CHECK:STDOUT: node+2,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+4,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+5,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+6,
|
||||
// CHECK:STDOUT: node+7,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+5,
|
||||
// CHECK:STDOUT: node+6,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+8,
|
||||
// CHECK:STDOUT: node+9,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+7,
|
||||
// CHECK:STDOUT: node+9,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+10,
|
||||
// CHECK:STDOUT: node+11,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+12,
|
||||
// CHECK:STDOUT: node+13,
|
||||
// CHECK:STDOUT: node+14,
|
||||
// CHECK:STDOUT: node+15,
|
||||
@@ -159,23 +156,20 @@ fn Main() {
|
||||
// CHECK:STDOUT: node+20,
|
||||
// CHECK:STDOUT: node+21,
|
||||
// CHECK:STDOUT: node+22,
|
||||
// CHECK:STDOUT: node+23,
|
||||
// CHECK:STDOUT: node+24,
|
||||
// CHECK:STDOUT: node+25,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+14,
|
||||
// CHECK:STDOUT: node+11,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+16,
|
||||
// CHECK:STDOUT: node+18,
|
||||
// CHECK:STDOUT: node+13,
|
||||
// CHECK:STDOUT: node+15,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+20,
|
||||
// CHECK:STDOUT: node+22,
|
||||
// CHECK:STDOUT: node+17,
|
||||
// CHECK:STDOUT: node+19,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+24,
|
||||
// CHECK:STDOUT: node+21,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT:
|
||||
|
||||
@@ -18,8 +18,8 @@ fn Main() {
|
||||
|
||||
// CHECK:STDOUT: cross_reference_irs_size: 1
|
||||
// CHECK:STDOUT: functions: [
|
||||
// CHECK:STDOUT: {name: str0, param_refs: block2, body: {block4}}},
|
||||
// CHECK:STDOUT: {name: str2, param_refs: block0, body: {block5}}},
|
||||
// CHECK:STDOUT: {name: str0, param_refs: block2, body: [block4]},
|
||||
// CHECK:STDOUT: {name: str2, param_refs: block0, body: [block5]},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: integer_literals: [
|
||||
// CHECK:STDOUT: ]
|
||||
@@ -38,13 +38,12 @@ fn Main() {
|
||||
// CHECK:STDOUT: type_blocks: [
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: nodes: [
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type0},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node+0, type: type0},
|
||||
// CHECK:STDOUT: {kind: VarStorage, arg0: str1, type: type0},
|
||||
// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: function0},
|
||||
// CHECK:STDOUT: {kind: Return},
|
||||
// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: function1},
|
||||
// CHECK:STDOUT: {kind: RealLiteral, arg0: real0, type: type1},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+5, type: type1},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+4, type: type1},
|
||||
// CHECK:STDOUT: {kind: Return},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: node_blocks: [
|
||||
@@ -52,26 +51,25 @@ fn Main() {
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+0,
|
||||
// CHECK:STDOUT: node+1,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+0,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+1,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+2,
|
||||
// CHECK:STDOUT: node+4,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+3,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+5,
|
||||
// CHECK:STDOUT: node+6,
|
||||
// CHECK:STDOUT: node+7,
|
||||
// CHECK:STDOUT: node+2,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+4,
|
||||
// CHECK:STDOUT: node+5,
|
||||
// CHECK:STDOUT: node+6,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+5,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: package {
|
||||
|
||||
+4
-6
@@ -15,8 +15,8 @@ fn Run() {
|
||||
|
||||
// CHECK:STDOUT: cross_reference_irs_size: 1
|
||||
// CHECK:STDOUT: functions: [
|
||||
// CHECK:STDOUT: {name: str0, param_refs: block0, return_type: type0, body: {block2}}},
|
||||
// CHECK:STDOUT: {name: str1, param_refs: block0, body: {block3}}},
|
||||
// CHECK:STDOUT: {name: str0, param_refs: block0, return_type: type0, body: [block2]},
|
||||
// CHECK:STDOUT: {name: str1, param_refs: block0, body: [block3]},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: integer_literals: [
|
||||
// CHECK:STDOUT: ]
|
||||
@@ -39,8 +39,7 @@ fn Run() {
|
||||
// CHECK:STDOUT: {kind: RealLiteral, arg0: real0, type: type0},
|
||||
// CHECK:STDOUT: {kind: ReturnExpression, arg0: node+1},
|
||||
// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: function1},
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type1},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str2, arg1: node+4, type: type1},
|
||||
// CHECK:STDOUT: {kind: VarStorage, arg0: str2, type: type1},
|
||||
// CHECK:STDOUT: {kind: Call, arg0: block0, arg1: function0, type: type0},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+4, arg1: nodeError},
|
||||
// CHECK:STDOUT: {kind: Return},
|
||||
@@ -61,7 +60,6 @@ fn Run() {
|
||||
// CHECK:STDOUT: node+5,
|
||||
// CHECK:STDOUT: node+6,
|
||||
// CHECK:STDOUT: node+7,
|
||||
// CHECK:STDOUT: node+8,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT:
|
||||
@@ -78,7 +76,7 @@ fn Run() {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @Run() {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %x: i32 = var
|
||||
// CHECK:STDOUT: %x: i32 = var "x"
|
||||
// CHECK:STDOUT: %.loc13: f64 = call @Foo()
|
||||
// CHECK:STDOUT: assign %x, <error>
|
||||
// CHECK:STDOUT: return
|
||||
|
||||
+15
-19
@@ -14,8 +14,8 @@ fn Main() {
|
||||
|
||||
// CHECK:STDOUT: cross_reference_irs_size: 1
|
||||
// CHECK:STDOUT: functions: [
|
||||
// CHECK:STDOUT: {name: str0, param_refs: block2, return_type: type0, body: {block4}}},
|
||||
// CHECK:STDOUT: {name: str2, param_refs: block0, body: {block5}}},
|
||||
// CHECK:STDOUT: {name: str0, param_refs: block2, return_type: type0, body: [block4]},
|
||||
// CHECK:STDOUT: {name: str2, param_refs: block0, body: [block5]},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: integer_literals: [
|
||||
// CHECK:STDOUT: 1,
|
||||
@@ -34,17 +34,15 @@ fn Main() {
|
||||
// CHECK:STDOUT: type_blocks: [
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: nodes: [
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type0},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node+0, type: type0},
|
||||
// CHECK:STDOUT: {kind: VarStorage, arg0: str1, type: type0},
|
||||
// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: function0},
|
||||
// CHECK:STDOUT: {kind: ReturnExpression, arg0: node+0},
|
||||
// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: function1},
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type0},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str3, arg1: node+5, type: type0},
|
||||
// CHECK:STDOUT: {kind: VarStorage, arg0: str3, type: type0},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int0, type: type0},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+7, type: type0},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+5, type: type0},
|
||||
// CHECK:STDOUT: {kind: Call, arg0: block6, arg1: function0, type: type0},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+5, arg1: node+9},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+4, arg1: node+7},
|
||||
// CHECK:STDOUT: {kind: Return},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: node_blocks: [
|
||||
@@ -52,29 +50,27 @@ fn Main() {
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+0,
|
||||
// CHECK:STDOUT: node+1,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+0,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+1,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+2,
|
||||
// CHECK:STDOUT: node+4,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+3,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+2,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+4,
|
||||
// CHECK:STDOUT: node+5,
|
||||
// CHECK:STDOUT: node+6,
|
||||
// CHECK:STDOUT: node+7,
|
||||
// CHECK:STDOUT: node+8,
|
||||
// CHECK:STDOUT: node+9,
|
||||
// CHECK:STDOUT: node+10,
|
||||
// CHECK:STDOUT: node+11,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+8,
|
||||
// CHECK:STDOUT: node+6,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT:
|
||||
@@ -90,7 +86,7 @@ fn Main() {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @Main() {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %b: i32 = var
|
||||
// CHECK:STDOUT: %b: i32 = var "b"
|
||||
// CHECK:STDOUT: %.loc12_21.1: i32 = int_literal 1
|
||||
// CHECK:STDOUT: %.loc12_21.2: i32 = stub_reference %.loc12_21.1
|
||||
// CHECK:STDOUT: %.loc12_20: i32 = call @Echo(%.loc12_21.2)
|
||||
|
||||
+24
-30
@@ -13,8 +13,8 @@ fn Main() {
|
||||
|
||||
// CHECK:STDOUT: cross_reference_irs_size: 1
|
||||
// CHECK:STDOUT: functions: [
|
||||
// CHECK:STDOUT: {name: str0, param_refs: block2, body: {block4}}},
|
||||
// CHECK:STDOUT: {name: str4, param_refs: block0, body: {block5}}},
|
||||
// CHECK:STDOUT: {name: str0, param_refs: block2, body: [block4]},
|
||||
// CHECK:STDOUT: {name: str4, param_refs: block0, body: [block5]},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: integer_literals: [
|
||||
// CHECK:STDOUT: 1,
|
||||
@@ -35,34 +35,31 @@ fn Main() {
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: types: [
|
||||
// CHECK:STDOUT: nodeIntegerType,
|
||||
// CHECK:STDOUT: node+21,
|
||||
// CHECK:STDOUT: node+18,
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: type_blocks: [
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: nodes: [
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type0},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node+0, type: type0},
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type0},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str2, arg1: node+2, type: type0},
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type0},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str3, arg1: node+4, type: type0},
|
||||
// CHECK:STDOUT: {kind: VarStorage, arg0: str1, type: type0},
|
||||
// CHECK:STDOUT: {kind: VarStorage, arg0: str2, type: type0},
|
||||
// CHECK:STDOUT: {kind: VarStorage, arg0: str3, type: type0},
|
||||
// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: function0},
|
||||
// CHECK:STDOUT: {kind: Return},
|
||||
// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: function1},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int0, type: type0},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int1, type: type0},
|
||||
// CHECK:STDOUT: {kind: BinaryOperatorAdd, arg0: node+9, arg1: node+10, type: type0},
|
||||
// CHECK:STDOUT: {kind: BinaryOperatorAdd, arg0: node+6, arg1: node+7, type: type0},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int2, type: type0},
|
||||
// CHECK:STDOUT: {kind: BinaryOperatorAdd, arg0: node+11, arg1: node+12, type: type0},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+13, type: type0},
|
||||
// CHECK:STDOUT: {kind: BinaryOperatorAdd, arg0: node+8, arg1: node+9, type: type0},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+10, type: type0},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int3, type: type0},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int4, type: type0},
|
||||
// CHECK:STDOUT: {kind: BinaryOperatorAdd, arg0: node+15, arg1: node+16, type: type0},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+17, type: type0},
|
||||
// CHECK:STDOUT: {kind: BinaryOperatorAdd, arg0: node+12, arg1: node+13, type: type0},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+14, type: type0},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int5, type: type0},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+19, type: type0},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+16, type: type0},
|
||||
// CHECK:STDOUT: {kind: TupleType, arg0: typeBlock0, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: Call, arg0: block6, arg1: function0, type: type1},
|
||||
// CHECK:STDOUT: {kind: Return},
|
||||
@@ -74,23 +71,23 @@ fn Main() {
|
||||
// CHECK:STDOUT: node+0,
|
||||
// CHECK:STDOUT: node+1,
|
||||
// CHECK:STDOUT: node+2,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+0,
|
||||
// CHECK:STDOUT: node+1,
|
||||
// CHECK:STDOUT: node+2,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+3,
|
||||
// CHECK:STDOUT: node+4,
|
||||
// CHECK:STDOUT: node+5,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+1,
|
||||
// CHECK:STDOUT: node+3,
|
||||
// CHECK:STDOUT: node+5,
|
||||
// CHECK:STDOUT: node+4,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+6,
|
||||
// CHECK:STDOUT: node+8,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+7,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+8,
|
||||
// CHECK:STDOUT: node+9,
|
||||
// CHECK:STDOUT: node+10,
|
||||
// CHECK:STDOUT: node+11,
|
||||
@@ -103,14 +100,11 @@ fn Main() {
|
||||
// CHECK:STDOUT: node+18,
|
||||
// CHECK:STDOUT: node+19,
|
||||
// CHECK:STDOUT: node+20,
|
||||
// CHECK:STDOUT: node+21,
|
||||
// CHECK:STDOUT: node+22,
|
||||
// CHECK:STDOUT: node+23,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+14,
|
||||
// CHECK:STDOUT: node+18,
|
||||
// CHECK:STDOUT: node+20,
|
||||
// CHECK:STDOUT: node+11,
|
||||
// CHECK:STDOUT: node+15,
|
||||
// CHECK:STDOUT: node+17,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT:
|
||||
|
||||
+13
-15
@@ -12,8 +12,8 @@ fn Main() {
|
||||
|
||||
// CHECK:STDOUT: cross_reference_irs_size: 1
|
||||
// CHECK:STDOUT: functions: [
|
||||
// CHECK:STDOUT: {name: str0, param_refs: block2, body: {block4}}},
|
||||
// CHECK:STDOUT: {name: str2, param_refs: block0, body: {block5}}},
|
||||
// CHECK:STDOUT: {name: str0, param_refs: block2, body: [block4]},
|
||||
// CHECK:STDOUT: {name: str2, param_refs: block0, body: [block5]},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: integer_literals: [
|
||||
// CHECK:STDOUT: 1,
|
||||
@@ -27,20 +27,19 @@ fn Main() {
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: types: [
|
||||
// CHECK:STDOUT: nodeIntegerType,
|
||||
// CHECK:STDOUT: node+7,
|
||||
// CHECK:STDOUT: node+6,
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: type_blocks: [
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: nodes: [
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type0},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node+0, type: type0},
|
||||
// CHECK:STDOUT: {kind: VarStorage, arg0: str1, type: type0},
|
||||
// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: function0},
|
||||
// CHECK:STDOUT: {kind: Return},
|
||||
// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: function1},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int0, type: type0},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+5, type: type0},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+4, type: type0},
|
||||
// CHECK:STDOUT: {kind: TupleType, arg0: typeBlock0, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: Call, arg0: block6, arg1: function0, type: type1},
|
||||
// CHECK:STDOUT: {kind: Return},
|
||||
@@ -50,27 +49,26 @@ fn Main() {
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+0,
|
||||
// CHECK:STDOUT: node+1,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+0,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+1,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+2,
|
||||
// CHECK:STDOUT: node+4,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+3,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+2,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+4,
|
||||
// CHECK:STDOUT: node+5,
|
||||
// CHECK:STDOUT: node+6,
|
||||
// CHECK:STDOUT: node+7,
|
||||
// CHECK:STDOUT: node+8,
|
||||
// CHECK:STDOUT: node+9,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+6,
|
||||
// CHECK:STDOUT: node+5,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT:
|
||||
|
||||
@@ -13,8 +13,8 @@ fn Main() {
|
||||
|
||||
// CHECK:STDOUT: cross_reference_irs_size: 1
|
||||
// CHECK:STDOUT: functions: [
|
||||
// CHECK:STDOUT: {name: str0, param_refs: block2, body: {block4}}},
|
||||
// CHECK:STDOUT: {name: str2, param_refs: block0, body: {block5}}},
|
||||
// CHECK:STDOUT: {name: str0, param_refs: block2, body: [block4]},
|
||||
// CHECK:STDOUT: {name: str2, param_refs: block0, body: [block5]},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: integer_literals: [
|
||||
// CHECK:STDOUT: 1,
|
||||
@@ -29,24 +29,23 @@ fn Main() {
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: types: [
|
||||
// CHECK:STDOUT: nodeIntegerType,
|
||||
// CHECK:STDOUT: node+7,
|
||||
// CHECK:STDOUT: node+6,
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: type_blocks: [
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: nodes: [
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type0},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node+0, type: type0},
|
||||
// CHECK:STDOUT: {kind: VarStorage, arg0: str1, type: type0},
|
||||
// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: function0},
|
||||
// CHECK:STDOUT: {kind: Return},
|
||||
// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: function1},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int0, type: type0},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+5, type: type0},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+4, type: type0},
|
||||
// CHECK:STDOUT: {kind: TupleType, arg0: typeBlock0, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: Call, arg0: block6, arg1: function0, type: type1},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int1, type: type0},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+9, type: type0},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+8, type: type0},
|
||||
// CHECK:STDOUT: {kind: Call, arg0: block7, arg1: function0, type: type1},
|
||||
// CHECK:STDOUT: {kind: Return},
|
||||
// CHECK:STDOUT: ]
|
||||
@@ -55,19 +54,19 @@ fn Main() {
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+0,
|
||||
// CHECK:STDOUT: node+1,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+0,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+1,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+2,
|
||||
// CHECK:STDOUT: node+4,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+3,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+2,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+4,
|
||||
// CHECK:STDOUT: node+5,
|
||||
// CHECK:STDOUT: node+6,
|
||||
// CHECK:STDOUT: node+7,
|
||||
@@ -75,13 +74,12 @@ fn Main() {
|
||||
// CHECK:STDOUT: node+9,
|
||||
// CHECK:STDOUT: node+10,
|
||||
// CHECK:STDOUT: node+11,
|
||||
// CHECK:STDOUT: node+12,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+6,
|
||||
// CHECK:STDOUT: node+5,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+10,
|
||||
// CHECK:STDOUT: node+9,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT:
|
||||
|
||||
+14
-18
@@ -12,8 +12,8 @@ fn Main() {
|
||||
|
||||
// CHECK:STDOUT: cross_reference_irs_size: 1
|
||||
// CHECK:STDOUT: functions: [
|
||||
// CHECK:STDOUT: {name: str0, param_refs: block2, body: {block4}}},
|
||||
// CHECK:STDOUT: {name: str3, param_refs: block0, body: {block5}}},
|
||||
// CHECK:STDOUT: {name: str0, param_refs: block2, body: [block4]},
|
||||
// CHECK:STDOUT: {name: str3, param_refs: block0, body: [block5]},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: integer_literals: [
|
||||
// CHECK:STDOUT: 1,
|
||||
@@ -29,24 +29,22 @@ fn Main() {
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: types: [
|
||||
// CHECK:STDOUT: nodeIntegerType,
|
||||
// CHECK:STDOUT: node+11,
|
||||
// CHECK:STDOUT: node+9,
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: type_blocks: [
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: nodes: [
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type0},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node+0, type: type0},
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type0},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str2, arg1: node+2, type: type0},
|
||||
// CHECK:STDOUT: {kind: VarStorage, arg0: str1, type: type0},
|
||||
// CHECK:STDOUT: {kind: VarStorage, arg0: str2, type: type0},
|
||||
// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: function0},
|
||||
// CHECK:STDOUT: {kind: Return},
|
||||
// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: function1},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int0, type: type0},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+7, type: type0},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+5, type: type0},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int1, type: type0},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+9, type: type0},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+7, type: type0},
|
||||
// CHECK:STDOUT: {kind: TupleType, arg0: typeBlock0, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: Call, arg0: block6, arg1: function0, type: type1},
|
||||
// CHECK:STDOUT: {kind: Return},
|
||||
@@ -57,32 +55,30 @@ fn Main() {
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+0,
|
||||
// CHECK:STDOUT: node+1,
|
||||
// CHECK:STDOUT: node+2,
|
||||
// CHECK:STDOUT: node+3,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+0,
|
||||
// CHECK:STDOUT: node+1,
|
||||
// CHECK:STDOUT: node+3,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+2,
|
||||
// CHECK:STDOUT: node+4,
|
||||
// CHECK:STDOUT: node+6,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+3,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+5,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+6,
|
||||
// CHECK:STDOUT: node+7,
|
||||
// CHECK:STDOUT: node+8,
|
||||
// CHECK:STDOUT: node+9,
|
||||
// CHECK:STDOUT: node+10,
|
||||
// CHECK:STDOUT: node+11,
|
||||
// CHECK:STDOUT: node+12,
|
||||
// CHECK:STDOUT: node+13,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+6,
|
||||
// CHECK:STDOUT: node+8,
|
||||
// CHECK:STDOUT: node+10,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT:
|
||||
|
||||
@@ -13,8 +13,8 @@ fn Main() {
|
||||
|
||||
// CHECK:STDOUT: cross_reference_irs_size: 1
|
||||
// CHECK:STDOUT: functions: [
|
||||
// CHECK:STDOUT: {name: str0, param_refs: block2, body: {block4}}},
|
||||
// CHECK:STDOUT: {name: str3, param_refs: block0, body: {block5}}},
|
||||
// CHECK:STDOUT: {name: str0, param_refs: block2, body: [block4]},
|
||||
// CHECK:STDOUT: {name: str3, param_refs: block0, body: [block5]},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: integer_literals: [
|
||||
// CHECK:STDOUT: 1,
|
||||
@@ -32,30 +32,28 @@ fn Main() {
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: types: [
|
||||
// CHECK:STDOUT: nodeIntegerType,
|
||||
// CHECK:STDOUT: node+11,
|
||||
// CHECK:STDOUT: node+9,
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: type_blocks: [
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: nodes: [
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type0},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node+0, type: type0},
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type0},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str2, arg1: node+2, type: type0},
|
||||
// CHECK:STDOUT: {kind: VarStorage, arg0: str1, type: type0},
|
||||
// CHECK:STDOUT: {kind: VarStorage, arg0: str2, type: type0},
|
||||
// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: function0},
|
||||
// CHECK:STDOUT: {kind: Return},
|
||||
// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: function1},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int0, type: type0},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+7, type: type0},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+5, type: type0},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int1, type: type0},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+9, type: type0},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+7, type: type0},
|
||||
// CHECK:STDOUT: {kind: TupleType, arg0: typeBlock0, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: Call, arg0: block6, arg1: function0, type: type1},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int2, type: type0},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+13, type: type0},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+11, type: type0},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int3, type: type0},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+15, type: type0},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+13, type: type0},
|
||||
// CHECK:STDOUT: {kind: Call, arg0: block7, arg1: function0, type: type1},
|
||||
// CHECK:STDOUT: {kind: Return},
|
||||
// CHECK:STDOUT: ]
|
||||
@@ -65,21 +63,21 @@ fn Main() {
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+0,
|
||||
// CHECK:STDOUT: node+1,
|
||||
// CHECK:STDOUT: node+2,
|
||||
// CHECK:STDOUT: node+3,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+0,
|
||||
// CHECK:STDOUT: node+1,
|
||||
// CHECK:STDOUT: node+3,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+2,
|
||||
// CHECK:STDOUT: node+4,
|
||||
// CHECK:STDOUT: node+6,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+3,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+5,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+6,
|
||||
// CHECK:STDOUT: node+7,
|
||||
// CHECK:STDOUT: node+8,
|
||||
// CHECK:STDOUT: node+9,
|
||||
@@ -90,16 +88,14 @@ fn Main() {
|
||||
// CHECK:STDOUT: node+14,
|
||||
// CHECK:STDOUT: node+15,
|
||||
// CHECK:STDOUT: node+16,
|
||||
// CHECK:STDOUT: node+17,
|
||||
// CHECK:STDOUT: node+18,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+6,
|
||||
// CHECK:STDOUT: node+8,
|
||||
// CHECK:STDOUT: node+10,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+12,
|
||||
// CHECK:STDOUT: node+14,
|
||||
// CHECK:STDOUT: node+16,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT:
|
||||
|
||||
@@ -12,8 +12,8 @@ fn Main() {
|
||||
|
||||
// CHECK:STDOUT: cross_reference_irs_size: 1
|
||||
// CHECK:STDOUT: functions: [
|
||||
// CHECK:STDOUT: {name: str0, param_refs: block0, body: {block2}}},
|
||||
// CHECK:STDOUT: {name: str1, param_refs: block0, body: {block3}}},
|
||||
// CHECK:STDOUT: {name: str0, param_refs: block0, body: [block2]},
|
||||
// CHECK:STDOUT: {name: str1, param_refs: block0, body: [block3]},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: integer_literals: [
|
||||
// CHECK:STDOUT: ]
|
||||
|
||||
@@ -13,8 +13,8 @@ fn Main() {
|
||||
|
||||
// CHECK:STDOUT: cross_reference_irs_size: 1
|
||||
// CHECK:STDOUT: functions: [
|
||||
// CHECK:STDOUT: {name: str0, param_refs: block0, body: {block2}}},
|
||||
// CHECK:STDOUT: {name: str1, param_refs: block0, body: {block3}}},
|
||||
// CHECK:STDOUT: {name: str0, param_refs: block0, body: [block2]},
|
||||
// CHECK:STDOUT: {name: str1, param_refs: block0, body: [block3]},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: integer_literals: [
|
||||
// CHECK:STDOUT: ]
|
||||
@@ -38,10 +38,9 @@ fn Main() {
|
||||
// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: function1},
|
||||
// CHECK:STDOUT: {kind: TupleType, arg0: typeBlock0, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: TupleValue, arg0: block0, type: type0},
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type0},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str2, arg1: node+5, type: type0},
|
||||
// CHECK:STDOUT: {kind: VarStorage, arg0: str2, type: type0},
|
||||
// CHECK:STDOUT: {kind: Call, arg0: block0, arg1: function0, type: type0},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+5, arg1: node+7},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+5, arg1: node+6},
|
||||
// CHECK:STDOUT: {kind: Return},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: node_blocks: [
|
||||
@@ -61,7 +60,6 @@ fn Main() {
|
||||
// CHECK:STDOUT: node+6,
|
||||
// CHECK:STDOUT: node+7,
|
||||
// CHECK:STDOUT: node+8,
|
||||
// CHECK:STDOUT: node+9,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT:
|
||||
@@ -79,7 +77,7 @@ fn Main() {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %.loc11_11.1: type = tuple_type ()
|
||||
// CHECK:STDOUT: %.loc11_11.2: () = tuple_value ()
|
||||
// CHECK:STDOUT: %b: () = var
|
||||
// CHECK:STDOUT: %b: () = var "b"
|
||||
// CHECK:STDOUT: %.loc11_37: () = call @MakeImplicitEmptyTuple()
|
||||
// CHECK:STDOUT: assign %b, %.loc11_37
|
||||
// CHECK:STDOUT: return
|
||||
|
||||
@@ -11,7 +11,7 @@ fn G() { F(); }
|
||||
// CHECK:STDOUT: cross_reference_irs_size: 1
|
||||
// CHECK:STDOUT: functions: [
|
||||
// CHECK:STDOUT: {name: str0, param_refs: block0},
|
||||
// CHECK:STDOUT: {name: str1, param_refs: block0, body: {block2}}},
|
||||
// CHECK:STDOUT: {name: str1, param_refs: block0, body: [block2]},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: integer_literals: [
|
||||
// CHECK:STDOUT: ]
|
||||
|
||||
+9
-13
@@ -14,7 +14,7 @@ fn Bar(a: i32, a: i32) {}
|
||||
|
||||
// CHECK:STDOUT: cross_reference_irs_size: 1
|
||||
// CHECK:STDOUT: functions: [
|
||||
// CHECK:STDOUT: {name: str0, param_refs: block2, body: {block4}}},
|
||||
// CHECK:STDOUT: {name: str0, param_refs: block2, body: [block4]},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: integer_literals: [
|
||||
// CHECK:STDOUT: ]
|
||||
@@ -30,10 +30,8 @@ fn Bar(a: i32, a: i32) {}
|
||||
// CHECK:STDOUT: type_blocks: [
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: nodes: [
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type0},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node+0, type: type0},
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type0},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node+2, type: type0},
|
||||
// CHECK:STDOUT: {kind: VarStorage, arg0: str1, type: type0},
|
||||
// CHECK:STDOUT: {kind: VarStorage, arg0: str1, type: type0},
|
||||
// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: function0},
|
||||
// CHECK:STDOUT: {kind: Return},
|
||||
// CHECK:STDOUT: ]
|
||||
@@ -43,19 +41,17 @@ fn Bar(a: i32, a: i32) {}
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+0,
|
||||
// CHECK:STDOUT: node+1,
|
||||
// CHECK:STDOUT: node+2,
|
||||
// CHECK:STDOUT: node+3,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+0,
|
||||
// CHECK:STDOUT: node+1,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+2,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+3,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+4,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+5,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: package {
|
||||
|
||||
@@ -10,9 +10,9 @@ fn Baz() {}
|
||||
|
||||
// CHECK:STDOUT: cross_reference_irs_size: 1
|
||||
// CHECK:STDOUT: functions: [
|
||||
// CHECK:STDOUT: {name: str0, param_refs: block0, body: {block2}}},
|
||||
// CHECK:STDOUT: {name: str1, param_refs: block0, body: {block3}}},
|
||||
// CHECK:STDOUT: {name: str2, param_refs: block0, body: {block4}}},
|
||||
// CHECK:STDOUT: {name: str0, param_refs: block0, body: [block2]},
|
||||
// CHECK:STDOUT: {name: str1, param_refs: block0, body: [block3]},
|
||||
// CHECK:STDOUT: {name: str2, param_refs: block0, body: [block4]},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: integer_literals: [
|
||||
// CHECK:STDOUT: ]
|
||||
|
||||
@@ -8,7 +8,7 @@ fn Foo(a: i32) {}
|
||||
|
||||
// CHECK:STDOUT: cross_reference_irs_size: 1
|
||||
// CHECK:STDOUT: functions: [
|
||||
// CHECK:STDOUT: {name: str0, param_refs: block2, body: {block4}}},
|
||||
// CHECK:STDOUT: {name: str0, param_refs: block2, body: [block4]},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: integer_literals: [
|
||||
// CHECK:STDOUT: ]
|
||||
@@ -24,8 +24,7 @@ fn Foo(a: i32) {}
|
||||
// CHECK:STDOUT: type_blocks: [
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: nodes: [
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type0},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node+0, type: type0},
|
||||
// CHECK:STDOUT: {kind: VarStorage, arg0: str1, type: type0},
|
||||
// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: function0},
|
||||
// CHECK:STDOUT: {kind: Return},
|
||||
// CHECK:STDOUT: ]
|
||||
@@ -34,7 +33,9 @@ fn Foo(a: i32) {}
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+0,
|
||||
// CHECK:STDOUT: node+1,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+0,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+1,
|
||||
@@ -42,9 +43,6 @@ fn Foo(a: i32) {}
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+2,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+3,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: package {
|
||||
|
||||
@@ -8,7 +8,7 @@ fn Foo(a: i32,) {}
|
||||
|
||||
// CHECK:STDOUT: cross_reference_irs_size: 1
|
||||
// CHECK:STDOUT: functions: [
|
||||
// CHECK:STDOUT: {name: str0, param_refs: block2, body: {block4}}},
|
||||
// CHECK:STDOUT: {name: str0, param_refs: block2, body: [block4]},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: integer_literals: [
|
||||
// CHECK:STDOUT: ]
|
||||
@@ -24,8 +24,7 @@ fn Foo(a: i32,) {}
|
||||
// CHECK:STDOUT: type_blocks: [
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: nodes: [
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type0},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node+0, type: type0},
|
||||
// CHECK:STDOUT: {kind: VarStorage, arg0: str1, type: type0},
|
||||
// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: function0},
|
||||
// CHECK:STDOUT: {kind: Return},
|
||||
// CHECK:STDOUT: ]
|
||||
@@ -34,7 +33,9 @@ fn Foo(a: i32,) {}
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+0,
|
||||
// CHECK:STDOUT: node+1,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+0,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+1,
|
||||
@@ -42,9 +43,6 @@ fn Foo(a: i32,) {}
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+2,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+3,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: package {
|
||||
|
||||
@@ -8,7 +8,7 @@ fn Foo(a: i32, b: i32) {}
|
||||
|
||||
// CHECK:STDOUT: cross_reference_irs_size: 1
|
||||
// CHECK:STDOUT: functions: [
|
||||
// CHECK:STDOUT: {name: str0, param_refs: block2, body: {block4}}},
|
||||
// CHECK:STDOUT: {name: str0, param_refs: block2, body: [block4]},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: integer_literals: [
|
||||
// CHECK:STDOUT: ]
|
||||
@@ -25,10 +25,8 @@ fn Foo(a: i32, b: i32) {}
|
||||
// CHECK:STDOUT: type_blocks: [
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: nodes: [
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type0},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node+0, type: type0},
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type0},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str2, arg1: node+2, type: type0},
|
||||
// CHECK:STDOUT: {kind: VarStorage, arg0: str1, type: type0},
|
||||
// CHECK:STDOUT: {kind: VarStorage, arg0: str2, type: type0},
|
||||
// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: function0},
|
||||
// CHECK:STDOUT: {kind: Return},
|
||||
// CHECK:STDOUT: ]
|
||||
@@ -38,19 +36,17 @@ fn Foo(a: i32, b: i32) {}
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+0,
|
||||
// CHECK:STDOUT: node+1,
|
||||
// CHECK:STDOUT: node+2,
|
||||
// CHECK:STDOUT: node+3,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+0,
|
||||
// CHECK:STDOUT: node+1,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+2,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+3,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+4,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+5,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: package {
|
||||
|
||||
@@ -8,7 +8,7 @@ fn Foo(a: i32, b: i32,) {}
|
||||
|
||||
// CHECK:STDOUT: cross_reference_irs_size: 1
|
||||
// CHECK:STDOUT: functions: [
|
||||
// CHECK:STDOUT: {name: str0, param_refs: block2, body: {block4}}},
|
||||
// CHECK:STDOUT: {name: str0, param_refs: block2, body: [block4]},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: integer_literals: [
|
||||
// CHECK:STDOUT: ]
|
||||
@@ -25,10 +25,8 @@ fn Foo(a: i32, b: i32,) {}
|
||||
// CHECK:STDOUT: type_blocks: [
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: nodes: [
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type0},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node+0, type: type0},
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type0},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str2, arg1: node+2, type: type0},
|
||||
// CHECK:STDOUT: {kind: VarStorage, arg0: str1, type: type0},
|
||||
// CHECK:STDOUT: {kind: VarStorage, arg0: str2, type: type0},
|
||||
// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: function0},
|
||||
// CHECK:STDOUT: {kind: Return},
|
||||
// CHECK:STDOUT: ]
|
||||
@@ -38,19 +36,17 @@ fn Foo(a: i32, b: i32,) {}
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+0,
|
||||
// CHECK:STDOUT: node+1,
|
||||
// CHECK:STDOUT: node+2,
|
||||
// CHECK:STDOUT: node+3,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+0,
|
||||
// CHECK:STDOUT: node+1,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+2,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+3,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+4,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+5,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: package {
|
||||
|
||||
@@ -8,7 +8,7 @@ fn Foo() {}
|
||||
|
||||
// CHECK:STDOUT: cross_reference_irs_size: 1
|
||||
// CHECK:STDOUT: functions: [
|
||||
// CHECK:STDOUT: {name: str0, param_refs: block0, body: {block2}}},
|
||||
// CHECK:STDOUT: {name: str0, param_refs: block0, body: [block2]},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: integer_literals: [
|
||||
// CHECK:STDOUT: ]
|
||||
|
||||
@@ -9,8 +9,8 @@ fn Bar(a: i32) {}
|
||||
|
||||
// CHECK:STDOUT: cross_reference_irs_size: 1
|
||||
// CHECK:STDOUT: functions: [
|
||||
// CHECK:STDOUT: {name: str0, param_refs: block2, body: {block4}}},
|
||||
// CHECK:STDOUT: {name: str2, param_refs: block6, body: {block7}}},
|
||||
// CHECK:STDOUT: {name: str0, param_refs: block2, body: [block4]},
|
||||
// CHECK:STDOUT: {name: str2, param_refs: block6, body: [block7]},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: integer_literals: [
|
||||
// CHECK:STDOUT: ]
|
||||
@@ -27,12 +27,10 @@ fn Bar(a: i32) {}
|
||||
// CHECK:STDOUT: type_blocks: [
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: nodes: [
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type0},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node+0, type: type0},
|
||||
// CHECK:STDOUT: {kind: VarStorage, arg0: str1, type: type0},
|
||||
// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: function0},
|
||||
// CHECK:STDOUT: {kind: Return},
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type0},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node+4, type: type0},
|
||||
// CHECK:STDOUT: {kind: VarStorage, arg0: str1, type: type0},
|
||||
// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: function1},
|
||||
// CHECK:STDOUT: {kind: Return},
|
||||
// CHECK:STDOUT: ]
|
||||
@@ -41,28 +39,26 @@ fn Bar(a: i32) {}
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+0,
|
||||
// CHECK:STDOUT: node+1,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+0,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+1,
|
||||
// CHECK:STDOUT: node+4,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+2,
|
||||
// CHECK:STDOUT: node+6,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+3,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+4,
|
||||
// CHECK:STDOUT: node+5,
|
||||
// CHECK:STDOUT: node+3,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+5,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+7,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: package {
|
||||
|
||||
+13
-15
@@ -19,10 +19,10 @@ fn If(b: bool) {
|
||||
|
||||
// CHECK:STDOUT: cross_reference_irs_size: 1
|
||||
// CHECK:STDOUT: functions: [
|
||||
// CHECK:STDOUT: {name: str0, param_refs: block0, body: {block2}}},
|
||||
// CHECK:STDOUT: {name: str1, param_refs: block0, body: {block3}}},
|
||||
// CHECK:STDOUT: {name: str2, param_refs: block0, body: {block4}}},
|
||||
// CHECK:STDOUT: {name: str3, param_refs: block6, body: {block7, block8, block9, block10}}},
|
||||
// CHECK:STDOUT: {name: str0, param_refs: block0, body: [block2]},
|
||||
// CHECK:STDOUT: {name: str1, param_refs: block0, body: [block3]},
|
||||
// CHECK:STDOUT: {name: str2, param_refs: block0, body: [block4]},
|
||||
// CHECK:STDOUT: {name: str3, param_refs: block6, body: [block7, block8, block9, block10]},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: integer_literals: [
|
||||
// CHECK:STDOUT: ]
|
||||
@@ -37,7 +37,7 @@ fn If(b: bool) {
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: types: [
|
||||
// CHECK:STDOUT: nodeBoolType,
|
||||
// CHECK:STDOUT: node+11,
|
||||
// CHECK:STDOUT: node+10,
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: type_blocks: [
|
||||
// CHECK:STDOUT: [
|
||||
@@ -50,8 +50,7 @@ fn If(b: bool) {
|
||||
// CHECK:STDOUT: {kind: Return},
|
||||
// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: function2},
|
||||
// CHECK:STDOUT: {kind: Return},
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type0},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str4, arg1: node+6, type: type0},
|
||||
// CHECK:STDOUT: {kind: VarStorage, arg0: str4, type: type0},
|
||||
// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: function3},
|
||||
// CHECK:STDOUT: {kind: BranchIf, arg0: block8, arg1: node+6},
|
||||
// CHECK:STDOUT: {kind: Branch, arg0: block9},
|
||||
@@ -70,7 +69,7 @@ fn If(b: bool) {
|
||||
// CHECK:STDOUT: node+0,
|
||||
// CHECK:STDOUT: node+2,
|
||||
// CHECK:STDOUT: node+4,
|
||||
// CHECK:STDOUT: node+8,
|
||||
// CHECK:STDOUT: node+7,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+1,
|
||||
@@ -83,27 +82,26 @@ fn If(b: bool) {
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+6,
|
||||
// CHECK:STDOUT: node+7,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+7,
|
||||
// CHECK:STDOUT: node+6,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+8,
|
||||
// CHECK:STDOUT: node+9,
|
||||
// CHECK:STDOUT: node+10,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+10,
|
||||
// CHECK:STDOUT: node+11,
|
||||
// CHECK:STDOUT: node+13,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+12,
|
||||
// CHECK:STDOUT: node+14,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+13,
|
||||
// CHECK:STDOUT: node+15,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+16,
|
||||
// CHECK:STDOUT: node+17,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT:
|
||||
|
||||
@@ -35,9 +35,9 @@ fn If3(b: bool) -> i32 {
|
||||
|
||||
// CHECK:STDOUT: cross_reference_irs_size: 1
|
||||
// CHECK:STDOUT: functions: [
|
||||
// CHECK:STDOUT: {name: str0, param_refs: block2, return_type: type1, body: {block4, block5, block6, block7}}},
|
||||
// CHECK:STDOUT: {name: str2, param_refs: block9, return_type: type1, body: {block10, block11, block12, block13}}},
|
||||
// CHECK:STDOUT: {name: str3, param_refs: block15, return_type: type1, body: {block16, block17, block18}}},
|
||||
// CHECK:STDOUT: {name: str0, param_refs: block2, return_type: type1, body: [block4, block5, block6, block7]},
|
||||
// CHECK:STDOUT: {name: str2, param_refs: block9, return_type: type1, body: [block10, block11, block12, block13]},
|
||||
// CHECK:STDOUT: {name: str3, param_refs: block15, return_type: type1, body: [block16, block17, block18]},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: integer_literals: [
|
||||
// CHECK:STDOUT: 1,
|
||||
@@ -59,29 +59,26 @@ fn If3(b: bool) -> i32 {
|
||||
// CHECK:STDOUT: type_blocks: [
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: nodes: [
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type0},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node+0, type: type0},
|
||||
// CHECK:STDOUT: {kind: VarStorage, arg0: str1, type: type0},
|
||||
// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: function0},
|
||||
// CHECK:STDOUT: {kind: BranchIf, arg0: block5, arg1: node+0},
|
||||
// CHECK:STDOUT: {kind: Branch, arg0: block6},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int0, type: type1},
|
||||
// CHECK:STDOUT: {kind: ReturnExpression, arg0: node+5},
|
||||
// CHECK:STDOUT: {kind: ReturnExpression, arg0: node+4},
|
||||
// CHECK:STDOUT: {kind: Branch, arg0: block7},
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type0},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node+8, type: type0},
|
||||
// CHECK:STDOUT: {kind: VarStorage, arg0: str1, type: type0},
|
||||
// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: function1},
|
||||
// CHECK:STDOUT: {kind: BranchIf, arg0: block11, arg1: node+8},
|
||||
// CHECK:STDOUT: {kind: BranchIf, arg0: block11, arg1: node+7},
|
||||
// CHECK:STDOUT: {kind: Branch, arg0: block12},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int1, type: type1},
|
||||
// CHECK:STDOUT: {kind: ReturnExpression, arg0: node+13},
|
||||
// CHECK:STDOUT: {kind: ReturnExpression, arg0: node+11},
|
||||
// CHECK:STDOUT: {kind: Branch, arg0: block13},
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type0},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node+16, type: type0},
|
||||
// CHECK:STDOUT: {kind: VarStorage, arg0: str1, type: type0},
|
||||
// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: function2},
|
||||
// CHECK:STDOUT: {kind: BranchIf, arg0: block17, arg1: node+16},
|
||||
// CHECK:STDOUT: {kind: BranchIf, arg0: block17, arg1: node+14},
|
||||
// CHECK:STDOUT: {kind: Branch, arg0: block18},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int2, type: type1},
|
||||
// CHECK:STDOUT: {kind: ReturnExpression, arg0: node+21},
|
||||
// CHECK:STDOUT: {kind: ReturnExpression, arg0: node+18},
|
||||
// CHECK:STDOUT: {kind: Branch, arg0: block18},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: node_blocks: [
|
||||
@@ -89,63 +86,60 @@ fn If3(b: bool) -> i32 {
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+0,
|
||||
// CHECK:STDOUT: node+1,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+0,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+1,
|
||||
// CHECK:STDOUT: node+8,
|
||||
// CHECK:STDOUT: node+15,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+2,
|
||||
// CHECK:STDOUT: node+10,
|
||||
// CHECK:STDOUT: node+18,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+3,
|
||||
// CHECK:STDOUT: node+4,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+4,
|
||||
// CHECK:STDOUT: node+5,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+6,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+7,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+8,
|
||||
// CHECK:STDOUT: node+9,
|
||||
// CHECK:STDOUT: node+7,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+9,
|
||||
// CHECK:STDOUT: node+10,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+13,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+11,
|
||||
// CHECK:STDOUT: node+12,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+15,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+13,
|
||||
// CHECK:STDOUT: node+14,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+14,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+16,
|
||||
// CHECK:STDOUT: node+17,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+17,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+18,
|
||||
// CHECK:STDOUT: node+19,
|
||||
// CHECK:STDOUT: node+20,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+21,
|
||||
// CHECK:STDOUT: node+22,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: ],
|
||||
|
||||
+11
-15
@@ -17,7 +17,7 @@ fn VarScope(b: bool) -> i32 {
|
||||
|
||||
// CHECK:STDOUT: cross_reference_irs_size: 1
|
||||
// CHECK:STDOUT: functions: [
|
||||
// CHECK:STDOUT: {name: str0, param_refs: block2, return_type: type1, body: {block4, block5, block6}}},
|
||||
// CHECK:STDOUT: {name: str0, param_refs: block2, return_type: type1, body: [block4, block5, block6]},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: integer_literals: [
|
||||
// CHECK:STDOUT: 2,
|
||||
@@ -36,16 +36,14 @@ fn VarScope(b: bool) -> i32 {
|
||||
// CHECK:STDOUT: type_blocks: [
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: nodes: [
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type0},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node+0, type: type0},
|
||||
// CHECK:STDOUT: {kind: VarStorage, arg0: str1, type: type0},
|
||||
// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: function0},
|
||||
// CHECK:STDOUT: {kind: BranchIf, arg0: block5, arg1: node+0},
|
||||
// CHECK:STDOUT: {kind: Branch, arg0: block6},
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type1},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str2, arg1: node+5, type: type1},
|
||||
// CHECK:STDOUT: {kind: VarStorage, arg0: str2, type: type1},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int0, type: type1},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+5, arg1: node+7},
|
||||
// CHECK:STDOUT: {kind: ReturnExpression, arg0: node+5},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+4, arg1: node+5},
|
||||
// CHECK:STDOUT: {kind: ReturnExpression, arg0: node+4},
|
||||
// CHECK:STDOUT: {kind: Branch, arg0: block6},
|
||||
// CHECK:STDOUT: {kind: ReturnExpression, arg0: nodeError},
|
||||
// CHECK:STDOUT: ]
|
||||
@@ -54,27 +52,25 @@ fn VarScope(b: bool) -> i32 {
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+0,
|
||||
// CHECK:STDOUT: node+1,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+0,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+1,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+2,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+3,
|
||||
// CHECK:STDOUT: node+4,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+4,
|
||||
// CHECK:STDOUT: node+5,
|
||||
// CHECK:STDOUT: node+6,
|
||||
// CHECK:STDOUT: node+7,
|
||||
// CHECK:STDOUT: node+8,
|
||||
// CHECK:STDOUT: node+9,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+11,
|
||||
// CHECK:STDOUT: node+9,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT:
|
||||
@@ -87,7 +83,7 @@ fn VarScope(b: bool) -> i32 {
|
||||
// CHECK:STDOUT: if %b br !if.then else br !if.else
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !if.then:
|
||||
// CHECK:STDOUT: %n: i32 = var
|
||||
// CHECK:STDOUT: %n: i32 = var "n"
|
||||
// CHECK:STDOUT: %.loc9: i32 = int_literal 2
|
||||
// CHECK:STDOUT: assign %n, %.loc9
|
||||
// CHECK:STDOUT: return %n
|
||||
|
||||
+10
-12
@@ -16,9 +16,9 @@ fn If(b: bool) {
|
||||
|
||||
// CHECK:STDOUT: cross_reference_irs_size: 1
|
||||
// CHECK:STDOUT: functions: [
|
||||
// CHECK:STDOUT: {name: str0, param_refs: block0, body: {block2}}},
|
||||
// CHECK:STDOUT: {name: str1, param_refs: block0, body: {block3}}},
|
||||
// CHECK:STDOUT: {name: str2, param_refs: block5, body: {block6, block7, block8}}},
|
||||
// CHECK:STDOUT: {name: str0, param_refs: block0, body: [block2]},
|
||||
// CHECK:STDOUT: {name: str1, param_refs: block0, body: [block3]},
|
||||
// CHECK:STDOUT: {name: str2, param_refs: block5, body: [block6, block7, block8]},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: integer_literals: [
|
||||
// CHECK:STDOUT: ]
|
||||
@@ -32,7 +32,7 @@ fn If(b: bool) {
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: types: [
|
||||
// CHECK:STDOUT: nodeBoolType,
|
||||
// CHECK:STDOUT: node+9,
|
||||
// CHECK:STDOUT: node+8,
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: type_blocks: [
|
||||
// CHECK:STDOUT: [
|
||||
@@ -43,8 +43,7 @@ fn If(b: bool) {
|
||||
// CHECK:STDOUT: {kind: Return},
|
||||
// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: function1},
|
||||
// CHECK:STDOUT: {kind: Return},
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type0},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str3, arg1: node+4, type: type0},
|
||||
// CHECK:STDOUT: {kind: VarStorage, arg0: str3, type: type0},
|
||||
// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: function2},
|
||||
// CHECK:STDOUT: {kind: BranchIf, arg0: block7, arg1: node+4},
|
||||
// CHECK:STDOUT: {kind: Branch, arg0: block8},
|
||||
@@ -60,7 +59,7 @@ fn If(b: bool) {
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+0,
|
||||
// CHECK:STDOUT: node+2,
|
||||
// CHECK:STDOUT: node+6,
|
||||
// CHECK:STDOUT: node+5,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+1,
|
||||
@@ -70,23 +69,22 @@ fn If(b: bool) {
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+4,
|
||||
// CHECK:STDOUT: node+5,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+5,
|
||||
// CHECK:STDOUT: node+4,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+6,
|
||||
// CHECK:STDOUT: node+7,
|
||||
// CHECK:STDOUT: node+8,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+8,
|
||||
// CHECK:STDOUT: node+9,
|
||||
// CHECK:STDOUT: node+10,
|
||||
// CHECK:STDOUT: node+11,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+11,
|
||||
// CHECK:STDOUT: node+12,
|
||||
// CHECK:STDOUT: node+13,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT:
|
||||
|
||||
+10
-12
@@ -15,7 +15,7 @@ fn If(b: bool) -> i32 {
|
||||
|
||||
// CHECK:STDOUT: cross_reference_irs_size: 1
|
||||
// CHECK:STDOUT: functions: [
|
||||
// CHECK:STDOUT: {name: str0, param_refs: block2, return_type: type1, body: {block4, block5, block6}}},
|
||||
// CHECK:STDOUT: {name: str0, param_refs: block2, return_type: type1, body: [block4, block5, block6]},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: integer_literals: [
|
||||
// CHECK:STDOUT: 1,
|
||||
@@ -34,40 +34,38 @@ fn If(b: bool) -> i32 {
|
||||
// CHECK:STDOUT: type_blocks: [
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: nodes: [
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type0},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node+0, type: type0},
|
||||
// CHECK:STDOUT: {kind: VarStorage, arg0: str1, type: type0},
|
||||
// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: function0},
|
||||
// CHECK:STDOUT: {kind: BranchIf, arg0: block5, arg1: node+0},
|
||||
// CHECK:STDOUT: {kind: Branch, arg0: block6},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int0, type: type1},
|
||||
// CHECK:STDOUT: {kind: ReturnExpression, arg0: node+5},
|
||||
// CHECK:STDOUT: {kind: ReturnExpression, arg0: node+4},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int1, type: type1},
|
||||
// CHECK:STDOUT: {kind: ReturnExpression, arg0: node+7},
|
||||
// CHECK:STDOUT: {kind: ReturnExpression, arg0: node+6},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: node_blocks: [
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+0,
|
||||
// CHECK:STDOUT: node+1,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+0,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+1,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+2,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+3,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+4,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+5,
|
||||
// CHECK:STDOUT: node+6,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+6,
|
||||
// CHECK:STDOUT: node+7,
|
||||
// CHECK:STDOUT: node+8,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT:
|
||||
|
||||
+20
-26
@@ -10,7 +10,7 @@ fn F(b: bool, n: i32, m: i32) -> i32 {
|
||||
|
||||
// CHECK:STDOUT: cross_reference_irs_size: 1
|
||||
// CHECK:STDOUT: functions: [
|
||||
// CHECK:STDOUT: {name: str0, param_refs: block2, return_type: type1, body: {block4, block5, block6, block7}}},
|
||||
// CHECK:STDOUT: {name: str0, param_refs: block2, return_type: type1, body: [block4, block5, block6, block7]},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: integer_literals: [
|
||||
// CHECK:STDOUT: ]
|
||||
@@ -29,21 +29,18 @@ fn F(b: bool, n: i32, m: i32) -> i32 {
|
||||
// CHECK:STDOUT: type_blocks: [
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: nodes: [
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type0},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node+0, type: type0},
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type1},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str2, arg1: node+2, type: type1},
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type1},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str3, arg1: node+4, type: type1},
|
||||
// CHECK:STDOUT: {kind: VarStorage, arg0: str1, type: type0},
|
||||
// CHECK:STDOUT: {kind: VarStorage, arg0: str2, type: type1},
|
||||
// CHECK:STDOUT: {kind: VarStorage, arg0: str3, type: type1},
|
||||
// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: function0},
|
||||
// CHECK:STDOUT: {kind: BranchIf, arg0: block5, arg1: node+0},
|
||||
// CHECK:STDOUT: {kind: Branch, arg0: block6},
|
||||
// CHECK:STDOUT: {kind: BinaryOperatorAdd, arg0: node+2, arg1: node+4, type: type1},
|
||||
// CHECK:STDOUT: {kind: BinaryOperatorAdd, arg0: node+4, arg1: node+2, type: type1},
|
||||
// CHECK:STDOUT: {kind: BranchWithArg, arg0: block7, arg1: node+9},
|
||||
// CHECK:STDOUT: {kind: BranchWithArg, arg0: block7, arg1: node+10},
|
||||
// CHECK:STDOUT: {kind: BinaryOperatorAdd, arg0: node+1, arg1: node+2, type: type1},
|
||||
// CHECK:STDOUT: {kind: BinaryOperatorAdd, arg0: node+2, arg1: node+1, type: type1},
|
||||
// CHECK:STDOUT: {kind: BranchWithArg, arg0: block7, arg1: node+6},
|
||||
// CHECK:STDOUT: {kind: BranchWithArg, arg0: block7, arg1: node+7},
|
||||
// CHECK:STDOUT: {kind: BlockArg, arg0: block7, type: type1},
|
||||
// CHECK:STDOUT: {kind: ReturnExpression, arg0: node+13},
|
||||
// CHECK:STDOUT: {kind: ReturnExpression, arg0: node+10},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: node_blocks: [
|
||||
// CHECK:STDOUT: [
|
||||
@@ -52,33 +49,30 @@ fn F(b: bool, n: i32, m: i32) -> i32 {
|
||||
// CHECK:STDOUT: node+0,
|
||||
// CHECK:STDOUT: node+1,
|
||||
// CHECK:STDOUT: node+2,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+0,
|
||||
// CHECK:STDOUT: node+1,
|
||||
// CHECK:STDOUT: node+2,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+3,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+4,
|
||||
// CHECK:STDOUT: node+5,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+1,
|
||||
// CHECK:STDOUT: node+3,
|
||||
// CHECK:STDOUT: node+5,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+6,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+7,
|
||||
// CHECK:STDOUT: node+8,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+7,
|
||||
// CHECK:STDOUT: node+9,
|
||||
// CHECK:STDOUT: node+11,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+10,
|
||||
// CHECK:STDOUT: node+12,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+13,
|
||||
// CHECK:STDOUT: node+14,
|
||||
// CHECK:STDOUT: node+11,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT:
|
||||
|
||||
@@ -17,10 +17,10 @@ fn G() -> i32 {
|
||||
|
||||
// CHECK:STDOUT: cross_reference_irs_size: 1
|
||||
// CHECK:STDOUT: functions: [
|
||||
// CHECK:STDOUT: {name: str0, param_refs: block0, return_type: type0, body: {block2}}},
|
||||
// CHECK:STDOUT: {name: str1, param_refs: block0, return_type: type0, body: {block3}}},
|
||||
// CHECK:STDOUT: {name: str2, param_refs: block0, return_type: type0, body: {block4, block5, block6, block7}}},
|
||||
// CHECK:STDOUT: {name: str3, param_refs: block0, return_type: type0, body: {block8, block9, block10, block11}}},
|
||||
// CHECK:STDOUT: {name: str0, param_refs: block0, return_type: type0, body: [block2]},
|
||||
// CHECK:STDOUT: {name: str1, param_refs: block0, return_type: type0, body: [block3]},
|
||||
// CHECK:STDOUT: {name: str2, param_refs: block0, return_type: type0, body: [block4, block5, block6, block7]},
|
||||
// CHECK:STDOUT: {name: str3, param_refs: block0, return_type: type0, body: [block8, block9, block10, block11]},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: integer_literals: [
|
||||
// CHECK:STDOUT: 1,
|
||||
|
||||
+12
-14
@@ -13,9 +13,9 @@ fn F(b: bool) -> i32 {
|
||||
|
||||
// CHECK:STDOUT: cross_reference_irs_size: 1
|
||||
// CHECK:STDOUT: functions: [
|
||||
// CHECK:STDOUT: {name: str0, param_refs: block0, return_type: type0, body: {block2}}},
|
||||
// CHECK:STDOUT: {name: str1, param_refs: block0, return_type: type0, body: {block3}}},
|
||||
// CHECK:STDOUT: {name: str2, param_refs: block5, return_type: type0, body: {block6, block7, block8, block9}}},
|
||||
// CHECK:STDOUT: {name: str0, param_refs: block0, return_type: type0, body: [block2]},
|
||||
// CHECK:STDOUT: {name: str1, param_refs: block0, return_type: type0, body: [block3]},
|
||||
// CHECK:STDOUT: {name: str2, param_refs: block5, return_type: type0, body: [block6, block7, block8, block9]},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: integer_literals: [
|
||||
// CHECK:STDOUT: 1,
|
||||
@@ -42,17 +42,16 @@ fn F(b: bool) -> i32 {
|
||||
// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: function1},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int1, type: type0},
|
||||
// CHECK:STDOUT: {kind: ReturnExpression, arg0: node+4},
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type1},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str3, arg1: node+6, type: type1},
|
||||
// CHECK:STDOUT: {kind: VarStorage, arg0: str3, type: type1},
|
||||
// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: function2},
|
||||
// CHECK:STDOUT: {kind: BranchIf, arg0: block7, arg1: node+6},
|
||||
// CHECK:STDOUT: {kind: Branch, arg0: block8},
|
||||
// CHECK:STDOUT: {kind: Call, arg0: block0, arg1: function0, type: type0},
|
||||
// CHECK:STDOUT: {kind: Call, arg0: block0, arg1: function1, type: type0},
|
||||
// CHECK:STDOUT: {kind: BranchWithArg, arg0: block9, arg1: node+10},
|
||||
// CHECK:STDOUT: {kind: BranchWithArg, arg0: block9, arg1: node+11},
|
||||
// CHECK:STDOUT: {kind: BranchWithArg, arg0: block9, arg1: node+12},
|
||||
// CHECK:STDOUT: {kind: BlockArg, arg0: block9, type: type0},
|
||||
// CHECK:STDOUT: {kind: ReturnExpression, arg0: node+15},
|
||||
// CHECK:STDOUT: {kind: ReturnExpression, arg0: node+14},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: node_blocks: [
|
||||
// CHECK:STDOUT: [
|
||||
@@ -60,7 +59,7 @@ fn F(b: bool) -> i32 {
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+0,
|
||||
// CHECK:STDOUT: node+3,
|
||||
// CHECK:STDOUT: node+8,
|
||||
// CHECK:STDOUT: node+7,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+1,
|
||||
@@ -72,26 +71,25 @@ fn F(b: bool) -> i32 {
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+6,
|
||||
// CHECK:STDOUT: node+7,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+7,
|
||||
// CHECK:STDOUT: node+6,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+8,
|
||||
// CHECK:STDOUT: node+9,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+10,
|
||||
// CHECK:STDOUT: node+12,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+11,
|
||||
// CHECK:STDOUT: node+13,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+12,
|
||||
// CHECK:STDOUT: node+14,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+15,
|
||||
// CHECK:STDOUT: node+16,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT:
|
||||
|
||||
+38
-44
@@ -10,7 +10,7 @@ fn F(a: bool, b: bool, c: bool) -> i32 {
|
||||
|
||||
// CHECK:STDOUT: cross_reference_irs_size: 1
|
||||
// CHECK:STDOUT: functions: [
|
||||
// CHECK:STDOUT: {name: str0, param_refs: block2, return_type: type1, body: {block4, block5, block7, block8, block9, block6, block10, block11, block12, block13}}},
|
||||
// CHECK:STDOUT: {name: str0, param_refs: block2, return_type: type1, body: [block4, block5, block7, block8, block9, block6, block10, block11, block12, block13]},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: integer_literals: [
|
||||
// CHECK:STDOUT: 1,
|
||||
@@ -33,33 +33,30 @@ fn F(a: bool, b: bool, c: bool) -> i32 {
|
||||
// CHECK:STDOUT: type_blocks: [
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: nodes: [
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type0},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node+0, type: type0},
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type0},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str2, arg1: node+2, type: type0},
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type0},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str3, arg1: node+4, type: type0},
|
||||
// CHECK:STDOUT: {kind: VarStorage, arg0: str1, type: type0},
|
||||
// CHECK:STDOUT: {kind: VarStorage, arg0: str2, type: type0},
|
||||
// CHECK:STDOUT: {kind: VarStorage, arg0: str3, type: type0},
|
||||
// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: function0},
|
||||
// CHECK:STDOUT: {kind: BranchIf, arg0: block5, arg1: node+0},
|
||||
// CHECK:STDOUT: {kind: Branch, arg0: block6},
|
||||
// CHECK:STDOUT: {kind: BranchIf, arg0: block7, arg1: node+2},
|
||||
// CHECK:STDOUT: {kind: BranchIf, arg0: block7, arg1: node+1},
|
||||
// CHECK:STDOUT: {kind: Branch, arg0: block8},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int0, type: type1},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int1, type: type1},
|
||||
// CHECK:STDOUT: {kind: BranchWithArg, arg0: block9, arg1: node+11},
|
||||
// CHECK:STDOUT: {kind: BranchWithArg, arg0: block9, arg1: node+12},
|
||||
// CHECK:STDOUT: {kind: BranchWithArg, arg0: block9, arg1: node+8},
|
||||
// CHECK:STDOUT: {kind: BranchWithArg, arg0: block9, arg1: node+9},
|
||||
// CHECK:STDOUT: {kind: BlockArg, arg0: block9, type: type1},
|
||||
// CHECK:STDOUT: {kind: BranchIf, arg0: block10, arg1: node+4},
|
||||
// CHECK:STDOUT: {kind: BranchIf, arg0: block10, arg1: node+2},
|
||||
// CHECK:STDOUT: {kind: Branch, arg0: block11},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int2, type: type1},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int3, type: type1},
|
||||
// CHECK:STDOUT: {kind: BranchWithArg, arg0: block12, arg1: node+18},
|
||||
// CHECK:STDOUT: {kind: BranchWithArg, arg0: block12, arg1: node+19},
|
||||
// CHECK:STDOUT: {kind: BranchWithArg, arg0: block12, arg1: node+15},
|
||||
// CHECK:STDOUT: {kind: BranchWithArg, arg0: block12, arg1: node+16},
|
||||
// CHECK:STDOUT: {kind: BlockArg, arg0: block12, type: type1},
|
||||
// CHECK:STDOUT: {kind: BranchWithArg, arg0: block13, arg1: node+15},
|
||||
// CHECK:STDOUT: {kind: BranchWithArg, arg0: block13, arg1: node+22},
|
||||
// CHECK:STDOUT: {kind: BranchWithArg, arg0: block13, arg1: node+12},
|
||||
// CHECK:STDOUT: {kind: BranchWithArg, arg0: block13, arg1: node+19},
|
||||
// CHECK:STDOUT: {kind: BlockArg, arg0: block13, type: type1},
|
||||
// CHECK:STDOUT: {kind: ReturnExpression, arg0: node+25},
|
||||
// CHECK:STDOUT: {kind: ReturnExpression, arg0: node+22},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: node_blocks: [
|
||||
// CHECK:STDOUT: [
|
||||
@@ -68,57 +65,54 @@ fn F(a: bool, b: bool, c: bool) -> i32 {
|
||||
// CHECK:STDOUT: node+0,
|
||||
// CHECK:STDOUT: node+1,
|
||||
// CHECK:STDOUT: node+2,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+0,
|
||||
// CHECK:STDOUT: node+1,
|
||||
// CHECK:STDOUT: node+2,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+3,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+4,
|
||||
// CHECK:STDOUT: node+5,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+1,
|
||||
// CHECK:STDOUT: node+3,
|
||||
// CHECK:STDOUT: node+5,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+6,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+7,
|
||||
// CHECK:STDOUT: node+8,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+9,
|
||||
// CHECK:STDOUT: node+10,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+16,
|
||||
// CHECK:STDOUT: node+17,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+11,
|
||||
// CHECK:STDOUT: node+13,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+12,
|
||||
// CHECK:STDOUT: node+14,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+15,
|
||||
// CHECK:STDOUT: node+23,
|
||||
// CHECK:STDOUT: node+8,
|
||||
// CHECK:STDOUT: node+10,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+18,
|
||||
// CHECK:STDOUT: node+9,
|
||||
// CHECK:STDOUT: node+11,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+12,
|
||||
// CHECK:STDOUT: node+20,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+15,
|
||||
// CHECK:STDOUT: node+17,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+16,
|
||||
// CHECK:STDOUT: node+18,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+19,
|
||||
// CHECK:STDOUT: node+21,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+22,
|
||||
// CHECK:STDOUT: node+24,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+25,
|
||||
// CHECK:STDOUT: node+26,
|
||||
// CHECK:STDOUT: node+23,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT:
|
||||
|
||||
+20
-28
@@ -30,7 +30,7 @@ var d: i32 = a[b];
|
||||
// CHECK:STDOUT: types: [
|
||||
// CHECK:STDOUT: nodeIntegerType,
|
||||
// CHECK:STDOUT: node+1,
|
||||
// CHECK:STDOUT: node+8,
|
||||
// CHECK:STDOUT: node+7,
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: type_blocks: [
|
||||
// CHECK:STDOUT: [
|
||||
@@ -41,29 +41,25 @@ var d: i32 = a[b];
|
||||
// CHECK:STDOUT: nodes: [
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int0, type: type0},
|
||||
// CHECK:STDOUT: {kind: ArrayType, arg0: node+0, arg1: type0, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type1},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node+2, type: type1},
|
||||
// CHECK:STDOUT: {kind: VarStorage, arg0: str0, type: type1},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int1, type: type0},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+4, type: type0},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+3, type: type0},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int2, type: type0},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+6, type: type0},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+5, type: type0},
|
||||
// CHECK:STDOUT: {kind: TupleType, arg0: typeBlock0, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: TupleValue, arg0: block2, type: type2},
|
||||
// CHECK:STDOUT: {kind: ArrayValue, arg0: node+9, type: type1},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+2, arg1: node+10},
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type0},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node+12, type: type0},
|
||||
// CHECK:STDOUT: {kind: ArrayValue, arg0: node+8, type: type1},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+2, arg1: node+9},
|
||||
// CHECK:STDOUT: {kind: VarStorage, arg0: str1, type: type0},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int3, type: type0},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+12, arg1: node+14},
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type0},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str2, arg1: node+16, type: type0},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+11, arg1: node+12},
|
||||
// CHECK:STDOUT: {kind: VarStorage, arg0: str2, type: type0},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int4, type: type0},
|
||||
// CHECK:STDOUT: {kind: ArrayIndex, arg0: node+2, arg1: node+18, type: type0},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+16, arg1: node+19},
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type0},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str3, arg1: node+21, type: type0},
|
||||
// CHECK:STDOUT: {kind: ArrayIndex, arg0: node+2, arg1: node+12, type: type0},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+21, arg1: node+23},
|
||||
// CHECK:STDOUT: {kind: ArrayIndex, arg0: node+2, arg1: node+15, type: type0},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+14, arg1: node+16},
|
||||
// CHECK:STDOUT: {kind: VarStorage, arg0: str3, type: type0},
|
||||
// CHECK:STDOUT: {kind: ArrayIndex, arg0: node+2, arg1: node+11, type: type0},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+18, arg1: node+19},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: node_blocks: [
|
||||
// CHECK:STDOUT: [
|
||||
@@ -90,21 +86,17 @@ var d: i32 = a[b];
|
||||
// CHECK:STDOUT: node+18,
|
||||
// CHECK:STDOUT: node+19,
|
||||
// CHECK:STDOUT: node+20,
|
||||
// CHECK:STDOUT: node+21,
|
||||
// CHECK:STDOUT: node+22,
|
||||
// CHECK:STDOUT: node+23,
|
||||
// CHECK:STDOUT: node+24,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+5,
|
||||
// CHECK:STDOUT: node+7,
|
||||
// CHECK:STDOUT: node+4,
|
||||
// CHECK:STDOUT: node+6,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: package {
|
||||
// CHECK:STDOUT: %.loc7_14: i32 = int_literal 2
|
||||
// CHECK:STDOUT: %.loc7_15: type = array_type %.loc7_14, i32
|
||||
// CHECK:STDOUT: %a: [i32; 2] = var
|
||||
// CHECK:STDOUT: %a: [i32; 2] = var "a"
|
||||
// CHECK:STDOUT: %.loc7_20.1: i32 = int_literal 12
|
||||
// CHECK:STDOUT: %.loc7_20.2: i32 = stub_reference %.loc7_20.1
|
||||
// CHECK:STDOUT: %.loc7_24.1: i32 = int_literal 24
|
||||
@@ -113,14 +105,14 @@ var d: i32 = a[b];
|
||||
// CHECK:STDOUT: %.loc7_26.2: (i32, i32) = tuple_value (%.loc7_20.2, %.loc7_24.2)
|
||||
// CHECK:STDOUT: %.loc7_26.3: [i32; 2] = array_value %.loc7_26.2
|
||||
// CHECK:STDOUT: assign %a, %.loc7_26.3
|
||||
// CHECK:STDOUT: %b: i32 = var
|
||||
// CHECK:STDOUT: %b: i32 = var "b"
|
||||
// CHECK:STDOUT: %.loc8: i32 = int_literal 1
|
||||
// CHECK:STDOUT: assign %b, %.loc8
|
||||
// CHECK:STDOUT: %c: i32 = var
|
||||
// CHECK:STDOUT: %c: i32 = var "c"
|
||||
// CHECK:STDOUT: %.loc9_16: i32 = int_literal 0
|
||||
// CHECK:STDOUT: %.loc9_17: i32 = array_index %a, %.loc9_16
|
||||
// CHECK:STDOUT: assign %c, %.loc9_17
|
||||
// CHECK:STDOUT: %d: i32 = var
|
||||
// CHECK:STDOUT: %d: i32 = var "d"
|
||||
// CHECK:STDOUT: %.loc10: i32 = array_index %a, %b
|
||||
// CHECK:STDOUT: assign %d, %.loc10
|
||||
// CHECK:STDOUT: }
|
||||
|
||||
@@ -27,7 +27,7 @@ var b: i32 = a[0xFFFFFFFFFFFFFFFFF];
|
||||
// CHECK:STDOUT: types: [
|
||||
// CHECK:STDOUT: nodeIntegerType,
|
||||
// CHECK:STDOUT: node+1,
|
||||
// CHECK:STDOUT: node+6,
|
||||
// CHECK:STDOUT: node+5,
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: type_blocks: [
|
||||
// CHECK:STDOUT: [
|
||||
@@ -37,18 +37,16 @@ var b: i32 = a[0xFFFFFFFFFFFFFFFFF];
|
||||
// CHECK:STDOUT: nodes: [
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int0, type: type0},
|
||||
// CHECK:STDOUT: {kind: ArrayType, arg0: node+0, arg1: type0, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type1},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node+2, type: type1},
|
||||
// CHECK:STDOUT: {kind: VarStorage, arg0: str0, type: type1},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int1, type: type0},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+4, type: type0},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+3, type: type0},
|
||||
// CHECK:STDOUT: {kind: TupleType, arg0: typeBlock0, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: TupleValue, arg0: block2, type: type2},
|
||||
// CHECK:STDOUT: {kind: ArrayValue, arg0: node+7, type: type1},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+2, arg1: node+8},
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type0},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node+10, type: type0},
|
||||
// CHECK:STDOUT: {kind: ArrayValue, arg0: node+6, type: type1},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+2, arg1: node+7},
|
||||
// CHECK:STDOUT: {kind: VarStorage, arg0: str1, type: type0},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int2, type: type0},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+10, arg1: nodeError},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+9, arg1: nodeError},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: node_blocks: [
|
||||
// CHECK:STDOUT: [
|
||||
@@ -66,25 +64,23 @@ var b: i32 = a[0xFFFFFFFFFFFFFFFFF];
|
||||
// CHECK:STDOUT: node+9,
|
||||
// CHECK:STDOUT: node+10,
|
||||
// CHECK:STDOUT: node+11,
|
||||
// CHECK:STDOUT: node+12,
|
||||
// CHECK:STDOUT: node+13,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+5,
|
||||
// CHECK:STDOUT: node+4,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: package {
|
||||
// CHECK:STDOUT: %.loc7_14: i32 = int_literal 1
|
||||
// CHECK:STDOUT: %.loc7_15: type = array_type %.loc7_14, i32
|
||||
// CHECK:STDOUT: %a: [i32; 1] = var
|
||||
// CHECK:STDOUT: %a: [i32; 1] = var "a"
|
||||
// CHECK:STDOUT: %.loc7_20.1: i32 = int_literal 12
|
||||
// CHECK:STDOUT: %.loc7_20.2: i32 = stub_reference %.loc7_20.1
|
||||
// CHECK:STDOUT: %.loc7_23.1: type = tuple_type (i32)
|
||||
// CHECK:STDOUT: %.loc7_23.2: (i32,) = tuple_value (%.loc7_20.2)
|
||||
// CHECK:STDOUT: %.loc7_23.3: [i32; 1] = array_value %.loc7_23.2
|
||||
// CHECK:STDOUT: assign %a, %.loc7_23.3
|
||||
// CHECK:STDOUT: %b: i32 = var
|
||||
// CHECK:STDOUT: %b: i32 = var "b"
|
||||
// CHECK:STDOUT: %.loc11: i32 = int_literal -1
|
||||
// CHECK:STDOUT: assign %b, <error>
|
||||
// CHECK:STDOUT: }
|
||||
|
||||
@@ -27,7 +27,7 @@ var b: i32 = a[2.6];
|
||||
// CHECK:STDOUT: types: [
|
||||
// CHECK:STDOUT: nodeIntegerType,
|
||||
// CHECK:STDOUT: node+1,
|
||||
// CHECK:STDOUT: node+6,
|
||||
// CHECK:STDOUT: node+5,
|
||||
// CHECK:STDOUT: nodeFloatingPointType,
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: type_blocks: [
|
||||
@@ -38,18 +38,16 @@ var b: i32 = a[2.6];
|
||||
// CHECK:STDOUT: nodes: [
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int0, type: type0},
|
||||
// CHECK:STDOUT: {kind: ArrayType, arg0: node+0, arg1: type0, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type1},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node+2, type: type1},
|
||||
// CHECK:STDOUT: {kind: VarStorage, arg0: str0, type: type1},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int1, type: type0},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+4, type: type0},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+3, type: type0},
|
||||
// CHECK:STDOUT: {kind: TupleType, arg0: typeBlock0, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: TupleValue, arg0: block2, type: type2},
|
||||
// CHECK:STDOUT: {kind: ArrayValue, arg0: node+7, type: type1},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+2, arg1: node+8},
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type0},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node+10, type: type0},
|
||||
// CHECK:STDOUT: {kind: ArrayValue, arg0: node+6, type: type1},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+2, arg1: node+7},
|
||||
// CHECK:STDOUT: {kind: VarStorage, arg0: str1, type: type0},
|
||||
// CHECK:STDOUT: {kind: RealLiteral, arg0: real0, type: type3},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+10, arg1: nodeError},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+9, arg1: nodeError},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: node_blocks: [
|
||||
// CHECK:STDOUT: [
|
||||
@@ -67,25 +65,23 @@ var b: i32 = a[2.6];
|
||||
// CHECK:STDOUT: node+9,
|
||||
// CHECK:STDOUT: node+10,
|
||||
// CHECK:STDOUT: node+11,
|
||||
// CHECK:STDOUT: node+12,
|
||||
// CHECK:STDOUT: node+13,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+5,
|
||||
// CHECK:STDOUT: node+4,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: package {
|
||||
// CHECK:STDOUT: %.loc7_14: i32 = int_literal 1
|
||||
// CHECK:STDOUT: %.loc7_15: type = array_type %.loc7_14, i32
|
||||
// CHECK:STDOUT: %a: [i32; 1] = var
|
||||
// CHECK:STDOUT: %a: [i32; 1] = var "a"
|
||||
// CHECK:STDOUT: %.loc7_20.1: i32 = int_literal 12
|
||||
// CHECK:STDOUT: %.loc7_20.2: i32 = stub_reference %.loc7_20.1
|
||||
// CHECK:STDOUT: %.loc7_23.1: type = tuple_type (i32)
|
||||
// CHECK:STDOUT: %.loc7_23.2: (i32,) = tuple_value (%.loc7_20.2)
|
||||
// CHECK:STDOUT: %.loc7_23.3: [i32; 1] = array_value %.loc7_23.2
|
||||
// CHECK:STDOUT: assign %a, %.loc7_23.3
|
||||
// CHECK:STDOUT: %b: i32 = var
|
||||
// CHECK:STDOUT: %b: i32 = var "b"
|
||||
// CHECK:STDOUT: %.loc11: f64 = real_literal 26e-1
|
||||
// CHECK:STDOUT: assign %b, <error>
|
||||
// CHECK:STDOUT: }
|
||||
|
||||
@@ -27,7 +27,7 @@ var b: i32 = a[2];
|
||||
// CHECK:STDOUT: types: [
|
||||
// CHECK:STDOUT: nodeIntegerType,
|
||||
// CHECK:STDOUT: node+1,
|
||||
// CHECK:STDOUT: node+6,
|
||||
// CHECK:STDOUT: node+5,
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: type_blocks: [
|
||||
// CHECK:STDOUT: [
|
||||
@@ -37,18 +37,16 @@ var b: i32 = a[2];
|
||||
// CHECK:STDOUT: nodes: [
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int0, type: type0},
|
||||
// CHECK:STDOUT: {kind: ArrayType, arg0: node+0, arg1: type0, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type1},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node+2, type: type1},
|
||||
// CHECK:STDOUT: {kind: VarStorage, arg0: str0, type: type1},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int1, type: type0},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+4, type: type0},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+3, type: type0},
|
||||
// CHECK:STDOUT: {kind: TupleType, arg0: typeBlock0, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: TupleValue, arg0: block2, type: type2},
|
||||
// CHECK:STDOUT: {kind: ArrayValue, arg0: node+7, type: type1},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+2, arg1: node+8},
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type0},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node+10, type: type0},
|
||||
// CHECK:STDOUT: {kind: ArrayValue, arg0: node+6, type: type1},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+2, arg1: node+7},
|
||||
// CHECK:STDOUT: {kind: VarStorage, arg0: str1, type: type0},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int2, type: type0},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+10, arg1: nodeError},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+9, arg1: nodeError},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: node_blocks: [
|
||||
// CHECK:STDOUT: [
|
||||
@@ -66,25 +64,23 @@ var b: i32 = a[2];
|
||||
// CHECK:STDOUT: node+9,
|
||||
// CHECK:STDOUT: node+10,
|
||||
// CHECK:STDOUT: node+11,
|
||||
// CHECK:STDOUT: node+12,
|
||||
// CHECK:STDOUT: node+13,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+5,
|
||||
// CHECK:STDOUT: node+4,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: package {
|
||||
// CHECK:STDOUT: %.loc7_14: i32 = int_literal 1
|
||||
// CHECK:STDOUT: %.loc7_15: type = array_type %.loc7_14, i32
|
||||
// CHECK:STDOUT: %a: [i32; 1] = var
|
||||
// CHECK:STDOUT: %a: [i32; 1] = var "a"
|
||||
// CHECK:STDOUT: %.loc7_20.1: i32 = int_literal 12
|
||||
// CHECK:STDOUT: %.loc7_20.2: i32 = stub_reference %.loc7_20.1
|
||||
// CHECK:STDOUT: %.loc7_23.1: type = tuple_type (i32)
|
||||
// CHECK:STDOUT: %.loc7_23.2: (i32,) = tuple_value (%.loc7_20.2)
|
||||
// CHECK:STDOUT: %.loc7_23.3: [i32; 1] = array_value %.loc7_23.2
|
||||
// CHECK:STDOUT: assign %a, %.loc7_23.3
|
||||
// CHECK:STDOUT: %b: i32 = var
|
||||
// CHECK:STDOUT: %b: i32 = var "b"
|
||||
// CHECK:STDOUT: %.loc11: i32 = int_literal 2
|
||||
// CHECK:STDOUT: assign %b, <error>
|
||||
// CHECK:STDOUT: }
|
||||
|
||||
@@ -15,8 +15,8 @@ fn Run() {
|
||||
|
||||
// CHECK:STDOUT: cross_reference_irs_size: 1
|
||||
// CHECK:STDOUT: functions: [
|
||||
// CHECK:STDOUT: {name: str0, param_refs: block0, body: {block2}}},
|
||||
// CHECK:STDOUT: {name: str1, param_refs: block0, body: {block3}}},
|
||||
// CHECK:STDOUT: {name: str0, param_refs: block0, body: [block2]},
|
||||
// CHECK:STDOUT: {name: str1, param_refs: block0, body: [block3]},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: integer_literals: [
|
||||
// CHECK:STDOUT: 0,
|
||||
|
||||
@@ -13,7 +13,7 @@ fn Main() {
|
||||
|
||||
// CHECK:STDOUT: cross_reference_irs_size: 1
|
||||
// CHECK:STDOUT: functions: [
|
||||
// CHECK:STDOUT: {name: str0, param_refs: block0, body: {block2}}},
|
||||
// CHECK:STDOUT: {name: str0, param_refs: block0, body: [block2]},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: integer_literals: [
|
||||
// CHECK:STDOUT: 0,
|
||||
@@ -32,8 +32,7 @@ fn Main() {
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: nodes: [
|
||||
// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: function0},
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type0},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node+1, type: type0},
|
||||
// CHECK:STDOUT: {kind: VarStorage, arg0: str1, type: type0},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int0, type: type0},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+1, arg1: nodeError},
|
||||
// CHECK:STDOUT: {kind: Return},
|
||||
@@ -49,7 +48,6 @@ fn Main() {
|
||||
// CHECK:STDOUT: node+2,
|
||||
// CHECK:STDOUT: node+3,
|
||||
// CHECK:STDOUT: node+4,
|
||||
// CHECK:STDOUT: node+5,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT:
|
||||
@@ -59,7 +57,7 @@ fn Main() {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @Main() {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %b: i32 = var
|
||||
// CHECK:STDOUT: %b: i32 = var "b"
|
||||
// CHECK:STDOUT: %.loc11: i32 = int_literal 0
|
||||
// CHECK:STDOUT: assign %b, <error>
|
||||
// CHECK:STDOUT: return
|
||||
|
||||
@@ -45,16 +45,14 @@ var b: i32 = a[-10];
|
||||
// CHECK:STDOUT: {kind: TupleType, arg0: typeBlock0, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: TupleValue, arg0: block2, type: type0},
|
||||
// CHECK:STDOUT: {kind: TupleType, arg0: typeBlock1, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type2},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node+5, type: type2},
|
||||
// CHECK:STDOUT: {kind: VarStorage, arg0: str0, type: type2},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int0, type: type1},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+7, type: type1},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+6, type: type1},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int1, type: type1},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+9, type: type1},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+8, type: type1},
|
||||
// CHECK:STDOUT: {kind: TupleValue, arg0: block3, type: type2},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+5, arg1: node+11},
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type1},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node+13, type: type1},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+5, arg1: node+10},
|
||||
// CHECK:STDOUT: {kind: VarStorage, arg0: str1, type: type1},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int2, type: type1},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: node_blocks: [
|
||||
@@ -75,16 +73,14 @@ var b: i32 = a[-10];
|
||||
// CHECK:STDOUT: node+11,
|
||||
// CHECK:STDOUT: node+12,
|
||||
// CHECK:STDOUT: node+13,
|
||||
// CHECK:STDOUT: node+14,
|
||||
// CHECK:STDOUT: node+15,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+0,
|
||||
// CHECK:STDOUT: node+1,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+8,
|
||||
// CHECK:STDOUT: node+10,
|
||||
// CHECK:STDOUT: node+7,
|
||||
// CHECK:STDOUT: node+9,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT:
|
||||
|
||||
@@ -47,21 +47,18 @@ var c: i32 = a[b];
|
||||
// CHECK:STDOUT: {kind: TupleType, arg0: typeBlock0, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: TupleValue, arg0: block2, type: type0},
|
||||
// CHECK:STDOUT: {kind: TupleType, arg0: typeBlock1, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type2},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node+5, type: type2},
|
||||
// CHECK:STDOUT: {kind: VarStorage, arg0: str0, type: type2},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int0, type: type1},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+7, type: type1},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+6, type: type1},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int1, type: type1},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+9, type: type1},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+8, type: type1},
|
||||
// CHECK:STDOUT: {kind: TupleValue, arg0: block3, type: type2},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+5, arg1: node+11},
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type1},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node+13, type: type1},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+5, arg1: node+10},
|
||||
// CHECK:STDOUT: {kind: VarStorage, arg0: str1, type: type1},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int2, type: type1},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+13, arg1: node+15},
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type1},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str2, arg1: node+17, type: type1},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+17, arg1: nodeError},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+12, arg1: node+13},
|
||||
// CHECK:STDOUT: {kind: VarStorage, arg0: str2, type: type1},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+15, arg1: nodeError},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: node_blocks: [
|
||||
// CHECK:STDOUT: [
|
||||
@@ -84,17 +81,14 @@ var c: i32 = a[b];
|
||||
// CHECK:STDOUT: node+14,
|
||||
// CHECK:STDOUT: node+15,
|
||||
// CHECK:STDOUT: node+16,
|
||||
// CHECK:STDOUT: node+17,
|
||||
// CHECK:STDOUT: node+18,
|
||||
// CHECK:STDOUT: node+19,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+0,
|
||||
// CHECK:STDOUT: node+1,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+8,
|
||||
// CHECK:STDOUT: node+10,
|
||||
// CHECK:STDOUT: node+7,
|
||||
// CHECK:STDOUT: node+9,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT:
|
||||
@@ -104,16 +98,16 @@ var c: i32 = a[b];
|
||||
// CHECK:STDOUT: %.loc7_17.1: type = tuple_type (type, type)
|
||||
// CHECK:STDOUT: %.loc7_17.2: (type, type) = tuple_value (%.loc7_9, %.loc7_14)
|
||||
// CHECK:STDOUT: %.loc7_17.3: type = tuple_type (i32, i32)
|
||||
// CHECK:STDOUT: %a: (i32, i32) = var
|
||||
// CHECK:STDOUT: %a: (i32, i32) = var "a"
|
||||
// CHECK:STDOUT: %.loc7_22.1: i32 = int_literal 2
|
||||
// CHECK:STDOUT: %.loc7_22.2: i32 = stub_reference %.loc7_22.1
|
||||
// CHECK:STDOUT: %.loc7_25.1: i32 = int_literal 3
|
||||
// CHECK:STDOUT: %.loc7_25.2: i32 = stub_reference %.loc7_25.1
|
||||
// CHECK:STDOUT: %.loc7_26: (i32, i32) = tuple_value (%.loc7_22.2, %.loc7_25.2)
|
||||
// CHECK:STDOUT: assign %a, %.loc7_26
|
||||
// CHECK:STDOUT: %b: i32 = var
|
||||
// CHECK:STDOUT: %b: i32 = var "b"
|
||||
// CHECK:STDOUT: %.loc8: i32 = int_literal 0
|
||||
// CHECK:STDOUT: assign %b, %.loc8
|
||||
// CHECK:STDOUT: %c: i32 = var
|
||||
// CHECK:STDOUT: %c: i32 = var "c"
|
||||
// CHECK:STDOUT: assign %c, <error>
|
||||
// CHECK:STDOUT: }
|
||||
|
||||
@@ -13,7 +13,7 @@ fn Main() {
|
||||
|
||||
// CHECK:STDOUT: cross_reference_irs_size: 1
|
||||
// CHECK:STDOUT: functions: [
|
||||
// CHECK:STDOUT: {name: str0, param_refs: block0, body: {block2}}},
|
||||
// CHECK:STDOUT: {name: str0, param_refs: block0, body: [block2]},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: integer_literals: [
|
||||
// CHECK:STDOUT: 0,
|
||||
|
||||
@@ -43,21 +43,18 @@ var c: i32 = b[0xFFFFFFFFFFFFFFFFF];
|
||||
// CHECK:STDOUT: {kind: TupleType, arg0: typeBlock0, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: TupleValue, arg0: block2, type: type0},
|
||||
// CHECK:STDOUT: {kind: TupleType, arg0: typeBlock1, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type2},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node+4, type: type2},
|
||||
// CHECK:STDOUT: {kind: VarStorage, arg0: str0, type: type2},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int0, type: type1},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+6, type: type1},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+5, type: type1},
|
||||
// CHECK:STDOUT: {kind: TupleValue, arg0: block3, type: type2},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+4, arg1: node+8},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+4, arg1: node+7},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: nodeIntegerType, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: TupleValue, arg0: block4, type: type0},
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type2},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node+12, type: type2},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+12, arg1: node+4},
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type1},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str2, arg1: node+15, type: type1},
|
||||
// CHECK:STDOUT: {kind: VarStorage, arg0: str1, type: type2},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+11, arg1: node+4},
|
||||
// CHECK:STDOUT: {kind: VarStorage, arg0: str2, type: type1},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int1, type: type1},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+15, arg1: nodeError},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+13, arg1: nodeError},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: node_blocks: [
|
||||
// CHECK:STDOUT: [
|
||||
@@ -79,18 +76,15 @@ var c: i32 = b[0xFFFFFFFFFFFFFFFFF];
|
||||
// CHECK:STDOUT: node+13,
|
||||
// CHECK:STDOUT: node+14,
|
||||
// CHECK:STDOUT: node+15,
|
||||
// CHECK:STDOUT: node+16,
|
||||
// CHECK:STDOUT: node+17,
|
||||
// CHECK:STDOUT: node+18,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+0,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+7,
|
||||
// CHECK:STDOUT: node+6,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+10,
|
||||
// CHECK:STDOUT: node+9,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT:
|
||||
@@ -99,16 +93,16 @@ var c: i32 = b[0xFFFFFFFFFFFFFFFFF];
|
||||
// CHECK:STDOUT: %.loc7_13.1: type = tuple_type (type)
|
||||
// CHECK:STDOUT: %.loc7_13.2: (type,) = tuple_value (%.loc7_9)
|
||||
// CHECK:STDOUT: %.loc7_13.3: type = tuple_type (i32)
|
||||
// CHECK:STDOUT: %a: (i32,) = var
|
||||
// CHECK:STDOUT: %a: (i32,) = var "a"
|
||||
// CHECK:STDOUT: %.loc7_18.1: i32 = int_literal 12
|
||||
// CHECK:STDOUT: %.loc7_18.2: i32 = stub_reference %.loc7_18.1
|
||||
// CHECK:STDOUT: %.loc7_21: (i32,) = tuple_value (%.loc7_18.2)
|
||||
// CHECK:STDOUT: assign %a, %.loc7_21
|
||||
// CHECK:STDOUT: %.loc8_9: type = stub_reference i32
|
||||
// CHECK:STDOUT: %.loc8_13: (type,) = tuple_value (%.loc8_9)
|
||||
// CHECK:STDOUT: %b: (i32,) = var
|
||||
// CHECK:STDOUT: %b: (i32,) = var "b"
|
||||
// CHECK:STDOUT: assign %b, %a
|
||||
// CHECK:STDOUT: %c: i32 = var
|
||||
// CHECK:STDOUT: %c: i32 = var "c"
|
||||
// CHECK:STDOUT: %.loc12: i32 = int_literal -1
|
||||
// CHECK:STDOUT: assign %c, <error>
|
||||
// CHECK:STDOUT: }
|
||||
|
||||
@@ -46,18 +46,16 @@ var b: i32 = a[2.6];
|
||||
// CHECK:STDOUT: {kind: TupleType, arg0: typeBlock0, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: TupleValue, arg0: block2, type: type0},
|
||||
// CHECK:STDOUT: {kind: TupleType, arg0: typeBlock1, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type2},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node+5, type: type2},
|
||||
// CHECK:STDOUT: {kind: VarStorage, arg0: str0, type: type2},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int0, type: type1},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+7, type: type1},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+6, type: type1},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int1, type: type1},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+9, type: type1},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+8, type: type1},
|
||||
// CHECK:STDOUT: {kind: TupleValue, arg0: block3, type: type2},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+5, arg1: node+11},
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type1},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node+13, type: type1},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+5, arg1: node+10},
|
||||
// CHECK:STDOUT: {kind: VarStorage, arg0: str1, type: type1},
|
||||
// CHECK:STDOUT: {kind: RealLiteral, arg0: real0, type: type3},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+13, arg1: nodeError},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+12, arg1: nodeError},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: node_blocks: [
|
||||
// CHECK:STDOUT: [
|
||||
@@ -78,16 +76,14 @@ var b: i32 = a[2.6];
|
||||
// CHECK:STDOUT: node+12,
|
||||
// CHECK:STDOUT: node+13,
|
||||
// CHECK:STDOUT: node+14,
|
||||
// CHECK:STDOUT: node+15,
|
||||
// CHECK:STDOUT: node+16,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+0,
|
||||
// CHECK:STDOUT: node+1,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+8,
|
||||
// CHECK:STDOUT: node+10,
|
||||
// CHECK:STDOUT: node+7,
|
||||
// CHECK:STDOUT: node+9,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT:
|
||||
@@ -97,14 +93,14 @@ var b: i32 = a[2.6];
|
||||
// CHECK:STDOUT: %.loc7_17.1: type = tuple_type (type, type)
|
||||
// CHECK:STDOUT: %.loc7_17.2: (type, type) = tuple_value (%.loc7_9, %.loc7_14)
|
||||
// CHECK:STDOUT: %.loc7_17.3: type = tuple_type (i32, i32)
|
||||
// CHECK:STDOUT: %a: (i32, i32) = var
|
||||
// CHECK:STDOUT: %a: (i32, i32) = var "a"
|
||||
// CHECK:STDOUT: %.loc7_22.1: i32 = int_literal 12
|
||||
// CHECK:STDOUT: %.loc7_22.2: i32 = stub_reference %.loc7_22.1
|
||||
// CHECK:STDOUT: %.loc7_26.1: i32 = int_literal 6
|
||||
// CHECK:STDOUT: %.loc7_26.2: i32 = stub_reference %.loc7_26.1
|
||||
// CHECK:STDOUT: %.loc7_27: (i32, i32) = tuple_value (%.loc7_22.2, %.loc7_26.2)
|
||||
// CHECK:STDOUT: assign %a, %.loc7_27
|
||||
// CHECK:STDOUT: %b: i32 = var
|
||||
// CHECK:STDOUT: %b: i32 = var "b"
|
||||
// CHECK:STDOUT: %.loc11: f64 = real_literal 26e-1
|
||||
// CHECK:STDOUT: assign %b, <error>
|
||||
// CHECK:STDOUT: }
|
||||
|
||||
@@ -45,18 +45,16 @@ var b: i32 = a[2];
|
||||
// CHECK:STDOUT: {kind: TupleType, arg0: typeBlock0, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: TupleValue, arg0: block2, type: type0},
|
||||
// CHECK:STDOUT: {kind: TupleType, arg0: typeBlock1, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type2},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node+5, type: type2},
|
||||
// CHECK:STDOUT: {kind: VarStorage, arg0: str0, type: type2},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int0, type: type1},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+7, type: type1},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+6, type: type1},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int1, type: type1},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+9, type: type1},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+8, type: type1},
|
||||
// CHECK:STDOUT: {kind: TupleValue, arg0: block3, type: type2},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+5, arg1: node+11},
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type1},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node+13, type: type1},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+5, arg1: node+10},
|
||||
// CHECK:STDOUT: {kind: VarStorage, arg0: str1, type: type1},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int2, type: type1},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+13, arg1: nodeError},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+12, arg1: nodeError},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: node_blocks: [
|
||||
// CHECK:STDOUT: [
|
||||
@@ -77,16 +75,14 @@ var b: i32 = a[2];
|
||||
// CHECK:STDOUT: node+12,
|
||||
// CHECK:STDOUT: node+13,
|
||||
// CHECK:STDOUT: node+14,
|
||||
// CHECK:STDOUT: node+15,
|
||||
// CHECK:STDOUT: node+16,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+0,
|
||||
// CHECK:STDOUT: node+1,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+8,
|
||||
// CHECK:STDOUT: node+10,
|
||||
// CHECK:STDOUT: node+7,
|
||||
// CHECK:STDOUT: node+9,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT:
|
||||
@@ -96,14 +92,14 @@ var b: i32 = a[2];
|
||||
// CHECK:STDOUT: %.loc7_17.1: type = tuple_type (type, type)
|
||||
// CHECK:STDOUT: %.loc7_17.2: (type, type) = tuple_value (%.loc7_9, %.loc7_14)
|
||||
// CHECK:STDOUT: %.loc7_17.3: type = tuple_type (i32, i32)
|
||||
// CHECK:STDOUT: %a: (i32, i32) = var
|
||||
// CHECK:STDOUT: %a: (i32, i32) = var "a"
|
||||
// CHECK:STDOUT: %.loc7_22.1: i32 = int_literal 12
|
||||
// CHECK:STDOUT: %.loc7_22.2: i32 = stub_reference %.loc7_22.1
|
||||
// CHECK:STDOUT: %.loc7_26.1: i32 = int_literal 6
|
||||
// CHECK:STDOUT: %.loc7_26.2: i32 = stub_reference %.loc7_26.1
|
||||
// CHECK:STDOUT: %.loc7_27: (i32, i32) = tuple_value (%.loc7_22.2, %.loc7_26.2)
|
||||
// CHECK:STDOUT: assign %a, %.loc7_27
|
||||
// CHECK:STDOUT: %b: i32 = var
|
||||
// CHECK:STDOUT: %b: i32 = var "b"
|
||||
// CHECK:STDOUT: %.loc11: i32 = int_literal 2
|
||||
// CHECK:STDOUT: assign %b, <error>
|
||||
// CHECK:STDOUT: }
|
||||
|
||||
+13
-19
@@ -40,22 +40,19 @@ var c: i32 = b[0];
|
||||
// CHECK:STDOUT: {kind: TupleType, arg0: typeBlock0, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: TupleValue, arg0: block2, type: type0},
|
||||
// CHECK:STDOUT: {kind: TupleType, arg0: typeBlock1, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type2},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node+4, type: type2},
|
||||
// CHECK:STDOUT: {kind: VarStorage, arg0: str0, type: type2},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int0, type: type1},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+6, type: type1},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+5, type: type1},
|
||||
// CHECK:STDOUT: {kind: TupleValue, arg0: block3, type: type2},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+4, arg1: node+8},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+4, arg1: node+7},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: nodeIntegerType, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: TupleValue, arg0: block4, type: type0},
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type2},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node+12, type: type2},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+12, arg1: node+4},
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type1},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str2, arg1: node+15, type: type1},
|
||||
// CHECK:STDOUT: {kind: VarStorage, arg0: str1, type: type2},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+11, arg1: node+4},
|
||||
// CHECK:STDOUT: {kind: VarStorage, arg0: str2, type: type1},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int1, type: type1},
|
||||
// CHECK:STDOUT: {kind: TupleIndex, arg0: node+12, arg1: node+17, type: type1},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+15, arg1: node+18},
|
||||
// CHECK:STDOUT: {kind: TupleIndex, arg0: node+11, arg1: node+14, type: type1},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+13, arg1: node+15},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: node_blocks: [
|
||||
// CHECK:STDOUT: [
|
||||
@@ -78,18 +75,15 @@ var c: i32 = b[0];
|
||||
// CHECK:STDOUT: node+14,
|
||||
// CHECK:STDOUT: node+15,
|
||||
// CHECK:STDOUT: node+16,
|
||||
// CHECK:STDOUT: node+17,
|
||||
// CHECK:STDOUT: node+18,
|
||||
// CHECK:STDOUT: node+19,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+0,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+7,
|
||||
// CHECK:STDOUT: node+6,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+10,
|
||||
// CHECK:STDOUT: node+9,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT:
|
||||
@@ -98,16 +92,16 @@ var c: i32 = b[0];
|
||||
// CHECK:STDOUT: %.loc7_13.1: type = tuple_type (type)
|
||||
// CHECK:STDOUT: %.loc7_13.2: (type,) = tuple_value (%.loc7_9)
|
||||
// CHECK:STDOUT: %.loc7_13.3: type = tuple_type (i32)
|
||||
// CHECK:STDOUT: %a: (i32,) = var
|
||||
// CHECK:STDOUT: %a: (i32,) = var "a"
|
||||
// CHECK:STDOUT: %.loc7_18.1: i32 = int_literal 12
|
||||
// CHECK:STDOUT: %.loc7_18.2: i32 = stub_reference %.loc7_18.1
|
||||
// CHECK:STDOUT: %.loc7_21: (i32,) = tuple_value (%.loc7_18.2)
|
||||
// CHECK:STDOUT: assign %a, %.loc7_21
|
||||
// CHECK:STDOUT: %.loc8_9: type = stub_reference i32
|
||||
// CHECK:STDOUT: %.loc8_13: (type,) = tuple_value (%.loc8_9)
|
||||
// CHECK:STDOUT: %b: (i32,) = var
|
||||
// CHECK:STDOUT: %b: (i32,) = var "b"
|
||||
// CHECK:STDOUT: assign %b, %a
|
||||
// CHECK:STDOUT: %c: i32 = var
|
||||
// CHECK:STDOUT: %c: i32 = var "c"
|
||||
// CHECK:STDOUT: %.loc9_16: i32 = int_literal 0
|
||||
// CHECK:STDOUT: %.loc9_17: i32 = tuple_index %b, %.loc9_16
|
||||
// CHECK:STDOUT: assign %c, %.loc9_17
|
||||
|
||||
@@ -12,8 +12,8 @@ fn Run() -> i32 {
|
||||
|
||||
// CHECK:STDOUT: cross_reference_irs_size: 1
|
||||
// CHECK:STDOUT: functions: [
|
||||
// CHECK:STDOUT: {name: str0, param_refs: block0, return_type: type2, body: {block3}}},
|
||||
// CHECK:STDOUT: {name: str1, param_refs: block0, return_type: type1, body: {block5}}},
|
||||
// CHECK:STDOUT: {name: str0, param_refs: block0, return_type: type2, body: [block3]},
|
||||
// CHECK:STDOUT: {name: str1, param_refs: block0, return_type: type1, body: [block5]},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: integer_literals: [
|
||||
// CHECK:STDOUT: 0,
|
||||
|
||||
+10
-14
@@ -8,7 +8,7 @@ fn A() { var n: i32 = 1; if (true) { var n: i32 = 2; } }
|
||||
|
||||
// CHECK:STDOUT: cross_reference_irs_size: 1
|
||||
// CHECK:STDOUT: functions: [
|
||||
// CHECK:STDOUT: {name: str0, param_refs: block0, body: {block2, block3, block4}}},
|
||||
// CHECK:STDOUT: {name: str0, param_refs: block0, body: [block2, block3, block4]},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: integer_literals: [
|
||||
// CHECK:STDOUT: 1,
|
||||
@@ -28,17 +28,15 @@ fn A() { var n: i32 = 1; if (true) { var n: i32 = 2; } }
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: nodes: [
|
||||
// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: function0},
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type0},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node+1, type: type0},
|
||||
// CHECK:STDOUT: {kind: VarStorage, arg0: str1, type: type0},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int0, type: type0},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+1, arg1: node+3},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+1, arg1: node+2},
|
||||
// CHECK:STDOUT: {kind: BoolLiteral, arg0: true, type: type1},
|
||||
// CHECK:STDOUT: {kind: BranchIf, arg0: block3, arg1: node+5},
|
||||
// CHECK:STDOUT: {kind: BranchIf, arg0: block3, arg1: node+4},
|
||||
// CHECK:STDOUT: {kind: Branch, arg0: block4},
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type0},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node+8, type: type0},
|
||||
// CHECK:STDOUT: {kind: VarStorage, arg0: str1, type: type0},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int1, type: type0},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+8, arg1: node+10},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+7, arg1: node+8},
|
||||
// CHECK:STDOUT: {kind: Branch, arg0: block4},
|
||||
// CHECK:STDOUT: {kind: Return},
|
||||
// CHECK:STDOUT: ]
|
||||
@@ -55,17 +53,15 @@ fn A() { var n: i32 = 1; if (true) { var n: i32 = 2; } }
|
||||
// CHECK:STDOUT: node+4,
|
||||
// CHECK:STDOUT: node+5,
|
||||
// CHECK:STDOUT: node+6,
|
||||
// CHECK:STDOUT: node+7,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+7,
|
||||
// CHECK:STDOUT: node+8,
|
||||
// CHECK:STDOUT: node+9,
|
||||
// CHECK:STDOUT: node+10,
|
||||
// CHECK:STDOUT: node+11,
|
||||
// CHECK:STDOUT: node+12,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+13,
|
||||
// CHECK:STDOUT: node+11,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT:
|
||||
@@ -75,14 +71,14 @@ fn A() { var n: i32 = 1; if (true) { var n: i32 = 2; } }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @A() {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %n.loc7_14: i32 = var
|
||||
// CHECK:STDOUT: %n.loc7_14: i32 = var "n"
|
||||
// CHECK:STDOUT: %.loc7_23: i32 = int_literal 1
|
||||
// CHECK:STDOUT: assign %n.loc7_14, %.loc7_23
|
||||
// CHECK:STDOUT: %.loc7_30: bool = bool_literal true
|
||||
// CHECK:STDOUT: if %.loc7_30 br !if.then else br !if.else
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !if.then:
|
||||
// CHECK:STDOUT: %n.loc7_42: i32 = var
|
||||
// CHECK:STDOUT: %n.loc7_42: i32 = var "n"
|
||||
// CHECK:STDOUT: %.loc7_51: i32 = int_literal 2
|
||||
// CHECK:STDOUT: assign %n.loc7_42, %.loc7_51
|
||||
// CHECK:STDOUT: br !if.else
|
||||
|
||||
@@ -20,8 +20,8 @@ fn Foo.Baz() {
|
||||
|
||||
// CHECK:STDOUT: cross_reference_irs_size: 1
|
||||
// CHECK:STDOUT: functions: [
|
||||
// CHECK:STDOUT: {name: str1, param_refs: block0, body: {block2}}},
|
||||
// CHECK:STDOUT: {name: str<invalid>, param_refs: block0, body: {block3}}},
|
||||
// CHECK:STDOUT: {name: str1, param_refs: block0, body: [block2]},
|
||||
// CHECK:STDOUT: {name: str<invalid>, param_refs: block0, body: [block3]},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: integer_literals: [
|
||||
// CHECK:STDOUT: ]
|
||||
|
||||
@@ -12,7 +12,7 @@ fn Foo.Baz() {
|
||||
|
||||
// CHECK:STDOUT: cross_reference_irs_size: 1
|
||||
// CHECK:STDOUT: functions: [
|
||||
// CHECK:STDOUT: {name: str<invalid>, param_refs: block0, body: {block2}}},
|
||||
// CHECK:STDOUT: {name: str<invalid>, param_refs: block0, body: [block2]},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: integer_literals: [
|
||||
// CHECK:STDOUT: ]
|
||||
|
||||
+3
-3
@@ -19,9 +19,9 @@ fn Bar() {
|
||||
|
||||
// CHECK:STDOUT: cross_reference_irs_size: 1
|
||||
// CHECK:STDOUT: functions: [
|
||||
// CHECK:STDOUT: {name: str1, param_refs: block0, body: {block2}}},
|
||||
// CHECK:STDOUT: {name: str1, param_refs: block0, body: {block3}}},
|
||||
// CHECK:STDOUT: {name: str2, param_refs: block0, body: {block4}}},
|
||||
// CHECK:STDOUT: {name: str1, param_refs: block0, body: [block2]},
|
||||
// CHECK:STDOUT: {name: str1, param_refs: block0, body: [block3]},
|
||||
// CHECK:STDOUT: {name: str2, param_refs: block0, body: [block4]},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: integer_literals: [
|
||||
// CHECK:STDOUT: ]
|
||||
|
||||
+2
-2
@@ -16,8 +16,8 @@ fn Foo.Bar.Baz() {
|
||||
|
||||
// CHECK:STDOUT: cross_reference_irs_size: 1
|
||||
// CHECK:STDOUT: functions: [
|
||||
// CHECK:STDOUT: {name: str2, param_refs: block0, body: {block2}}},
|
||||
// CHECK:STDOUT: {name: str3, param_refs: block0, body: {block3}}},
|
||||
// CHECK:STDOUT: {name: str2, param_refs: block0, body: [block2]},
|
||||
// CHECK:STDOUT: {name: str3, param_refs: block0, body: [block3]},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: integer_literals: [
|
||||
// CHECK:STDOUT: ]
|
||||
|
||||
+3
-3
@@ -13,9 +13,9 @@ fn And() -> bool {
|
||||
|
||||
// CHECK:STDOUT: cross_reference_irs_size: 1
|
||||
// CHECK:STDOUT: functions: [
|
||||
// CHECK:STDOUT: {name: str0, param_refs: block0, return_type: type0, body: {block2}}},
|
||||
// CHECK:STDOUT: {name: str1, param_refs: block0, return_type: type0, body: {block3}}},
|
||||
// CHECK:STDOUT: {name: str2, param_refs: block0, return_type: type0, body: {block4, block5, block6}}},
|
||||
// CHECK:STDOUT: {name: str0, param_refs: block0, return_type: type0, body: [block2]},
|
||||
// CHECK:STDOUT: {name: str1, param_refs: block0, return_type: type0, body: [block3]},
|
||||
// CHECK:STDOUT: {name: str2, param_refs: block0, return_type: type0, body: [block4, block5, block6]},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: integer_literals: [
|
||||
// CHECK:STDOUT: ]
|
||||
|
||||
+51
-59
@@ -24,7 +24,7 @@ fn Main() {
|
||||
|
||||
// CHECK:STDOUT: cross_reference_irs_size: 1
|
||||
// CHECK:STDOUT: functions: [
|
||||
// CHECK:STDOUT: {name: str0, param_refs: block0, body: {block2, block8, block9, block10}}},
|
||||
// CHECK:STDOUT: {name: str0, param_refs: block0, body: [block2, block8, block9, block10]},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: integer_literals: [
|
||||
// CHECK:STDOUT: 12,
|
||||
@@ -53,10 +53,10 @@ fn Main() {
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: types: [
|
||||
// CHECK:STDOUT: nodeIntegerType,
|
||||
// CHECK:STDOUT: node+9,
|
||||
// CHECK:STDOUT: node+11,
|
||||
// CHECK:STDOUT: node+30,
|
||||
// CHECK:STDOUT: node+47,
|
||||
// CHECK:STDOUT: node+8,
|
||||
// CHECK:STDOUT: node+10,
|
||||
// CHECK:STDOUT: node+28,
|
||||
// CHECK:STDOUT: node+44,
|
||||
// CHECK:STDOUT: nodeBoolType,
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: type_blocks: [
|
||||
@@ -71,70 +71,66 @@ fn Main() {
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: nodes: [
|
||||
// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: function0},
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type0},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node+1, type: type0},
|
||||
// CHECK:STDOUT: {kind: VarStorage, arg0: str1, type: type0},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int0, type: type0},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+1, arg1: node+3},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+1, arg1: node+2},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int1, type: type0},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+1, arg1: node+5},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+1, arg1: node+4},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: nodeIntegerType, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: nodeIntegerType, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: TupleType, arg0: typeBlock0, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: TupleValue, arg0: block3, type: type1},
|
||||
// CHECK:STDOUT: {kind: TupleType, arg0: typeBlock1, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type2},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str2, arg1: node+12, type: type2},
|
||||
// CHECK:STDOUT: {kind: VarStorage, arg0: str2, type: type2},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int2, type: type0},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+14, type: type0},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+12, type: type0},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int3, type: type0},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+16, type: type0},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+14, type: type0},
|
||||
// CHECK:STDOUT: {kind: TupleValue, arg0: block4, type: type2},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+12, arg1: node+18},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+11, arg1: node+16},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int4, type: type0},
|
||||
// CHECK:STDOUT: {kind: TupleIndex, arg0: node+12, arg1: node+20, type: type0},
|
||||
// CHECK:STDOUT: {kind: TupleIndex, arg0: node+11, arg1: node+18, type: type0},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int5, type: type0},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+21, arg1: node+22},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+19, arg1: node+20},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int6, type: type0},
|
||||
// CHECK:STDOUT: {kind: TupleIndex, arg0: node+12, arg1: node+24, type: type0},
|
||||
// CHECK:STDOUT: {kind: TupleIndex, arg0: node+11, arg1: node+22, type: type0},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int7, type: type0},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+25, arg1: node+26},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+23, arg1: node+24},
|
||||
// CHECK:STDOUT: {kind: StructTypeField, arg0: str1, arg1: type0},
|
||||
// CHECK:STDOUT: {kind: StructTypeField, arg0: str2, arg1: type0},
|
||||
// CHECK:STDOUT: {kind: StructType, arg0: block5, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type3},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str3, arg1: node+31, type: type3},
|
||||
// CHECK:STDOUT: {kind: VarStorage, arg0: str3, type: type3},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int8, type: type0},
|
||||
// CHECK:STDOUT: {kind: StructTypeField, arg0: str1, arg1: type0},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+33, type: type0},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+30, type: type0},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int9, type: type0},
|
||||
// CHECK:STDOUT: {kind: StructTypeField, arg0: str2, arg1: type0},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+36, type: type0},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+33, type: type0},
|
||||
// CHECK:STDOUT: {kind: StructValue, arg0: block7, type: type3},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+31, arg1: node+39},
|
||||
// CHECK:STDOUT: {kind: StructAccess, arg0: node+31, arg1: member0, type: type0},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+29, arg1: node+36},
|
||||
// CHECK:STDOUT: {kind: StructAccess, arg0: node+29, arg1: member0, type: type0},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int10, type: type0},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+41, arg1: node+42},
|
||||
// CHECK:STDOUT: {kind: StructAccess, arg0: node+31, arg1: member1, type: type0},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+38, arg1: node+39},
|
||||
// CHECK:STDOUT: {kind: StructAccess, arg0: node+29, arg1: member1, type: type0},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int11, type: type0},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+44, arg1: node+45},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+41, arg1: node+42},
|
||||
// CHECK:STDOUT: {kind: PointerType, arg0: type0, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type4},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str4, arg1: node+48, type: type4},
|
||||
// CHECK:STDOUT: {kind: VarStorage, arg0: str4, type: type4},
|
||||
// CHECK:STDOUT: {kind: AddressOf, arg0: node+1, type: type4},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+48, arg1: node+50},
|
||||
// CHECK:STDOUT: {kind: Dereference, arg0: node+48, type: type0},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+45, arg1: node+46},
|
||||
// CHECK:STDOUT: {kind: Dereference, arg0: node+45, type: type0},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int12, type: type0},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+52, arg1: node+53},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+48, arg1: node+49},
|
||||
// CHECK:STDOUT: {kind: BoolLiteral, arg0: true, type: type5},
|
||||
// CHECK:STDOUT: {kind: BranchIf, arg0: block8, arg1: node+55},
|
||||
// CHECK:STDOUT: {kind: BranchIf, arg0: block8, arg1: node+51},
|
||||
// CHECK:STDOUT: {kind: Branch, arg0: block9},
|
||||
// CHECK:STDOUT: {kind: AddressOf, arg0: node+1, type: type4},
|
||||
// CHECK:STDOUT: {kind: BranchWithArg, arg0: block10, arg1: node+48},
|
||||
// CHECK:STDOUT: {kind: BranchWithArg, arg0: block10, arg1: node+58},
|
||||
// CHECK:STDOUT: {kind: BranchWithArg, arg0: block10, arg1: node+45},
|
||||
// CHECK:STDOUT: {kind: BranchWithArg, arg0: block10, arg1: node+54},
|
||||
// CHECK:STDOUT: {kind: BlockArg, arg0: block10, type: type4},
|
||||
// CHECK:STDOUT: {kind: Dereference, arg0: node+61, type: type0},
|
||||
// CHECK:STDOUT: {kind: Dereference, arg0: node+57, type: type0},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int13, type: type0},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+62, arg1: node+63},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+58, arg1: node+59},
|
||||
// CHECK:STDOUT: {kind: Return},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: node_blocks: [
|
||||
@@ -174,11 +170,11 @@ fn Main() {
|
||||
// CHECK:STDOUT: node+28,
|
||||
// CHECK:STDOUT: node+29,
|
||||
// CHECK:STDOUT: node+30,
|
||||
// CHECK:STDOUT: node+31,
|
||||
// CHECK:STDOUT: node+32,
|
||||
// CHECK:STDOUT: node+33,
|
||||
// CHECK:STDOUT: node+35,
|
||||
// CHECK:STDOUT: node+36,
|
||||
// CHECK:STDOUT: node+37,
|
||||
// CHECK:STDOUT: node+38,
|
||||
// CHECK:STDOUT: node+39,
|
||||
// CHECK:STDOUT: node+40,
|
||||
@@ -195,44 +191,40 @@ fn Main() {
|
||||
// CHECK:STDOUT: node+51,
|
||||
// CHECK:STDOUT: node+52,
|
||||
// CHECK:STDOUT: node+53,
|
||||
// CHECK:STDOUT: node+54,
|
||||
// CHECK:STDOUT: node+55,
|
||||
// CHECK:STDOUT: node+56,
|
||||
// CHECK:STDOUT: node+57,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+6,
|
||||
// CHECK:STDOUT: node+7,
|
||||
// CHECK:STDOUT: node+8,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+13,
|
||||
// CHECK:STDOUT: node+15,
|
||||
// CHECK:STDOUT: node+17,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+28,
|
||||
// CHECK:STDOUT: node+29,
|
||||
// CHECK:STDOUT: node+26,
|
||||
// CHECK:STDOUT: node+27,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+31,
|
||||
// CHECK:STDOUT: node+34,
|
||||
// CHECK:STDOUT: node+37,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+32,
|
||||
// CHECK:STDOUT: node+35,
|
||||
// CHECK:STDOUT: node+38,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+59,
|
||||
// CHECK:STDOUT: node+55,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+54,
|
||||
// CHECK:STDOUT: node+56,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+57,
|
||||
// CHECK:STDOUT: node+58,
|
||||
// CHECK:STDOUT: node+59,
|
||||
// CHECK:STDOUT: node+60,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: [
|
||||
// CHECK:STDOUT: node+61,
|
||||
// CHECK:STDOUT: node+62,
|
||||
// CHECK:STDOUT: node+63,
|
||||
// CHECK:STDOUT: node+64,
|
||||
// CHECK:STDOUT: node+65,
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT:
|
||||
@@ -242,7 +234,7 @@ fn Main() {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @Main() {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %a: i32 = var
|
||||
// CHECK:STDOUT: %a: i32 = var "a"
|
||||
// CHECK:STDOUT: %.loc8: i32 = int_literal 12
|
||||
// CHECK:STDOUT: assign %a, %.loc8
|
||||
// CHECK:STDOUT: %.loc9: i32 = int_literal -7
|
||||
@@ -252,7 +244,7 @@ fn Main() {
|
||||
// CHECK:STDOUT: %.loc11_19.1: type = tuple_type (type, type)
|
||||
// CHECK:STDOUT: %.loc11_19.2: (type, type) = tuple_value (%.loc11_11, %.loc11_16)
|
||||
// CHECK:STDOUT: %.loc11_19.3: type = tuple_type (i32, i32)
|
||||
// CHECK:STDOUT: %b: (i32, i32) = var
|
||||
// CHECK:STDOUT: %b: (i32, i32) = var "b"
|
||||
// CHECK:STDOUT: %.loc11_24.1: i32 = int_literal 1
|
||||
// CHECK:STDOUT: %.loc11_24.2: i32 = stub_reference %.loc11_24.1
|
||||
// CHECK:STDOUT: %.loc11_27.1: i32 = int_literal 2
|
||||
@@ -268,7 +260,7 @@ fn Main() {
|
||||
// CHECK:STDOUT: %.loc13_10: i32 = int_literal 4
|
||||
// CHECK:STDOUT: assign %.loc13_6, %.loc13_10
|
||||
// CHECK:STDOUT: %.loc15_27: type = struct_type {.a: i32, .b: i32}
|
||||
// CHECK:STDOUT: %c: {.a: i32, .b: i32} = var
|
||||
// CHECK:STDOUT: %c: {.a: i32, .b: i32} = var "c"
|
||||
// CHECK:STDOUT: %.loc15_37: i32 = int_literal 1
|
||||
// CHECK:STDOUT: %.loc15_35: i32 = stub_reference %.loc15_37
|
||||
// CHECK:STDOUT: %.loc15_45: i32 = int_literal 2
|
||||
@@ -282,7 +274,7 @@ fn Main() {
|
||||
// CHECK:STDOUT: %.loc17_9: i32 = int_literal 4
|
||||
// CHECK:STDOUT: assign %.loc17_4, %.loc17_9
|
||||
// CHECK:STDOUT: %.loc19_13: type = ptr_type i32
|
||||
// CHECK:STDOUT: %p: i32* = var
|
||||
// CHECK:STDOUT: %p: i32* = var "p"
|
||||
// CHECK:STDOUT: %.loc19_17: i32* = address_of %a
|
||||
// CHECK:STDOUT: assign %p, %.loc19_17
|
||||
// CHECK:STDOUT: %.loc20_3: i32 = dereference %p
|
||||
|
||||
+1
-1
@@ -10,7 +10,7 @@ fn Main() -> i32 {
|
||||
|
||||
// CHECK:STDOUT: cross_reference_irs_size: 1
|
||||
// CHECK:STDOUT: functions: [
|
||||
// CHECK:STDOUT: {name: str0, param_refs: block0, return_type: type0, body: {block2}}},
|
||||
// CHECK:STDOUT: {name: str0, param_refs: block0, return_type: type0, body: [block2]},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: integer_literals: [
|
||||
// CHECK:STDOUT: 12,
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user