This patch to the Go frontend by Cherry Zhang removes stack_allocation_expression from the backend interface. Now that we consistently use temporary variables for temporaries, stack_allocation_expression is no longer used. Bootstrapped and ran Go testsuite on x86_64-pc-linux-gnu. Committed to mainline.
Ian 2018-06-08 Cherry Zhang <cherr...@google.com> * go-gcc.cc (class Gcc_backend): Remove stack_allocation_expression method.
Index: gcc/go/go-gcc.cc =================================================================== --- gcc/go/go-gcc.cc (revision 261203) +++ gcc/go/go-gcc.cc (working copy) @@ -352,9 +352,6 @@ class Gcc_backend : public Backend const std::vector<Bexpression*>& args, Bexpression* static_chain, Location); - Bexpression* - stack_allocation_expression(int64_t size, Location); - // Statements. Bstatement* @@ -1999,20 +1996,6 @@ Gcc_backend::call_expression(Bfunction*, return this->make_expression(ret); } -// Return an expression that allocates SIZE bytes on the stack. - -Bexpression* -Gcc_backend::stack_allocation_expression(int64_t size, Location location) -{ - tree alloca = builtin_decl_explicit(BUILT_IN_ALLOCA); - tree size_tree = build_int_cst(integer_type_node, size); - tree ret = build_call_expr_loc(location.gcc_location(), alloca, 1, size_tree); - tree memset = builtin_decl_explicit(BUILT_IN_MEMSET); - ret = build_call_expr_loc(location.gcc_location(), memset, 3, - ret, integer_zero_node, size_tree); - return this->make_expression(ret); -} - // An expression as a statement. Bstatement* Index: gcc/go/gofrontend/backend.h =================================================================== --- gcc/go/gofrontend/backend.h (revision 261203) +++ gcc/go/gofrontend/backend.h (working copy) @@ -379,10 +379,6 @@ class Backend const std::vector<Bexpression*>& args, Bexpression* static_chain, Location) = 0; - // Return an expression that allocates SIZE bytes on the stack. - virtual Bexpression* - stack_allocation_expression(int64_t size, Location) = 0; - // Statements. // Create an error statement. This is used for cases which should