Committed. Thank you for your review, Claudiu ________________________________________ From: Andrew Burgess [andrew.burg...@embecosm.com] Sent: Wednesday, April 18, 2018 7:51 PM To: Claudiu Zissulescu Cc: gcc-patches@gcc.gnu.org; francois.bed...@synopsys.com Subject: Re: [PATCH 1/5] [ARC] Update sleep builtin.
* Claudiu Zissulescu <claudiu.zissule...@synopsys.com> [2018-04-06 11:00:10 +0200]: > From: claziss <claz...@synopsys.com> > > gcc/ > 2017-05-09 Claudiu Zissulescu <claz...@synopsys.com> > > * config/arc/arc-protos.h (check_if_valid_sleep_operand): Remove. > * config/arc/arc.c (arc_expand_builtin): Sleep accepts registers > and short u6 immediate. > (check_if_valid_sleep_operand): Remove. > * config/arc/arc.md (Sleep): Accepts registers and u6 immediates. > --- > gcc/config/arc/arc-protos.h | 1 - > gcc/config/arc/arc.c | 26 -------------------------- > gcc/config/arc/arc.md | 4 ++-- > 3 files changed, 2 insertions(+), 29 deletions(-) Looks good. Thanks, Andrew > > diff --git a/gcc/config/arc/arc-protos.h b/gcc/config/arc/arc-protos.h > index 75cfeda..0ba6871 100644 > --- a/gcc/config/arc/arc-protos.h > +++ b/gcc/config/arc/arc-protos.h > @@ -59,7 +59,6 @@ void arc_asm_output_aligned_decl_local (FILE *, tree, const > char *, > unsigned HOST_WIDE_INT); > extern rtx arc_return_addr_rtx (int , rtx); > extern bool check_if_valid_regno_const (rtx *, int); > -extern bool check_if_valid_sleep_operand (rtx *, int); > extern bool arc_legitimate_constant_p (machine_mode, rtx); > extern bool arc_legitimate_pic_addr_p (rtx); > extern bool arc_raw_symbolic_reference_mentioned_p (rtx, bool); > diff --git a/gcc/config/arc/arc.c b/gcc/config/arc/arc.c > index 3564696..47d3ba4 100644 > --- a/gcc/config/arc/arc.c > +++ b/gcc/config/arc/arc.c > @@ -6573,11 +6573,6 @@ arc_expand_builtin (tree exp, > fold (arg0); > op0 = expand_expr (arg0, NULL_RTX, VOIDmode, EXPAND_NORMAL); > > - if (!CONST_INT_P (op0) || !satisfies_constraint_L (op0)) > - { > - error ("builtin operand should be an unsigned 6-bit value"); > - return NULL_RTX; > - } > gcc_assert (icode != 0); > emit_insn (GEN_FCN (icode) (op0)); > return NULL_RTX; > @@ -6925,27 +6920,6 @@ check_if_valid_regno_const (rtx *operands, int opno) > return false; > } > > -/* Check that after all the constant folding, whether the operand to > - __builtin_arc_sleep is an unsigned int of 6 bits. If not, flag an error. > */ > - > -bool > -check_if_valid_sleep_operand (rtx *operands, int opno) > -{ > - switch (GET_CODE (operands[opno])) > - { > - case CONST : > - case CONST_INT : > - if( UNSIGNED_INT6 (INTVAL (operands[opno]))) > - return true; > - /* FALLTHRU */ > - default: > - fatal_error (input_location, > - "operand for sleep instruction must be an unsigned 6 bit > compile-time constant"); > - break; > - } > - return false; > -} > - > /* Return true if it is ok to make a tail-call to DECL. */ > > static bool > diff --git a/gcc/config/arc/arc.md b/gcc/config/arc/arc.md > index fb34329..2ec2b48 100644 > --- a/gcc/config/arc/arc.md > +++ b/gcc/config/arc/arc.md > @@ -4794,9 +4794,9 @@ archs4x, archs4xd, archs4xd_slow" > > > (define_insn "sleep" > - [(unspec_volatile [(match_operand:SI 0 "immediate_operand" "L")] > + [(unspec_volatile [(match_operand:SI 0 "nonmemory_operand" "Lr")] > VUNSPEC_ARC_SLEEP)] > - "check_if_valid_sleep_operand(operands,0)" > + "" > "sleep %0" > [(set_attr "length" "4") > (set_attr "type" "misc")]) > -- > 1.9.1 >