diff options
Diffstat (limited to 'gcc/config/sh/sh.c')
-rw-r--r-- | gcc/config/sh/sh.c | 6 |
1 files changed, 2 insertions, 4 deletions
diff --git a/gcc/config/sh/sh.c b/gcc/config/sh/sh.c index 3e71e115108..96a00f6cc6b 100644 --- a/gcc/config/sh/sh.c +++ b/gcc/config/sh/sh.c @@ -9904,8 +9904,7 @@ static rtx sh_expand_builtin (tree exp, rtx target, rtx subtarget ATTRIBUTE_UNUSED, enum machine_mode mode ATTRIBUTE_UNUSED, int ignore) { - tree fndecl = TREE_OPERAND (TREE_OPERAND (exp, 0), 0); - tree arglist = TREE_OPERAND (exp, 1); + tree fndecl = TREE_OPERAND (CALL_EXPR_FN (exp), 0); unsigned int fcode = DECL_FUNCTION_CODE (fndecl); const struct builtin_description *d = &bdesc[fcode]; enum insn_code icode = d->icode; @@ -9938,10 +9937,9 @@ sh_expand_builtin (tree exp, rtx target, rtx subtarget ATTRIBUTE_UNUSED, if (! signature_args[signature][i]) break; - arg = TREE_VALUE (arglist); + arg = CALL_EXPR_ARG (exp, i - 1); if (arg == error_mark_node) return const0_rtx; - arglist = TREE_CHAIN (arglist); if (signature_args[signature][i] & 8) { opmode = ptr_mode; |