+++ /dev/null
-implementation
-int "testExpressions"(int %N, int* %A)
-begin
- %N1 = add int %N, 12
- %N2 = mul int %N, 7
- %N3 = add int %N1, %N2 ;; Should equal 8*N+12
- %N4 = shl int %N3, ubyte 3 ;; Should equal 64*N + 96
- %N5 = mul int %N4, 0 ;; 0
- br label %1
-
- %C = cast int 264 to ubyte ;; 8
- %C1 = add ubyte 252, %C ;; 4
- %C2 = cast ubyte %C1 to ulong ;; 4
- %C3 = add ulong 12345678901, %C2 ;; 12345678905
- %C4 = cast ulong %C3 to sbyte * ;; 12345678905
- br label %2
-
- %A1 = cast int 4 to int *
- %A2 = add int *%A, %A1 ;; %A+4
- %A3 = cast int 8 to int *
- %A4 = add int *%A, %A3 ;; %A+8
- %X = sub int *%A4, %A2 ;; Should equal 4
- br label %3
-
- %Z1 = cast int 400 to int *
- %Z2 = cast sbyte 2 to int *
- %Z3 = add int* %Z1, %Z2
- %Z4 = cast int* %Z3 to ubyte
-
- ret int %N4
-end
-
+++ /dev/null
-%var = internal global int 1234 ;; used by dead method
-
-implementation
-
-internal int "deadfunc"() {
- %val = load int * %var
- %val2 = call int %deadfunc()
- %val3 = add int %val, %val2
- ret int %val3
-}
-
-int "main"(int %argc) ; TODO: , sbyte **argv, sbyte **envp)
-begin
- ret int -1
-end
-
+++ /dev/null
-implementation
-
-int "looptest"(int %i, int %j)
-begin
- %whichLoop = setlt int %i, %j
- br bool %whichLoop, label %Loop1Header, label %Loop2Header
-
-Loop1Header:
- %i1 = add int 0, 0 ; %i1 = 0
- br label %L1Top
-L1Top:
- %i2 = phi int [%i1, %Loop1Header], [%i3, %L1Body]
- %L1Done = seteq int %i2, %j
- br bool %L1Done, label %L1End, label %L1Body
-L1Body:
- %i3 = add int %i2, 2
- br label %L1Top
-L1End:
- %v0 = add int %i2, %j ; %v0 = 3 * %j
- br label %Merge
-
-Loop2Header:
- %m1 = add int 0, 0
- %k1 = add int 0, %i
- br label %L2Top
-L2Top:
- %k2 = phi int [%k1, %Loop2Header], [%k3, %L2Body]
- %m2 = phi int [%m1, %Loop2Header], [%m3, %L2Body]
- %L2Done = seteq int %k2, 0
- br bool %L2Done, label %L2End, label %L2Body
-L2Body:
- %k3 = sub int %k2, 1
- %m3 = add int %m2, %j
- br label %L2Top
-L2End:
- %v1 = add int %m2, %k2
- br label %Merge
-
-Merge:
- %v2 = phi int [%v0, %L1End], [%v1, %L2End]
- ret int %v2
-end
-
-int "main"()
-begin
- call int %looptest(int 0, int 12)
- ret int %0
-end
-
+++ /dev/null
-implementation
-
-int "FuncToInline"()
-begin
- %x = add int 1, 1 ; Instrs can be const prop'd away
- %y = sub int -1, 1
- %z = add int %x, %y
- ret int %z ; Should equal %0
-end
-
-int "FuncToInlineInto"(int %arg) ; Instrs can be const prop'd away
-begin
- %x = add int %arg, 1
- %y = sub int 1, -1
- %p = call int %FuncToInline()
- %z = add int %x, %y
- %q = add int %p, %z
-
- ret int %q
-end
-
-int "main"()
-begin
- %z = call int %FuncToInlineInto(int 1)
- ret int %z
-end
-