Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion include/blocks/c_code_generator.h
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,6 @@ class c_code_generator : public block_visitor {
virtual void visit(builder_var_type::Ptr);
virtual void visit(named_type::Ptr);

void handle_func_arg(var::Ptr a);
virtual void visit(func_decl::Ptr);
virtual void visit(struct_decl::Ptr);
virtual void visit(return_stmt::Ptr);
Expand All @@ -90,6 +89,7 @@ class c_code_generator : public block_visitor {
virtual void visit(label_stmt::Ptr);

void print_pragma(stmt::Ptr);
void handle_child(expr::Ptr parent, expr::Ptr child, bool is_left);

static void generate_code(block::Ptr ast, std::ostream &oss, int indent = 0, bool decl_only = false) {
c_code_generator generator(oss);
Expand Down
14 changes: 9 additions & 5 deletions include/builder/dyn_var.h
Original file line number Diff line number Diff line change
Expand Up @@ -91,21 +91,21 @@ class dyn_var_impl : public var {


template <typename... types>
builder operator()(const types &...args) {
builder operator()(const types &...args) const {
return ((builder) * this)(args...);
}

// These three need to be defined inside the class, cannot be defined globally
builder operator[](const builder &a) {
builder operator[](const builder &a) const {
return ((builder) * this)[a];
}
builder operator*(void) {
builder operator*(void) const {
return *((builder) * this);
}
builder operator!() {
builder operator!() const {
return !(builder) * this;
}
operator bool() {
operator bool() const {
return (bool)(builder) * this;
}

Expand Down Expand Up @@ -333,6 +333,10 @@ class dyn_var_impl : public var {
// TODO: Consider using dynamic_cast here
return (dyn_var<T> *)this;
}
const dyn_var<T> *addr(void) const {
// TODO: Consider using dynamic_cast here
return (const dyn_var<T> *)this;
}
};

template <typename T, typename V>
Expand Down
2 changes: 1 addition & 1 deletion samples/outputs.var_names/sample1
Original file line number Diff line number Diff line change
Expand Up @@ -122,5 +122,5 @@ STMT_BLOCK
a_0 = a_0 & b_1;
a_0 = a_0 | b_1;
a_0 = a_0 ^ b_1;
~(b_1);
~b_1;
}
2 changes: 1 addition & 1 deletion samples/outputs.var_names/sample3
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ STMT_BLOCK
int a_0;
int b_1;
int c_2;
if (!(c_2)) {
if (!c_2) {
a_0 && b_1;
if (a_0 && b_1) {
c_2 && b_1;
Expand Down
2 changes: 1 addition & 1 deletion samples/outputs.var_names/sample31
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ FUNC_DECL (func1)
VAR_EXPR
VAR (var1)
int func1 (foo arg0) {
foo z_0 = (3 + arg0.var1) + (5 * arg0.var1);
foo z_0 = 3 + arg0.var1 + 5 * arg0.var1;
int var1 = z_0.neighbor + 2;
return var1;
}
Expand Down
4 changes: 2 additions & 2 deletions samples/outputs.var_names/sample33
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,6 @@ STMT_BLOCK
int x_1 = g_0.member;
FooT h_2 = g_0;
h_2 = g_0;
FooT* ptr_3 = (&(g_0));
(ptr_3[0]).member = 0;
FooT* ptr_3 = &g_0;
ptr_3[0].member = 0;
}
8 changes: 4 additions & 4 deletions samples/outputs.var_names/sample37
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
void __global__ cuda_kernel_0 (int* arg0) {
int thread_id_2 = (blockIdx.x * 512) + threadIdx.x;
int thread_id_2 = blockIdx.x * 512 + threadIdx.x;
arg0[thread_id_2] = 0;
}

void __global__ cuda_kernel_1 (int* arg0) {
int thread_id_5 = (blockIdx.x * 512) + threadIdx.x;
int thread_id_5 = blockIdx.x * 512 + threadIdx.x;
arg0[thread_id_5] = 0;
}

char ret_2_0[sizeof(int*)] __device__;
void __global__ cuda_kernel_2 (int* arg0) {
int thread_id_8 = (blockIdx.x * 512) + threadIdx.x;
int thread_id_8 = blockIdx.x * 512 + threadIdx.x;
arg0[thread_id_8] = 0;
if (!(blockIdx.x * blockDim.x + threadIdx.x)) {
runtime::cudaMemcpyToSymbolMagic(ret_2_0, arg0);
Expand All @@ -24,6 +24,6 @@ void bar (int* arg0) {
cudaDeviceSynchronize();
runtime::LaunchCooperativeKernel((void*)cuda_kernel_2, 128, 512, arg0);
cudaDeviceSynchronize();
runtime::cudaMemcpyFromSymbolMagic((&(arg0)), ret_2_0);
runtime::cudaMemcpyFromSymbolMagic(&arg0, ret_2_0);
}

2 changes: 1 addition & 1 deletion samples/outputs.var_names/sample38
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ STMT_BLOCK
int x_1 = g_0.member;
FooT h_2 = g_0;
h_2 = g_0;
FooT* ptr_3 = (&(g_0));
FooT* ptr_3 = &g_0;
ptr_3->member = 0;
ptr_3->member = 1;
FooT i_4 = ptr_3[0];
Expand Down
2 changes: 1 addition & 1 deletion samples/outputs.var_names/sample43
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ void foo (void) {
int var28;
int* var29;
var28 = 0;
var21 = (&(var22));
var21 = &var22;
int var30 = var20;
int* var31 = var21;
int var32 = var22;
Expand Down
2 changes: 1 addition & 1 deletion samples/outputs.var_names/sample44
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ void staged (void) {
if (var2) {
}
int var3 = 0;
(var1 != 1) && (var3 != 1);
var1 != 1 && var3 != 1;
}

void staged2 (void) {
Expand Down
2 changes: 1 addition & 1 deletion samples/outputs.var_names/sample46
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,6 @@ void my_bar (void) {
FooT* i_5;
i_5->member = l_4.my_member;
i_5->member = 0;
(i_5[3]).member = 0;
i_5[3].member = 0;
}

20 changes: 10 additions & 10 deletions samples/outputs.var_names/sample53
Original file line number Diff line number Diff line change
Expand Up @@ -6,34 +6,34 @@ void foo (void) {
} else {
member_var = 2;
}
if ((member_var % 2) == 0) {
if (member_var % 2 == 0) {
member_var = member_var + 0;
}
if ((member_var % 2) == 0) {
if (member_var % 2 == 0) {
member_var = member_var + 1;
}
if ((member_var % 2) == 0) {
if (member_var % 2 == 0) {
member_var = member_var + 2;
}
if ((member_var % 2) == 0) {
if (member_var % 2 == 0) {
member_var = member_var + 3;
}
if ((member_var % 2) == 0) {
if (member_var % 2 == 0) {
member_var = member_var + 4;
}
if ((member_var % 2) == 0) {
if (member_var % 2 == 0) {
member_var = member_var + 5;
}
if ((member_var % 2) == 0) {
if (member_var % 2 == 0) {
member_var = member_var + 6;
}
if ((member_var % 2) == 0) {
if (member_var % 2 == 0) {
member_var = member_var + 7;
}
if ((member_var % 2) == 0) {
if (member_var % 2 == 0) {
member_var = member_var + 8;
}
if ((member_var % 2) == 0) {
if (member_var % 2 == 0) {
member_var = member_var + 9;
}
}
Expand Down
4 changes: 2 additions & 2 deletions samples/outputs.var_names/sample56
Original file line number Diff line number Diff line change
Expand Up @@ -57,8 +57,8 @@ void bar (void) {
my_type a_0;
custom_struct0 b_1;
a_0.nested = b_1;
(a_0.nested).mem0 = a_0.mem0;
((a_0.nested).mem1 = (a_0.nested).mem1 + 1) - 1;
a_0.nested.mem0 = a_0.mem0;
(a_0.nested.mem1 = a_0.nested.mem1 + 1) - 1;
p.mem0 = 0;
}

2 changes: 1 addition & 1 deletion samples/outputs.var_names/sample57
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
void bar (void) {
int x_0 = 0;
int* y_1 = (&(x_0));
int* y_1 = &x_0;
(y_1[0] = y_1[0] + 1) - 1;
int z_2 = 0;
(z_2 = z_2 + 1) - 1;
Expand Down
2 changes: 1 addition & 1 deletion samples/outputs.var_names/sample59
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,6 @@ FUNC_DECL (bar)
void bar (void) {
std::vector<std::vector<int>> x_0;
x_0.resize(2);
(x_0[0]).resize(1);
x_0[0].resize(1);
}

2 changes: 1 addition & 1 deletion samples/outputs.var_names/sample60
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ void bar (void) {
} else {
res_12 = m_4;
}
int* var14 = (&(x_0));
int* var14 = &x_0;
var14[0] = 0;
}

2 changes: 1 addition & 1 deletion samples/outputs.var_names/sample63
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ struct linked_list {
};
void bar (void) {
linked_list* x_0;
((x_0->next)->next)->next = 0;
x_0->next->next->next = 0;
x_0->other = 0;
}

2 changes: 1 addition & 1 deletion samples/outputs.var_names/sample64
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ int power (int arg0, int arg1) {
int res_1 = 1;
int x_2 = arg0;
while (exponent_0 > 1) {
if ((exponent_0 % 2) == 1) {
if (exponent_0 % 2 == 1) {
res_1 = res_1 * x_2;
}
x_2 = x_2 * x_2;
Expand Down
2 changes: 1 addition & 1 deletion samples/outputs/sample1
Original file line number Diff line number Diff line change
Expand Up @@ -122,5 +122,5 @@ STMT_BLOCK
var0 = var0 & var1;
var0 = var0 | var1;
var0 = var0 ^ var1;
~(var1);
~var1;
}
2 changes: 1 addition & 1 deletion samples/outputs/sample3
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ STMT_BLOCK
int var0;
int var1;
int var2;
if (!(var2)) {
if (!var2) {
var0 && var1;
if (var0 && var1) {
var2 && var1;
Expand Down
2 changes: 1 addition & 1 deletion samples/outputs/sample31
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ FUNC_DECL (func1)
VAR_EXPR
VAR (var1)
int func1 (foo arg0) {
foo var0 = (3 + arg0.var1) + (5 * arg0.var1);
foo var0 = 3 + arg0.var1 + 5 * arg0.var1;
int var1 = var0.neighbor + 2;
return var1;
}
Expand Down
4 changes: 2 additions & 2 deletions samples/outputs/sample33
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,6 @@ STMT_BLOCK
int var1 = var0.member;
FooT var2 = var0;
var2 = var0;
FooT* var3 = (&(var0));
(var3[0]).member = 0;
FooT* var3 = &var0;
var3[0].member = 0;
}
8 changes: 4 additions & 4 deletions samples/outputs/sample37
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
void __global__ cuda_kernel_0 (int* arg0) {
int var2 = (blockIdx.x * 512) + threadIdx.x;
int var2 = blockIdx.x * 512 + threadIdx.x;
arg0[var2] = 0;
}

void __global__ cuda_kernel_1 (int* arg0) {
int var5 = (blockIdx.x * 512) + threadIdx.x;
int var5 = blockIdx.x * 512 + threadIdx.x;
arg0[var5] = 0;
}

char ret_2_0[sizeof(int*)] __device__;
void __global__ cuda_kernel_2 (int* arg0) {
int var8 = (blockIdx.x * 512) + threadIdx.x;
int var8 = blockIdx.x * 512 + threadIdx.x;
arg0[var8] = 0;
if (!(blockIdx.x * blockDim.x + threadIdx.x)) {
runtime::cudaMemcpyToSymbolMagic(ret_2_0, arg0);
Expand All @@ -24,6 +24,6 @@ void bar (int* arg0) {
cudaDeviceSynchronize();
runtime::LaunchCooperativeKernel((void*)cuda_kernel_2, 128, 512, arg0);
cudaDeviceSynchronize();
runtime::cudaMemcpyFromSymbolMagic((&(arg0)), ret_2_0);
runtime::cudaMemcpyFromSymbolMagic(&arg0, ret_2_0);
}

2 changes: 1 addition & 1 deletion samples/outputs/sample38
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ STMT_BLOCK
int var1 = var0.member;
FooT var2 = var0;
var2 = var0;
FooT* var3 = (&(var0));
FooT* var3 = &var0;
var3->member = 0;
var3->member = 1;
FooT var4 = var3[0];
Expand Down
2 changes: 1 addition & 1 deletion samples/outputs/sample43
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ void foo (void) {
int var28;
int* var29;
var28 = 0;
var21 = (&(var22));
var21 = &var22;
int var30 = var20;
int* var31 = var21;
int var32 = var22;
Expand Down
2 changes: 1 addition & 1 deletion samples/outputs/sample44
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ void staged (void) {
if (var2) {
}
int var3 = 0;
(var1 != 1) && (var3 != 1);
var1 != 1 && var3 != 1;
}

void staged2 (void) {
Expand Down
2 changes: 1 addition & 1 deletion samples/outputs/sample46
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,6 @@ void my_bar (void) {
FooT* var5;
var5->member = var4.my_member;
var5->member = 0;
(var5[3]).member = 0;
var5[3].member = 0;
}

20 changes: 10 additions & 10 deletions samples/outputs/sample53
Original file line number Diff line number Diff line change
Expand Up @@ -6,34 +6,34 @@ void foo (void) {
} else {
member_var = 2;
}
if ((member_var % 2) == 0) {
if (member_var % 2 == 0) {
member_var = member_var + 0;
}
if ((member_var % 2) == 0) {
if (member_var % 2 == 0) {
member_var = member_var + 1;
}
if ((member_var % 2) == 0) {
if (member_var % 2 == 0) {
member_var = member_var + 2;
}
if ((member_var % 2) == 0) {
if (member_var % 2 == 0) {
member_var = member_var + 3;
}
if ((member_var % 2) == 0) {
if (member_var % 2 == 0) {
member_var = member_var + 4;
}
if ((member_var % 2) == 0) {
if (member_var % 2 == 0) {
member_var = member_var + 5;
}
if ((member_var % 2) == 0) {
if (member_var % 2 == 0) {
member_var = member_var + 6;
}
if ((member_var % 2) == 0) {
if (member_var % 2 == 0) {
member_var = member_var + 7;
}
if ((member_var % 2) == 0) {
if (member_var % 2 == 0) {
member_var = member_var + 8;
}
if ((member_var % 2) == 0) {
if (member_var % 2 == 0) {
member_var = member_var + 9;
}
}
Expand Down
Loading