From 67d2229e8acc9cbf7279fe90c295cc47a60733dd Mon Sep 17 00:00:00 2001 From: Tom de Vries Date: Wed, 20 Dec 2017 22:47:33 +0000 Subject: [PATCH] Simplify fold_internal_goacc_dim 2017-12-20 Tom de Vries * gimple-fold.c (fold_internal_goacc_dim): Simplify. From-SVN: r255905 --- gcc/ChangeLog | 4 ++++ gcc/gimple-fold.c | 20 ++++++++++++++------ 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 43c062e1edd..10451676684 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,7 @@ +2017-12-20 Tom de Vries + + * gimple-fold.c (fold_internal_goacc_dim): Simplify. + 2017-12-20 Jakub Jelinek PR ipa/83506 diff --git a/gcc/gimple-fold.c b/gcc/gimple-fold.c index 7b3c6db919f..33eae3e1ed1 100644 --- a/gcc/gimple-fold.c +++ b/gcc/gimple-fold.c @@ -3721,15 +3721,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; -- 2.30.2