mirror of
https://github.com/carbon-language/carbon-lang.git
synced 2026-10-05 22:02:55 +01:00
Remove nearly all uses of StubReferences. (#3249)
The speculative insertion of StubReferences after elements in an argument list turned out to not be necessary, because we decided we want to insert per-argument initialization steps after all arguments are evaluated, rather than interleaving them. The StubReferences we insert are causing some minor code complexity, so remove them. We still create StubReferences when performing patch-ups of already-emitted code, but we no longer ever need to look through them when determining whether an initializer was a literal or when evaluating a type expression.
This commit is contained in:
@@ -25,8 +25,7 @@ fn Main() {
|
||||
// CHECK:STDOUT: fn @Main() {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %.loc12_9.1: {} = struct_literal ()
|
||||
// CHECK:STDOUT: %.loc12_9.2: {} = stub_reference %.loc12_9.1
|
||||
// CHECK:STDOUT: %.loc12_9.3: {} = struct_value %.loc12_9.1, ()
|
||||
// CHECK:STDOUT: %.loc12_7: init {} = call @Echo(%.loc12_9.3)
|
||||
// CHECK:STDOUT: %.loc12_9.2: {} = struct_value %.loc12_9.1, ()
|
||||
// CHECK:STDOUT: %.loc12_7: init {} = call @Echo(%.loc12_9.2)
|
||||
// CHECK:STDOUT: return
|
||||
// CHECK:STDOUT: }
|
||||
|
||||
@@ -25,8 +25,7 @@ fn Main() {
|
||||
// CHECK:STDOUT: fn @Main() {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %.loc12_9.1: () = tuple_literal ()
|
||||
// CHECK:STDOUT: %.loc12_9.2: () = stub_reference %.loc12_9.1
|
||||
// CHECK:STDOUT: %.loc12_9.3: () = tuple_value %.loc12_9.1, ()
|
||||
// CHECK:STDOUT: %.loc12_7: init () = call @Echo(%.loc12_9.3)
|
||||
// CHECK:STDOUT: %.loc12_9.2: () = tuple_value %.loc12_9.1, ()
|
||||
// CHECK:STDOUT: %.loc12_7: init () = call @Echo(%.loc12_9.2)
|
||||
// CHECK:STDOUT: return
|
||||
// CHECK:STDOUT: }
|
||||
|
||||
@@ -79,18 +79,12 @@ fn Main() {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @Main() {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %.loc18_8.1: i32 = int_literal 1
|
||||
// CHECK:STDOUT: %.loc18_8.2: i32 = stub_reference %.loc18_8.1
|
||||
// CHECK:STDOUT: %.loc18_8: i32 = int_literal 1
|
||||
// CHECK:STDOUT: %.loc18_7: type = tuple_type ()
|
||||
// CHECK:STDOUT: %.loc25_8.1: i32 = int_literal 0
|
||||
// CHECK:STDOUT: %.loc25_8.2: i32 = stub_reference %.loc25_8.1
|
||||
// CHECK:STDOUT: %.loc25_11.1: i32 = int_literal 1
|
||||
// CHECK:STDOUT: %.loc25_11.2: i32 = stub_reference %.loc25_11.1
|
||||
// CHECK:STDOUT: %.loc40_8.1: i32 = int_literal 0
|
||||
// CHECK:STDOUT: %.loc40_8.2: i32 = stub_reference %.loc40_8.1
|
||||
// CHECK:STDOUT: %.loc40_11.1: i32 = int_literal 1
|
||||
// CHECK:STDOUT: %.loc40_11.2: i32 = stub_reference %.loc40_11.1
|
||||
// CHECK:STDOUT: %.loc55_8.1: i32 = int_literal 0
|
||||
// CHECK:STDOUT: %.loc55_8.2: i32 = stub_reference %.loc55_8.1
|
||||
// CHECK:STDOUT: %.loc25_8: i32 = int_literal 0
|
||||
// CHECK:STDOUT: %.loc25_11: i32 = int_literal 1
|
||||
// CHECK:STDOUT: %.loc40_8: i32 = int_literal 0
|
||||
// CHECK:STDOUT: %.loc40_11: i32 = int_literal 1
|
||||
// CHECK:STDOUT: %.loc55: i32 = int_literal 0
|
||||
// CHECK:STDOUT: return
|
||||
// CHECK:STDOUT: }
|
||||
|
||||
@@ -28,8 +28,7 @@ fn Main() {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @Main() {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %.loc16_7.1: f64 = real_literal 10e-1
|
||||
// CHECK:STDOUT: %.loc16_7.2: f64 = stub_reference %.loc16_7.1
|
||||
// CHECK:STDOUT: %.loc16_7: f64 = real_literal 10e-1
|
||||
// CHECK:STDOUT: %.loc16_6: type = tuple_type ()
|
||||
// CHECK:STDOUT: return
|
||||
// CHECK:STDOUT: }
|
||||
|
||||
+2
-3
@@ -25,9 +25,8 @@ fn Main() {
|
||||
// CHECK:STDOUT: fn @Main() {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %b: ref 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: init i32 = call @Echo(%.loc12_21.2)
|
||||
// CHECK:STDOUT: %.loc12_21: i32 = int_literal 1
|
||||
// CHECK:STDOUT: %.loc12_20: init i32 = call @Echo(%.loc12_21)
|
||||
// CHECK:STDOUT: assign %b, %.loc12_20
|
||||
// CHECK:STDOUT: return
|
||||
// CHECK:STDOUT: }
|
||||
|
||||
@@ -27,15 +27,12 @@ fn Main() {
|
||||
// CHECK:STDOUT: %.loc11_11: i32 = int_literal 2
|
||||
// CHECK:STDOUT: %.loc11_9: i32 = add %.loc11_7, %.loc11_11
|
||||
// CHECK:STDOUT: %.loc11_15: i32 = int_literal 3
|
||||
// CHECK:STDOUT: %.loc11_13.1: i32 = add %.loc11_9, %.loc11_15
|
||||
// CHECK:STDOUT: %.loc11_13.2: i32 = stub_reference %.loc11_13.1
|
||||
// CHECK:STDOUT: %.loc11_13: i32 = add %.loc11_9, %.loc11_15
|
||||
// CHECK:STDOUT: %.loc11_18: i32 = int_literal 4
|
||||
// CHECK:STDOUT: %.loc11_22: i32 = int_literal 5
|
||||
// CHECK:STDOUT: %.loc11_20.1: i32 = add %.loc11_18, %.loc11_22
|
||||
// CHECK:STDOUT: %.loc11_20.2: i32 = stub_reference %.loc11_20.1
|
||||
// CHECK:STDOUT: %.loc11_25.1: i32 = int_literal 6
|
||||
// CHECK:STDOUT: %.loc11_25.2: i32 = stub_reference %.loc11_25.1
|
||||
// CHECK:STDOUT: %.loc11_20: i32 = add %.loc11_18, %.loc11_22
|
||||
// CHECK:STDOUT: %.loc11_25: i32 = int_literal 6
|
||||
// CHECK:STDOUT: %.loc11_6.1: type = tuple_type ()
|
||||
// CHECK:STDOUT: %.loc11_6.2: init () = call @Foo(%.loc11_13.2, %.loc11_20.2, %.loc11_25.2)
|
||||
// CHECK:STDOUT: %.loc11_6.2: init () = call @Foo(%.loc11_13, %.loc11_20, %.loc11_25)
|
||||
// CHECK:STDOUT: return
|
||||
// CHECK:STDOUT: }
|
||||
|
||||
@@ -22,9 +22,8 @@ fn Main() {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @Main() {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %.loc10_7.1: i32 = int_literal 1
|
||||
// CHECK:STDOUT: %.loc10_7.2: i32 = stub_reference %.loc10_7.1
|
||||
// CHECK:STDOUT: %.loc10_7: i32 = int_literal 1
|
||||
// CHECK:STDOUT: %.loc10_6.1: type = tuple_type ()
|
||||
// CHECK:STDOUT: %.loc10_6.2: init () = call @Foo(%.loc10_7.2)
|
||||
// CHECK:STDOUT: %.loc10_6.2: init () = call @Foo(%.loc10_7)
|
||||
// CHECK:STDOUT: return
|
||||
// CHECK:STDOUT: }
|
||||
|
||||
@@ -23,12 +23,10 @@ fn Main() {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @Main() {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %.loc10_7.1: i32 = int_literal 1
|
||||
// CHECK:STDOUT: %.loc10_7.2: i32 = stub_reference %.loc10_7.1
|
||||
// CHECK:STDOUT: %.loc10_7: i32 = int_literal 1
|
||||
// CHECK:STDOUT: %.loc10_6.1: type = tuple_type ()
|
||||
// CHECK:STDOUT: %.loc10_6.2: init () = call @Foo(%.loc10_7.2)
|
||||
// CHECK:STDOUT: %.loc11_7.1: i32 = int_literal 1
|
||||
// CHECK:STDOUT: %.loc11_7.2: i32 = stub_reference %.loc11_7.1
|
||||
// CHECK:STDOUT: %.loc11_6: init () = call @Foo(%.loc11_7.2)
|
||||
// CHECK:STDOUT: %.loc10_6.2: init () = call @Foo(%.loc10_7)
|
||||
// CHECK:STDOUT: %.loc11_7: i32 = int_literal 1
|
||||
// CHECK:STDOUT: %.loc11_6: init () = call @Foo(%.loc11_7)
|
||||
// CHECK:STDOUT: return
|
||||
// CHECK:STDOUT: }
|
||||
|
||||
@@ -22,11 +22,9 @@ fn Main() {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @Main() {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %.loc10_7.1: i32 = int_literal 1
|
||||
// CHECK:STDOUT: %.loc10_7.2: i32 = stub_reference %.loc10_7.1
|
||||
// CHECK:STDOUT: %.loc10_10.1: i32 = int_literal 2
|
||||
// CHECK:STDOUT: %.loc10_10.2: i32 = stub_reference %.loc10_10.1
|
||||
// CHECK:STDOUT: %.loc10_7: i32 = int_literal 1
|
||||
// CHECK:STDOUT: %.loc10_10: i32 = int_literal 2
|
||||
// CHECK:STDOUT: %.loc10_6.1: type = tuple_type ()
|
||||
// CHECK:STDOUT: %.loc10_6.2: init () = call @Foo(%.loc10_7.2, %.loc10_10.2)
|
||||
// CHECK:STDOUT: %.loc10_6.2: init () = call @Foo(%.loc10_7, %.loc10_10)
|
||||
// CHECK:STDOUT: return
|
||||
// CHECK:STDOUT: }
|
||||
|
||||
@@ -23,16 +23,12 @@ fn Main() {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @Main() {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %.loc10_7.1: i32 = int_literal 1
|
||||
// CHECK:STDOUT: %.loc10_7.2: i32 = stub_reference %.loc10_7.1
|
||||
// CHECK:STDOUT: %.loc10_10.1: i32 = int_literal 2
|
||||
// CHECK:STDOUT: %.loc10_10.2: i32 = stub_reference %.loc10_10.1
|
||||
// CHECK:STDOUT: %.loc10_7: i32 = int_literal 1
|
||||
// CHECK:STDOUT: %.loc10_10: i32 = int_literal 2
|
||||
// CHECK:STDOUT: %.loc10_6.1: type = tuple_type ()
|
||||
// CHECK:STDOUT: %.loc10_6.2: init () = call @Foo(%.loc10_7.2, %.loc10_10.2)
|
||||
// CHECK:STDOUT: %.loc11_7.1: i32 = int_literal 1
|
||||
// CHECK:STDOUT: %.loc11_7.2: i32 = stub_reference %.loc11_7.1
|
||||
// CHECK:STDOUT: %.loc11_10.1: i32 = int_literal 2
|
||||
// CHECK:STDOUT: %.loc11_10.2: i32 = stub_reference %.loc11_10.1
|
||||
// CHECK:STDOUT: %.loc11_6: init () = call @Foo(%.loc11_7.2, %.loc11_10.2)
|
||||
// CHECK:STDOUT: %.loc10_6.2: init () = call @Foo(%.loc10_7, %.loc10_10)
|
||||
// CHECK:STDOUT: %.loc11_7: i32 = int_literal 1
|
||||
// CHECK:STDOUT: %.loc11_10: i32 = int_literal 2
|
||||
// CHECK:STDOUT: %.loc11_6: init () = call @Foo(%.loc11_7, %.loc11_10)
|
||||
// CHECK:STDOUT: return
|
||||
// CHECK:STDOUT: }
|
||||
|
||||
Reference in New Issue
Block a user