Hi! On Mon, 3 Aug 2015 16:43:04 -0400, Nathan Sidwell wrote: > I've committed this to gomp4 branch. It replaces the regular builtins > __builtin_GOACC_nid/__builtin_GOACC_id with internal functions IFN_OACC_DIM_SIZE > and IFN_OACC_DIM_POS -- moving further away from the PTX-specific naming of id & > nid. Thanks! > --- gcc/internal-fn.c (revision 226515) > +++ gcc/internal-fn.c (working copy) > +static void > +expand_GOACC_DIM_SIZE (gcall *stmt) > +{ > + tree lhs = gimple_call_lhs (stmt); > + > + if (!lhs) > + return; > + > + rtx target = expand_expr (lhs, NULL_RTX, VOIDmode, EXPAND_WRITE); > + rtx val = expand_expr (gimple_call_arg (stmt, 0), NULL_RTX, > + VOIDmode, EXPAND_NORMAL); > +#ifdef HAVE_oacc_dim_size > + emit_insn (gen_oacc_dim_size (target, val)); > +#else > + emit_move_insn (target, const1_rtx); > +#endif > +} > + > +static void > +expand_GOACC_DIM_POS (gcall *stmt) > +{ > + tree lhs = gimple_call_lhs (stmt); > + > + if (!lhs) > + return; > + > + rtx target = expand_expr (lhs, NULL_RTX, VOIDmode, EXPAND_WRITE); > + rtx val = expand_expr (gimple_call_arg (stmt, 0), NULL_RTX, > + VOIDmode, EXPAND_NORMAL); > +#ifdef HAVE_oacc_dim_pos > + emit_insn (gen_oacc_dim_pos (target, val)); > +#else > + emit_move_insn (target, const0_rtx); > +#endif > +} Bootstrap failure: [...]/source-gcc/gcc/internal-fn.c: In function 'void expand_GOACC_DIM_SIZE(gcall*)': [...]/source-gcc/gcc/internal-fn.c:1996:7: error: unused variable 'val' [-Werror=unused-variable] rtx val = expand_expr (gimple_call_arg (stmt, 0), NULL_RTX, ^ [...]/source-gcc/gcc/internal-fn.c: In function 'void expand_GOACC_DIM_POS(gcall*)': [...]/source-gcc/gcc/internal-fn.c:2014:7: error: unused variable 'val' [-Werror=unused-variable] rtx val = expand_expr (gimple_call_arg (stmt, 0), NULL_RTX, ^ I'm assuming it is permissible to not expand_expr the call argument (for side effects) in these two cases (please shout if that's wrong); committed to gomp-4_0-branch in r226767: commit f3907d648a9c9420deb4fb9f295b6e192a209f8d Author: tschwinge Date: Mon Aug 10 19:37:49 2015 +0000 Address -Werror=unused-variable diagnostic Fixup for r226531. gcc/ * internal-fn.c (expand_GOACC_DIM_SIZE) [!HAVE_oacc_dim_size]: Don't define and set variable val. (expand_GOACC_DIM_POS) [!HAVE_oacc_dim_pos]: Likewise. * internal-fn.c (expand_GOACC_DIM_SIZE, expand_GOACC_DIM_POS) [!HAVE_oacc_dim_size]: Don't define and set variable val. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gomp-4_0-branch@226767 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog.gomp | 6 ++++++ gcc/internal-fn.c | 8 ++++---- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git gcc/ChangeLog.gomp gcc/ChangeLog.gomp index 62f5e59..542b1af 100644 --- gcc/ChangeLog.gomp +++ gcc/ChangeLog.gomp @@ -1,3 +1,9 @@ +2015-08-10 Thomas Schwinge + + * internal-fn.c (expand_GOACC_DIM_SIZE) [!HAVE_oacc_dim_size]: + Don't define and set variable val. + (expand_GOACC_DIM_POS) [!HAVE_oacc_dim_pos]: Likewise. + 2015-08-06 Cesar Philippidis * config/nvptx/nvptx.c (nvptx_expand_lock_unlock): Pass an diff --git gcc/internal-fn.c gcc/internal-fn.c index 72bb0bd..05321e1 100644 --- gcc/internal-fn.c +++ gcc/internal-fn.c @@ -1993,9 +1993,9 @@ expand_GOACC_DIM_SIZE (gcall *stmt) return; rtx target = expand_expr (lhs, NULL_RTX, VOIDmode, EXPAND_WRITE); - rtx val = expand_expr (gimple_call_arg (stmt, 0), NULL_RTX, - VOIDmode, EXPAND_NORMAL); #ifdef HAVE_oacc_dim_size + rtx val = expand_expr (gimple_call_arg (stmt, 0), NULL_RTX, + VOIDmode, EXPAND_NORMAL); emit_insn (gen_oacc_dim_size (target, val)); #else emit_move_insn (target, const1_rtx); @@ -2011,9 +2011,9 @@ expand_GOACC_DIM_POS (gcall *stmt) return; rtx target = expand_expr (lhs, NULL_RTX, VOIDmode, EXPAND_WRITE); - rtx val = expand_expr (gimple_call_arg (stmt, 0), NULL_RTX, - VOIDmode, EXPAND_NORMAL); #ifdef HAVE_oacc_dim_pos + rtx val = expand_expr (gimple_call_arg (stmt, 0), NULL_RTX, + VOIDmode, EXPAND_NORMAL); emit_insn (gen_oacc_dim_pos (target, val)); #else emit_move_insn (target, const0_rtx); Grüße, Thomas