Lines Matching refs:ssa

37 …bool _ssa_##opN##_has_range(const zend_op_array *op_array, const zend_ssa *ssa, const zend_op *opl…
40 zval *zv = CRT_CONSTANT_EX(op_array, opline->opN, ssa->rt_constants); \
44 ssa->ops && \
45 ssa->var_info && \
46 ssa->ops[opline - op_array->opcodes].opN##_use >= 0 && \
47 ssa->var_info[ssa->ops[opline - op_array->opcodes].opN##_use].has_range); \
53 …long _ssa_##opN##_min_range(const zend_op_array *op_array, const zend_ssa *ssa, const zend_op *opl…
56 zval *zv = CRT_CONSTANT_EX(op_array, opline->opN, ssa->rt_constants); \
67 ssa->ops && \
68 ssa->var_info && \
69 ssa->ops[opline - op_array->opcodes].opN##_use >= 0 && \
70 ssa->var_info[ssa->ops[opline - op_array->opcodes].opN##_use].has_range) { \
71 return ssa->var_info[ssa->ops[opline - op_array->opcodes].opN##_use].range.min; \
77 …long _ssa_##opN##_max_range(const zend_op_array *op_array, const zend_ssa *ssa, const zend_op *opl…
80 zval *zv = CRT_CONSTANT_EX(op_array, opline->opN, ssa->rt_constants); \
91 ssa->ops && \
92 ssa->var_info && \
93 ssa->ops[opline - op_array->opcodes].opN##_use >= 0 && \
94 ssa->var_info[ssa->ops[opline - op_array->opcodes].opN##_use].has_range) { \
95 return ssa->var_info[ssa->ops[opline - op_array->opcodes].opN##_use].range.max; \
101 …ssa_##opN##_range_underflow(const zend_op_array *op_array, const zend_ssa *ssa, const zend_op *opl…
104 zval *zv = CRT_CONSTANT_EX(op_array, opline->opN, ssa->rt_constants); \
109 ssa->ops && \
110 ssa->var_info && \
111 ssa->ops[opline - op_array->opcodes].opN##_use >= 0 && \
112 ssa->var_info[ssa->ops[opline - op_array->opcodes].opN##_use].has_range) { \
113 return ssa->var_info[ssa->ops[opline - op_array->opcodes].opN##_use].range.underflow; \
119 …_ssa_##opN##_range_overflow(const zend_op_array *op_array, const zend_ssa *ssa, const zend_op *opl…
122 zval *zv = CRT_CONSTANT_EX(op_array, opline->opN, ssa->rt_constants); \
127 ssa->ops && \
128 ssa->var_info && \
129 ssa->ops[opline - op_array->opcodes].opN##_use >= 0 && \
130 ssa->var_info[ssa->ops[opline - op_array->opcodes].opN##_use].has_range) { \
131 return ssa->var_info[ssa->ops[opline - op_array->opcodes].opN##_use].range.overflow; \
147 #define OP1_HAS_RANGE() (_ssa_op1_has_range (op_array, ssa, opline)) in DEFINE_SSA_OP_MIN_RANGE()
148 #define OP1_MIN_RANGE() (_ssa_op1_min_range (op_array, ssa, opline)) in DEFINE_SSA_OP_MIN_RANGE()
149 #define OP1_MAX_RANGE() (_ssa_op1_max_range (op_array, ssa, opline)) in DEFINE_SSA_OP_MIN_RANGE()
150 #define OP1_RANGE_UNDERFLOW() (_ssa_op1_range_underflow (op_array, ssa, opline)) in DEFINE_SSA_OP_MIN_RANGE()
151 #define OP1_RANGE_OVERFLOW() (_ssa_op1_range_overflow (op_array, ssa, opline)) in DEFINE_SSA_OP_MIN_RANGE()
152 #define OP2_HAS_RANGE() (_ssa_op2_has_range (op_array, ssa, opline)) in DEFINE_SSA_OP_MIN_RANGE()
153 #define OP2_MIN_RANGE() (_ssa_op2_min_range (op_array, ssa, opline)) in DEFINE_SSA_OP_MIN_RANGE()
154 #define OP2_MAX_RANGE() (_ssa_op2_max_range (op_array, ssa, opline)) in DEFINE_SSA_OP_MIN_RANGE()
155 #define OP2_RANGE_UNDERFLOW() (_ssa_op2_range_underflow (op_array, ssa, opline)) in DEFINE_SSA_OP_MIN_RANGE()
156 #define OP2_RANGE_OVERFLOW() (_ssa_op2_range_overflow (op_array, ssa, opline)) in DEFINE_SSA_OP_MIN_RANGE()
195 static zend_always_inline uint32_t get_ssa_var_info(const zend_ssa *ssa, int ssa_var_num) in get_ssa_var_info() argument
197 if (ssa->var_info && ssa_var_num >= 0) { in get_ssa_var_info()
198 return ssa->var_info[ssa_var_num].type; in get_ssa_var_info()
205 … uint32_t _ssa_##opN##_info(const zend_op_array *op_array, const zend_ssa *ssa, const zend_op *opl…
208 return _const_op_type(CRT_CONSTANT_EX(op_array, opline->opN, ssa->rt_constants)); \
210 return get_ssa_var_info(ssa, ssa->ops ? ssa->ops[opline - op_array->opcodes].opN##_use : -1); \
215 …t32_t _ssa_##opN##_def_info(const zend_op_array *op_array, const zend_ssa *ssa, const zend_op *opl…
217 return get_ssa_var_info(ssa, ssa->ops ? ssa->ops[opline - op_array->opcodes].opN##_def : -1); \
228 #define OP1_INFO() (_ssa_op1_info(op_array, ssa, opline))
229 #define OP2_INFO() (_ssa_op2_info(op_array, ssa, opline))
230 #define OP1_DATA_INFO() (_ssa_op1_info(op_array, ssa, (opline+1)))
231 #define OP2_DATA_INFO() (_ssa_op2_info(op_array, ssa, (opline+1)))
232 #define RES_USE_INFO() (_ssa_result_info(op_array, ssa, opline))
233 #define OP1_DEF_INFO() (_ssa_op1_def_info(op_array, ssa, opline))
234 #define OP2_DEF_INFO() (_ssa_op2_def_info(op_array, ssa, opline))
235 #define OP1_DATA_DEF_INFO() (_ssa_op1_def_info(op_array, ssa, (opline+1)))
236 #define OP2_DATA_DEF_INFO() (_ssa_op2_def_info(op_array, ssa, (opline+1)))
237 #define RES_INFO() (_ssa_result_def_info(op_array, ssa, opline))
242 int zend_ssa_find_false_dependencies(const zend_op_array *op_array, zend_ssa *ssa);
243 int zend_ssa_find_sccs(const zend_op_array *op_array, zend_ssa *ssa);
244 …rence(zend_arena **raena, const zend_op_array *op_array, const zend_script *script, zend_ssa *ssa);
248 int zend_inference_calc_range(const zend_op_array *op_array, zend_ssa *ssa, int var, int widening,…
249 void zend_inference_init_range(const zend_op_array *op_array, zend_ssa *ssa, int var, zend_bool und…
254 int zend_infer_types_ex(const zend_op_array *op_array, const zend_script *script, zend_ssa *ssa, z…