Skip to content

Commit

Permalink
gccrs: Mark uninit-intrinsic as side-effects
Browse files Browse the repository at this point in the history
Ensure the uninit intrinsic does not get optimized away

Addresses Rust-GCC#1895

gcc/rust/ChangeLog:

	* backend/rust-compile-intrinsic.cc (uninit_handler): Update fndecl attributes

Signed-off-by: Philip Herron <[email protected]>
  • Loading branch information
philberty authored and CohenArthur committed Jan 16, 2024
1 parent 2e23b4d commit a016eee
Showing 1 changed file with 4 additions and 3 deletions.
7 changes: 4 additions & 3 deletions gcc/rust/backend/rust-compile-intrinsic.cc
Original file line number Diff line number Diff line change
Expand Up @@ -1017,6 +1017,10 @@ uninit_handler (Context *ctx, TyTy::FnType *fntype)

auto fndecl = compile_intrinsic_function (ctx, fntype);

// Most intrinsic functions are pure - not `uninit_handler`
TREE_READONLY (fndecl) = 0;
TREE_SIDE_EFFECTS (fndecl) = 1;

// get the template parameter type tree fn uninit<T>();
rust_assert (fntype->get_num_substitutions () == 1);
auto &param_mapping = fntype->get_substs ().at (0);
Expand Down Expand Up @@ -1055,9 +1059,6 @@ uninit_handler (Context *ctx, TyTy::FnType *fntype)

tree memset_call = build_call_expr_loc (BUILTINS_LOCATION, memset_builtin, 3,
dst_addr, constant_byte, size_expr);
TREE_READONLY (memset_call) = 0;
TREE_SIDE_EFFECTS (memset_call) = 1;

ctx->add_statement (memset_call);

auto return_statement
Expand Down

0 comments on commit a016eee

Please sign in to comment.