Hi, this patch simplifies fold_internal_goacc_dim.
Bootstrapped and reg-tested on x86_64. Committed as trivial. Thanks, - Tom
Simplify fold_internal_goacc_dim 2017-12-20 Tom de Vries <t...@codesourcery.com> * gimple-fold.c (fold_internal_goacc_dim): Simplify. --- gcc/gimple-fold.c | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/gcc/gimple-fold.c b/gcc/gimple-fold.c index 87ce3d8..fafd833 100644 --- a/gcc/gimple-fold.c +++ b/gcc/gimple-fold.c @@ -3728,15 +3728,23 @@ fold_internal_goacc_dim (const gimple *call) { int axis = oacc_get_ifn_dim_arg (call); int size = oacc_get_fn_dim_size (current_function_decl, axis); - bool is_pos = gimple_call_internal_fn (call) == IFN_GOACC_DIM_POS; tree result = NULL_TREE; + tree type = TREE_TYPE (gimple_call_lhs (call)); - /* If the size is 1, or we only want the size and it is not dynamic, - we know the answer. */ - if (size == 1 || (!is_pos && size)) + switch (gimple_call_internal_fn (call)) { - tree type = TREE_TYPE (gimple_call_lhs (call)); - result = build_int_cst (type, size - is_pos); + case IFN_GOACC_DIM_POS: + /* If the size is 1, we know the answer. */ + if (size == 1) + result = build_int_cst (type, 0); + break; + case IFN_GOACC_DIM_SIZE: + /* If the size is not dynamic, we know the answer. */ + if (size) + result = build_int_cst (type, size); + break; + default: + break; } return result;