diff options
author | Qing Zhao <qing.zhao@oracle.com> | 2022-11-09 15:48:04 +0000 |
---|---|---|
committer | Qing Zhao <qing.zhao@oracle.com> | 2022-11-09 15:48:04 +0000 |
commit | ace0ae09332bbc6b95e084c2c2b17c466339ff76 (patch) | |
tree | 54cd5d03b2e32bf70487ddea4dbdccbce7dc28c9 /gcc/gimple-fold.cc | |
parent | 0b3d926d796050468b8a844e5fb8c20bda741c26 (diff) | |
download | gcc-ace0ae09332bbc6b95e084c2c2b17c466339ff76.zip gcc-ace0ae09332bbc6b95e084c2c2b17c466339ff76.tar.gz gcc-ace0ae09332bbc6b95e084c2c2b17c466339ff76.tar.bz2 |
Change the name of array_at_struct_end_p to array_ref_flexible_size_p
The name of the utility routine "array_at_struct_end_p" is misleading
and should be changed to a new name that more accurately reflects its
real meaning.
The routine "array_at_struct_end_p" is used to check whether an array
reference is to an array whose actual size might be larger than its
upper bound implies, which includes 3 different cases:
A. a ref to a flexible array member at the end of a structure;
B. a ref to an array with a different type against the original decl;
C. a ref to an array that was passed as a parameter;
The old name only reflects the above case A, therefore very confusing
when reading the corresponding gcc source code.
In this patch, A new name "array_ref_flexible_size_p" is used to replace
the old name.
All the references to the routine "array_at_struct_end_p" was replaced
with this new name, and the corresponding comments were updated to make
them clean and consistent.
gcc/ChangeLog:
* gimple-array-bounds.cc (trailing_array): Replace
array_at_struct_end_p with new name and update comments.
* gimple-fold.cc (get_range_strlen_tree): Likewise.
* gimple-ssa-warn-restrict.cc (builtin_memref::builtin_memref):
Likewise.
* graphite-sese-to-poly.cc (bounds_are_valid): Likewise.
* tree-if-conv.cc (idx_within_array_bound): Likewise.
* tree-object-size.cc (addr_object_size): Likewise.
* tree-ssa-alias.cc (component_ref_to_zero_sized_trailing_array_p):
Likewise.
(stmt_kills_ref_p): Likewise.
* tree-ssa-loop-niter.cc (idx_infer_loop_bounds): Likewise.
* tree-ssa-strlen.cc (maybe_set_strlen_range): Likewise.
* tree.cc (array_at_struct_end_p): Rename to ...
(array_ref_flexible_size_p): ... this.
(component_ref_size): Replace array_at_struct_end_p with new name.
* tree.h (array_at_struct_end_p): Rename to ...
(array_ref_flexible_size_p): ... this.
Diffstat (limited to 'gcc/gimple-fold.cc')
-rw-r--r-- | gcc/gimple-fold.cc | 6 |
1 files changed, 2 insertions, 4 deletions
diff --git a/gcc/gimple-fold.cc b/gcc/gimple-fold.cc index 410544c..8d40798 100644 --- a/gcc/gimple-fold.cc +++ b/gcc/gimple-fold.cc @@ -1690,13 +1690,11 @@ get_range_strlen_tree (tree arg, bitmap visited, strlen_range_kind rkind, /* Handle a MEM_REF into a DECL accessing an array of integers, being conservative about references to extern structures with flexible array members that can be initialized to arbitrary - numbers of elements as an extension (static structs are okay). - FIXME: Make this less conservative -- see - component_ref_size in tree.cc. */ + numbers of elements as an extension (static structs are okay). */ tree ref = TREE_OPERAND (TREE_OPERAND (arg, 0), 0); if ((TREE_CODE (ref) == PARM_DECL || VAR_P (ref)) && (decl_binds_to_current_def_p (ref) - || !array_at_struct_end_p (arg))) + || !array_ref_flexible_size_p (arg))) { /* Fail if the offset is out of bounds. Such accesses should be diagnosed at some point. */ |