diff options
author | Philip Herron <herron.philip@googlemail.com> | 2023-08-31 11:33:12 +0100 |
---|---|---|
committer | Arthur Cohen <arthur.cohen@embecosm.com> | 2024-01-16 19:00:34 +0100 |
commit | 7519a5fb37aeb459bad022c9a41dd47b2d5b2b12 (patch) | |
tree | 14db67f591baa74424fb3b6d3a0c24107855c111 /gcc | |
parent | 215b6acecb609d2a424e36116f1be8cf30d53438 (diff) | |
download | gcc-7519a5fb37aeb459bad022c9a41dd47b2d5b2b12.zip gcc-7519a5fb37aeb459bad022c9a41dd47b2d5b2b12.tar.gz gcc-7519a5fb37aeb459bad022c9a41dd47b2d5b2b12.tar.bz2 |
gccrs: Mark uninit-intrinsic as side-effects
Ensure the uninit intrinsic does not get optimized away
Addresses #1895
gcc/rust/ChangeLog:
* backend/rust-compile-intrinsic.cc (uninit_handler): Update fndecl attributes
Signed-off-by: Philip Herron <herron.philip@googlemail.com>
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/rust/backend/rust-compile-intrinsic.cc | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/gcc/rust/backend/rust-compile-intrinsic.cc b/gcc/rust/backend/rust-compile-intrinsic.cc index cbf6c0b..5b41a3f 100644 --- a/gcc/rust/backend/rust-compile-intrinsic.cc +++ b/gcc/rust/backend/rust-compile-intrinsic.cc @@ -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 ¶m_mapping = fntype->get_substs ().at (0); @@ -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 |