diff options
author | Thomas Schwinge <tschwinge@baylibre.com> | 2024-03-11 22:38:33 +0100 |
---|---|---|
committer | Thomas Schwinge <tschwinge@baylibre.com> | 2024-03-11 22:38:33 +0100 |
commit | 4235574518bd016f208b97f6f497978c31771e12 (patch) | |
tree | 06362f23752d180e7ce4e6407787beba9634505c /gcc/tree-data-ref.cc | |
parent | 2cd7fb664ce9617c90b65b399423d330e1a78068 (diff) | |
parent | 0d9b4e8647ff01c3d3a782ab26684ca5a7c2f527 (diff) | |
download | gcc-4235574518bd016f208b97f6f497978c31771e12.zip gcc-4235574518bd016f208b97f6f497978c31771e12.tar.gz gcc-4235574518bd016f208b97f6f497978c31771e12.tar.bz2 |
Merge commit '46595ce72e5855189e3c60a140c3ca5aaddfb58c^' into HEAD
Diffstat (limited to 'gcc/tree-data-ref.cc')
-rw-r--r-- | gcc/tree-data-ref.cc | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/gcc/tree-data-ref.cc b/gcc/tree-data-ref.cc index 6d3b7c2..689aaee 100644 --- a/gcc/tree-data-ref.cc +++ b/gcc/tree-data-ref.cc @@ -100,6 +100,7 @@ along with GCC; see the file COPYING3. If not see #include "vr-values.h" #include "range-op.h" #include "tree-ssa-loop-ivopts.h" +#include "calls.h" static struct datadep_stats { @@ -5816,6 +5817,15 @@ get_references_in_stmt (gimple *stmt, vec<data_ref_loc, va_heap> *references) } case IFN_MASK_LOAD: case IFN_MASK_STORE: + break; + case IFN_MASK_CALL: + { + tree orig_fndecl + = gimple_call_addr_fndecl (gimple_call_arg (stmt, 0)); + if (!orig_fndecl + || (flags_from_decl_or_type (orig_fndecl) & ECF_CONST) == 0) + clobbers_memory = true; + } break; default: clobbers_memory = true; @@ -5852,7 +5862,7 @@ get_references_in_stmt (gimple *stmt, vec<data_ref_loc, va_heap> *references) } else if (stmt_code == GIMPLE_CALL) { - unsigned i, n; + unsigned i = 0, n; tree ptr, type; unsigned int align; @@ -5879,13 +5889,16 @@ get_references_in_stmt (gimple *stmt, vec<data_ref_loc, va_heap> *references) ptr); references->safe_push (ref); return false; + case IFN_MASK_CALL: + i = 1; + gcc_fallthrough (); default: break; } op0 = gimple_call_lhs (stmt); n = gimple_call_num_args (stmt); - for (i = 0; i < n; i++) + for (; i < n; i++) { op1 = gimple_call_arg (stmt, i); |