Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Testing d:/code/vcngl3/sinktest1.sink
- // Variables can be:
- // long (64-bit integer)
- // int (32-bit integer)
- // short (16-bit integer)
- // char (8-bit integer)
- // struct
- // structure declaration test
- struct Test
- {
- int a;
- int b;
- };
- func Fibonacci(int n)
- {
- if (n <= 1)
- return n;
- return Fibonacci(n - 1) + Fibonacci(n - 2);
- }
- func exit(int n)
- {
- }
- // Assign short circuit eval
- func farfromzero(int a, int b)
- {
- var c;
- c = (a <= -5 || a >= 5);
- return c;
- }
- // Return value from short circuit eval
- func farfromzerodirect(int a, int b)
- {
- return (a <= -5 || a >= 5);
- }
- // Short circuit evaluation tests
- func sce1(int a, int b)
- {
- if ((a >= -5 && a <= 5) || (b >= -5 && b <= 5))
- exit(1);
- }
- func sce2(int a, int b)
- {
- if ((a >= -5 || a <= 5) && (b >= -5 || b <= 5))
- exit(1);
- }
- func sce1e(int a, int b)
- {
- if ((a >= -5 && a <= 5) || (b >= -5 && b <= 5))
- exit(1);
- else
- exit(0);
- }
- func sce2e(int a, int b)
- {
- if ((a >= -5 || a <= 5) && (b >= -5 || b <= 5))
- exit(1);
- else
- exit(0);
- }
- func sce1ei(int a, int b)
- {
- if ((a >= -5 && a <= 5) || (b >= -5 && b <= 5))
- exit(1);
- else if ((a >= -500 && a <= -450) || (b >= -500 && b <= -450))
- exit(0);
- }
- func sce2eie(int a, int b)
- {
- if ((a >= -5 || a <= 5) && (b >= -5 || b <= 5))
- exit(1);
- else if ((a >= -500 && a <= -450) || (b >= -500 && b <= -450))
- exit(0);
- else
- exit(-1);
- }
- func puts(s)
- {
- var c;
- c = s;
- }
- (null)(0): Syntax error here ""
- d:/code/vcngl3/sinktest1.sink(3): or here "struct"
- ****** SYNTAX ERROR ******
- d:/code/vcngl3/sinktest1.sink
- Testing func f(int a, int b) { if ((a >= -5 && a <= 5) || (b >= -5 && b <= 5)) a = 0; }
- Op_Function
- Op_Token: f
- Op_Parameters
- Op_Parameter
- Op_VariableExp
- Op_Token: int
- Op_Token: a
- Op_VariableExp
- Op_Token: int
- Op_Token: b
- Op_If
- Op_LogicalOr
- Op_LogicalAnd
- Op_CmpGE
- Op_Token: a
- Op_Negate
- Op_IntegerLiteral: 5
- Op_CmpLE
- Op_Token: a
- Op_IntegerLiteral: 5
- Op_LogicalAnd
- Op_CmpGE
- Op_Token: b
- Op_Negate
- Op_IntegerLiteral: 5
- Op_CmpLE
- Op_Token: b
- Op_IntegerLiteral: 5
- Op_Assign
- Op_Token: a
- Op_IntegerLiteral: 0
- test(1): "f" defined here
- test(1): "a" defined here
- test(1): "b" defined here
- Op_Function
- Op_FunctionName: f
- Op_Parameters
- Op_Parameter
- Op_VariableExp
- Op_Token: int
- Op_VariableName: a
- Op_VariableExp
- Op_Token: int
- Op_VariableName: b
- Op_If
- Op_LogicalOr
- Op_LogicalAnd
- Op_CmpGE
- Op_VariableName: a
- Op_IntegerLiteral: -5
- Op_CmpLE
- Op_VariableName: a
- Op_IntegerLiteral: 5
- Op_LogicalAnd
- Op_CmpGE
- Op_VariableName: b
- Op_IntegerLiteral: -5
- Op_CmpLE
- Op_VariableName: b
- Op_IntegerLiteral: 5
- Op_Assign
- Op_VariableName: a
- Op_IntegerLiteral: 0
- After optimization
- TARGET f
- PARAM r1, a
- LOCAL r2, b
- COPY r4, r1
- LOADINT r5, -5
- CMP_LT_JT L4, r4, r5
- COPY r6, r1
- LOADINT r7, 5
- CMP_LE_JT L3, r6, r7
- L4:
- COPY r8, r2
- LOADINT r9, -5
- CMP_LT_JT L2, r8, r9
- COPY r10, r2
- LOADINT r11, 5
- CMP_GT_JT L2, r10, r11
- L3:
- LOADINT r1, 0
- L2:
- RETURN
- Testing func f(int a, int b) { if ((a >= -5 || a <= 5) && (b >= -5 || b <= 5)) a = 0; }
- Op_Function
- Op_Token: f
- Op_Parameters
- Op_Parameter
- Op_VariableExp
- Op_Token: int
- Op_Token: a
- Op_VariableExp
- Op_Token: int
- Op_Token: b
- Op_If
- Op_LogicalAnd
- Op_LogicalOr
- Op_CmpGE
- Op_Token: a
- Op_Negate
- Op_IntegerLiteral: 5
- Op_CmpLE
- Op_Token: a
- Op_IntegerLiteral: 5
- Op_LogicalOr
- Op_CmpGE
- Op_Token: b
- Op_Negate
- Op_IntegerLiteral: 5
- Op_CmpLE
- Op_Token: b
- Op_IntegerLiteral: 5
- Op_Assign
- Op_Token: a
- Op_IntegerLiteral: 0
- test(1): "f" defined here
- test(1): "a" defined here
- test(1): "b" defined here
- Op_Function
- Op_FunctionName: f
- Op_Parameters
- Op_Parameter
- Op_VariableExp
- Op_Token: int
- Op_VariableName: a
- Op_VariableExp
- Op_Token: int
- Op_VariableName: b
- Op_If
- Op_LogicalAnd
- Op_LogicalOr
- Op_CmpGE
- Op_VariableName: a
- Op_IntegerLiteral: -5
- Op_CmpLE
- Op_VariableName: a
- Op_IntegerLiteral: 5
- Op_LogicalOr
- Op_CmpGE
- Op_VariableName: b
- Op_IntegerLiteral: -5
- Op_CmpLE
- Op_VariableName: b
- Op_IntegerLiteral: 5
- Op_Assign
- Op_VariableName: a
- Op_IntegerLiteral: 0
- After optimization
- TARGET f
- PARAM r1, a
- LOCAL r2, b
- COPY r4, r1
- LOADINT r5, -5
- CMP_GE_JT L4, r4, r5
- COPY r6, r1
- LOADINT r7, 5
- CMP_GT_JT L2, r6, r7
- L4:
- COPY r8, r2
- LOADINT r9, -5
- CMP_GE_JT L3, r8, r9
- COPY r10, r2
- LOADINT r11, 5
- CMP_GT_JT L2, r10, r11
- L3:
- LOADINT r1, 0
- L2:
- RETURN
- Testing func f(int a, int b) { if ((a >= -5 && a <= 5) || (b >= -5 && b <= 5)) a = 0; else a = 1; }
- Op_Function
- Op_Token: f
- Op_Parameters
- Op_Parameter
- Op_VariableExp
- Op_Token: int
- Op_Token: a
- Op_VariableExp
- Op_Token: int
- Op_Token: b
- Op_IfElse
- Op_LogicalOr
- Op_LogicalAnd
- Op_CmpGE
- Op_Token: a
- Op_Negate
- Op_IntegerLiteral: 5
- Op_CmpLE
- Op_Token: a
- Op_IntegerLiteral: 5
- Op_LogicalAnd
- Op_CmpGE
- Op_Token: b
- Op_Negate
- Op_IntegerLiteral: 5
- Op_CmpLE
- Op_Token: b
- Op_IntegerLiteral: 5
- Op_Assign
- Op_Token: a
- Op_IntegerLiteral: 0
- Op_Else
- Op_Assign
- Op_Token: a
- Op_IntegerLiteral: 1
- test(1): "f" defined here
- test(1): "a" defined here
- test(1): "b" defined here
- Op_Function
- Op_FunctionName: f
- Op_Parameters
- Op_Parameter
- Op_VariableExp
- Op_Token: int
- Op_VariableName: a
- Op_VariableExp
- Op_Token: int
- Op_VariableName: b
- Op_IfElse
- Op_LogicalOr
- Op_LogicalAnd
- Op_CmpGE
- Op_VariableName: a
- Op_IntegerLiteral: -5
- Op_CmpLE
- Op_VariableName: a
- Op_IntegerLiteral: 5
- Op_LogicalAnd
- Op_CmpGE
- Op_VariableName: b
- Op_IntegerLiteral: -5
- Op_CmpLE
- Op_VariableName: b
- Op_IntegerLiteral: 5
- Op_Assign
- Op_VariableName: a
- Op_IntegerLiteral: 0
- Op_Else
- Op_Assign
- Op_VariableName: a
- Op_IntegerLiteral: 1
- After optimization
- TARGET f
- PARAM r1, a
- LOCAL r2, b
- COPY r4, r1
- LOADINT r5, -5
- CMP_LT_JT L4, r4, r5
- COPY r6, r1
- LOADINT r7, 5
- CMP_LE_JT L3, r6, r7
- L4:
- COPY r8, r2
- LOADINT r9, -5
- CMP_LT_JT L2, r8, r9
- COPY r10, r2
- LOADINT r11, 5
- CMP_GT_JT L2, r10, r11
- L3:
- LOADINT r1, 0
- GOTO L1
- L2:
- LOADINT r1, 1
- L1:
- RETURN
- Testing func f(int a, int b) { if ((a >= -5 || a <= 5) && (b >= -5 || b <= 5)) a = 0; else a = 1; }
- Op_Function
- Op_Token: f
- Op_Parameters
- Op_Parameter
- Op_VariableExp
- Op_Token: int
- Op_Token: a
- Op_VariableExp
- Op_Token: int
- Op_Token: b
- Op_IfElse
- Op_LogicalAnd
- Op_LogicalOr
- Op_CmpGE
- Op_Token: a
- Op_Negate
- Op_IntegerLiteral: 5
- Op_CmpLE
- Op_Token: a
- Op_IntegerLiteral: 5
- Op_LogicalOr
- Op_CmpGE
- Op_Token: b
- Op_Negate
- Op_IntegerLiteral: 5
- Op_CmpLE
- Op_Token: b
- Op_IntegerLiteral: 5
- Op_Assign
- Op_Token: a
- Op_IntegerLiteral: 0
- Op_Else
- Op_Assign
- Op_Token: a
- Op_IntegerLiteral: 1
- test(1): "f" defined here
- test(1): "a" defined here
- test(1): "b" defined here
- Op_Function
- Op_FunctionName: f
- Op_Parameters
- Op_Parameter
- Op_VariableExp
- Op_Token: int
- Op_VariableName: a
- Op_VariableExp
- Op_Token: int
- Op_VariableName: b
- Op_IfElse
- Op_LogicalAnd
- Op_LogicalOr
- Op_CmpGE
- Op_VariableName: a
- Op_IntegerLiteral: -5
- Op_CmpLE
- Op_VariableName: a
- Op_IntegerLiteral: 5
- Op_LogicalOr
- Op_CmpGE
- Op_VariableName: b
- Op_IntegerLiteral: -5
- Op_CmpLE
- Op_VariableName: b
- Op_IntegerLiteral: 5
- Op_Assign
- Op_VariableName: a
- Op_IntegerLiteral: 0
- Op_Else
- Op_Assign
- Op_VariableName: a
- Op_IntegerLiteral: 1
- After optimization
- TARGET f
- PARAM r1, a
- LOCAL r2, b
- COPY r4, r1
- LOADINT r5, -5
- CMP_GE_JT L4, r4, r5
- COPY r6, r1
- LOADINT r7, 5
- CMP_GT_JT L2, r6, r7
- L4:
- COPY r8, r2
- LOADINT r9, -5
- CMP_GE_JT L3, r8, r9
- COPY r10, r2
- LOADINT r11, 5
- CMP_GT_JT L2, r10, r11
- L3:
- LOADINT r1, 0
- GOTO L1
- L2:
- LOADINT r1, 1
- L1:
- RETURN
Advertisement
Add Comment
Please, Sign In to add comment