aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-phinodes.h
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2023-07-14 10:01:39 +0200
committerRichard Biener <rguenther@suse.de>2023-07-14 10:35:41 +0200
commitb77161e60bce7b4416319defe5f141f14fd375c4 (patch)
tree6a7a4fbb249e39904b4929e69ec18d60cd40532b /gcc/tree-phinodes.h
parent407d68daed00e040a7d9545b2a18aa27bf93a106 (diff)
downloadgcc-b77161e60bce7b4416319defe5f141f14fd375c4.zip
gcc-b77161e60bce7b4416319defe5f141f14fd375c4.tar.gz
gcc-b77161e60bce7b4416319defe5f141f14fd375c4.tar.bz2
Provide extra checking for phi argument access from edge
The following adds checking that the edge we query an associated PHI arg for is related to the PHI node. Triggered by questionable code in one of my reviews. * gimple.h (gimple_phi_arg): New const overload. (gimple_phi_arg_def): Make gimple arg const. (gimple_phi_arg_def_from_edge): New inline function. * tree-phinodes.h (gimple_phi_arg_imm_use_ptr_from_edge): Likewise. * tree-ssa-operands.h (PHI_ARG_DEF_FROM_EDGE): Direct to new inline function. (PHI_ARG_DEF_PTR_FROM_EDGE): Likewise.
Diffstat (limited to 'gcc/tree-phinodes.h')
-rw-r--r--gcc/tree-phinodes.h7
1 files changed, 7 insertions, 0 deletions
diff --git a/gcc/tree-phinodes.h b/gcc/tree-phinodes.h
index 932a461..be114e3 100644
--- a/gcc/tree-phinodes.h
+++ b/gcc/tree-phinodes.h
@@ -37,6 +37,13 @@ gimple_phi_arg_imm_use_ptr (gimple *gs, int i)
return &gimple_phi_arg (gs, i)->imm_use;
}
+inline use_operand_p
+gimple_phi_arg_imm_use_ptr_from_edge (gimple *gs, const_edge e)
+{
+ gcc_checking_assert (e->dest == gimple_bb (gs));
+ return &gimple_phi_arg (gs, e->dest_idx)->imm_use;
+}
+
/* Return the phi argument which contains the specified use. */
inline int