mirror of
https://github.com/c3lang/c3c.git
synced 2026-02-27 12:01:16 +00:00
Incorrectly removed %=. Now restored with tests.
This commit is contained in:
@@ -192,6 +192,7 @@ BinaryOp binary_op[TOKEN_LAST + 1] = {
|
|||||||
[TOKEN_PLUS_ASSIGN] = BINARYOP_ADD_ASSIGN,
|
[TOKEN_PLUS_ASSIGN] = BINARYOP_ADD_ASSIGN,
|
||||||
[TOKEN_MINUS_ASSIGN] = BINARYOP_SUB_ASSIGN,
|
[TOKEN_MINUS_ASSIGN] = BINARYOP_SUB_ASSIGN,
|
||||||
[TOKEN_DIV_ASSIGN] = BINARYOP_DIV_ASSIGN,
|
[TOKEN_DIV_ASSIGN] = BINARYOP_DIV_ASSIGN,
|
||||||
|
[TOKEN_MOD_ASSIGN] = BINARYOP_MOD_ASSIGN,
|
||||||
[TOKEN_BIT_AND_ASSIGN] = BINARYOP_BIT_AND_ASSIGN,
|
[TOKEN_BIT_AND_ASSIGN] = BINARYOP_BIT_AND_ASSIGN,
|
||||||
[TOKEN_BIT_OR_ASSIGN] = BINARYOP_BIT_OR_ASSIGN,
|
[TOKEN_BIT_OR_ASSIGN] = BINARYOP_BIT_OR_ASSIGN,
|
||||||
[TOKEN_BIT_XOR_ASSIGN] = BINARYOP_BIT_XOR_ASSIGN,
|
[TOKEN_BIT_XOR_ASSIGN] = BINARYOP_BIT_XOR_ASSIGN,
|
||||||
@@ -205,6 +206,7 @@ static BinaryOp assign_binop[BINARYOP_LAST + 1] = {
|
|||||||
[BINARYOP_ADD_ASSIGN] = BINARYOP_ADD,
|
[BINARYOP_ADD_ASSIGN] = BINARYOP_ADD,
|
||||||
[BINARYOP_SUB_ASSIGN] = BINARYOP_SUB,
|
[BINARYOP_SUB_ASSIGN] = BINARYOP_SUB,
|
||||||
[BINARYOP_DIV_ASSIGN] = BINARYOP_DIV,
|
[BINARYOP_DIV_ASSIGN] = BINARYOP_DIV,
|
||||||
|
[BINARYOP_MOD_ASSIGN] = BINARYOP_MOD,
|
||||||
[BINARYOP_BIT_AND_ASSIGN] = BINARYOP_BIT_AND,
|
[BINARYOP_BIT_AND_ASSIGN] = BINARYOP_BIT_AND,
|
||||||
[BINARYOP_BIT_OR_ASSIGN] = BINARYOP_BIT_OR,
|
[BINARYOP_BIT_OR_ASSIGN] = BINARYOP_BIT_OR,
|
||||||
[BINARYOP_BIT_XOR_ASSIGN] = BINARYOP_BIT_XOR,
|
[BINARYOP_BIT_XOR_ASSIGN] = BINARYOP_BIT_XOR,
|
||||||
|
|||||||
67
test/test_suite/assignment/int_assign.c3t
Normal file
67
test/test_suite/assignment/int_assign.c3t
Normal file
@@ -0,0 +1,67 @@
|
|||||||
|
module test;
|
||||||
|
|
||||||
|
func int foo()
|
||||||
|
{
|
||||||
|
int x = 0;
|
||||||
|
int y;
|
||||||
|
x += y;
|
||||||
|
x -= y;
|
||||||
|
x %= y;
|
||||||
|
x /= y;
|
||||||
|
x *= y;
|
||||||
|
x <<= y;
|
||||||
|
x >>= y;
|
||||||
|
x ^= y;
|
||||||
|
x |= y;
|
||||||
|
x &= y;
|
||||||
|
return x;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// #expect: int_assign.ll
|
||||||
|
|
||||||
|
%x = alloca i32, align 4
|
||||||
|
%y = alloca i32, align 4
|
||||||
|
store i32 0, i32* %x, align 4
|
||||||
|
store i32 0, i32* %y, align 4
|
||||||
|
%0 = load i32, i32* %x, align 4
|
||||||
|
%1 = load i32, i32* %y, align 4
|
||||||
|
%add = add i32 %0, %1
|
||||||
|
store i32 %add, i32* %x, align 4
|
||||||
|
%2 = load i32, i32* %x, align 4
|
||||||
|
%3 = load i32, i32* %y, align 4
|
||||||
|
%sub = sub i32 %2, %3
|
||||||
|
store i32 %sub, i32* %x, align 4
|
||||||
|
%4 = load i32, i32* %x, align 4
|
||||||
|
%5 = load i32, i32* %y, align 4
|
||||||
|
%smod = srem i32 %4, %5
|
||||||
|
store i32 %smod, i32* %x, align 4
|
||||||
|
%6 = load i32, i32* %x, align 4
|
||||||
|
%7 = load i32, i32* %y, align 4
|
||||||
|
%sdiv = sdiv i32 %6, %7
|
||||||
|
store i32 %sdiv, i32* %x, align 4
|
||||||
|
%8 = load i32, i32* %x, align 4
|
||||||
|
%9 = load i32, i32* %y, align 4
|
||||||
|
%mul = mul i32 %8, %9
|
||||||
|
store i32 %mul, i32* %x, align 4
|
||||||
|
%10 = load i32, i32* %x, align 4
|
||||||
|
%11 = load i32, i32* %y, align 4
|
||||||
|
%shl = shl i32 %10, %11
|
||||||
|
store i32 %shl, i32* %x, align 4
|
||||||
|
%12 = load i32, i32* %x, align 4
|
||||||
|
%13 = load i32, i32* %y, align 4
|
||||||
|
%ashr = ashr i32 %12, %13
|
||||||
|
store i32 %ashr, i32* %x, align 4
|
||||||
|
%14 = load i32, i32* %x, align 4
|
||||||
|
%15 = load i32, i32* %y, align 4
|
||||||
|
%xor = xor i32 %14, %15
|
||||||
|
store i32 %xor, i32* %x, align 4
|
||||||
|
%16 = load i32, i32* %x, align 4
|
||||||
|
%17 = load i32, i32* %y, align 4
|
||||||
|
%or = or i32 %16, %17
|
||||||
|
store i32 %or, i32* %x, align 4
|
||||||
|
%18 = load i32, i32* %x, align 4
|
||||||
|
%19 = load i32, i32* %y, align 4
|
||||||
|
%and = and i32 %18, %19
|
||||||
|
store i32 %and, i32* %x, align 4
|
||||||
|
%20 = load i32, i32* %x, align 4
|
||||||
Reference in New Issue
Block a user