From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-yb1-xb36.google.com (mail-yb1-xb36.google.com [IPv6:2607:f8b0:4864:20::b36]) by sourceware.org (Postfix) with ESMTPS id 649B63858D28 for ; Thu, 19 Jan 2023 03:43:56 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 649B63858D28 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com Received: by mail-yb1-xb36.google.com with SMTP id e202so961083ybh.11 for ; Wed, 18 Jan 2023 19:43:56 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=VBN9klZry0Ph52hhhsPECH2JG/wusTq7CnN1VgaPIdQ=; b=SCgZ8SjJhiZ6xZ1Z6TRlRbWEWLoj8KN22TQQrc8EVE3P+ezSI++6yxkgVuiaL60j8d caUaZSQZAXhLfdSuqAFjC9A1yggkl3n3pVog3IuLFcVQu7Ph7v7jEIlnJ8LnnWyUmoJi aiKzleMB+pKhMXOitAY2y7LvwJHPKHP+Sj+Db1A5q/kWiOFC/12FRJXmgRCcZDQWgsI5 jn1NRfmUkjxJOmDXl3LIIKb9hDdBInNrCEZks51g9cW7N0OP0OqYWtetPpABRX5HkMuY 29dFNgV2CVMXqlezXeXqTo63/K/RVHX4tV1FPEv6i+X3FO6e/nHMcn+bql+dOSnSnuPp syvg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=VBN9klZry0Ph52hhhsPECH2JG/wusTq7CnN1VgaPIdQ=; b=R22eyCVB5V6exdfNlaBu39CNt7Vd5uBqJEaWOrX1kWRSUW8A568VX20MJH+t/Nmgl3 axMCZ6bGKCq7YcfFpsClHMcjUC00sR0ByNfVmx0C7RnoLKEfoXUc7LY6NKQDl1HhxgVy iAGnbVEfCaPGOP72kGtuqHDChSVe/CHK3C8LiYUPe9V/zTh7mY8ko7fYi6fxzKT7bsjF gAFB263JssxURz7H1mgABSlfS0RBMKaE0P4XWk0yhllerK7U0t1xnvaIlwxG/3JJb6kA jG95loPGwBGtLkZG0UjVNDqrUHxUzd5UDKt7mH0DROZxiopm2ZyShpTgxvGelAvferMy FcmA== X-Gm-Message-State: AFqh2krRwmVcDKqDuzuP5Xp7lEsnWgaM4kqIhnDcQk2OjH5TtMG4a6rU DKrb4tUQYBaCEdLyJHMFDvr//fTAhChWIcdbgSc= X-Google-Smtp-Source: AMrXdXuczNH8vS49RHQ/PQF+k6ENAbWSB/1lpjgWMKF82AZmeXX6ggtTnW7SxYjj4e6+LehkM44mOTyI+JDlHCEXa0M= X-Received: by 2002:a5b:d0c:0:b0:70a:3c8:53f8 with SMTP id y12-20020a5b0d0c000000b0070a03c853f8mr1274848ybp.611.1674099835617; Wed, 18 Jan 2023 19:43:55 -0800 (PST) MIME-Version: 1.0 References: <20230118191231.29839-1-hjl.tools@gmail.com> In-Reply-To: <20230118191231.29839-1-hjl.tools@gmail.com> From: Hongtao Liu Date: Thu, 19 Jan 2023 11:43:44 +0800 Message-ID: Subject: Re: [PATCH] x86: Check invalid third argument to __builtin_ia32_prefetch To: "H.J. Lu" Cc: gcc-patches@gcc.gnu.org Content-Type: text/plain; charset="UTF-8" X-Spam-Status: No, score=-7.5 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,GIT_PATCH_0,KAM_SHORT,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: On Thu, Jan 19, 2023 at 3:12 AM H.J. Lu via Gcc-patches wrote: > > Check invalid third argument to __builtin_ia32_prefetch when expaning > __builtin_ia32_prefetch to avoid ICE later. Ok, thanks. > > gcc/ > > PR target/108436 > * config/i386/i386-expand.cc (ix86_expand_builtin): Check > invalid third argument to __builtin_ia32_prefetch. > > gcc/testsuite/ > > * gcc.target/i386/pr108436.c: New test. > --- > gcc/config/i386/i386-expand.cc | 12 ++++++++++++ > gcc/testsuite/gcc.target/i386/pr108436.c | 15 +++++++++++++++ > 2 files changed, 27 insertions(+) > create mode 100644 gcc/testsuite/gcc.target/i386/pr108436.c > > diff --git a/gcc/config/i386/i386-expand.cc b/gcc/config/i386/i386-expand.cc > index 54f700cd09d..e2e2d28bb47 100644 > --- a/gcc/config/i386/i386-expand.cc > +++ b/gcc/config/i386/i386-expand.cc > @@ -13175,6 +13175,12 @@ ix86_expand_builtin (tree exp, rtx target, rtx subtarget, > > if (INTVAL (op3) == 1) > { > + if (INTVAL (op2) < 2 || INTVAL (op2) > 3) > + { > + error ("invalid third argument"); > + return const0_rtx; > + } > + > if (TARGET_64BIT && TARGET_PREFETCHI > && local_func_symbolic_operand (op0, GET_MODE (op0))) > emit_insn (gen_prefetchi (op0, op2)); > @@ -13195,6 +13201,12 @@ ix86_expand_builtin (tree exp, rtx target, rtx subtarget, > op0 = copy_addr_to_reg (op0); > } > > + if (INTVAL (op2) < 0 || INTVAL (op2) > 3) > + { > + warning (0, "invalid third argument to %<__builtin_ia32_prefetch%>; using zero"); > + op2 = const0_rtx; > + } > + > if (TARGET_3DNOW || TARGET_PREFETCH_SSE > || TARGET_PRFCHW || TARGET_PREFETCHWT1) > emit_insn (gen_prefetch (op0, op1, op2)); > diff --git a/gcc/testsuite/gcc.target/i386/pr108436.c b/gcc/testsuite/gcc.target/i386/pr108436.c > new file mode 100644 > index 00000000000..d51f25863a5 > --- /dev/null > +++ b/gcc/testsuite/gcc.target/i386/pr108436.c > @@ -0,0 +1,15 @@ > +/* { dg-do compile } */ > +/* { dg-options "-mprefetchi" } */ > + > +int > +foo (int a) > +{ > + return a + 1; > +} > + > +void > +bad (int *p) > +{ > + __builtin_ia32_prefetch (p, 0, 4, 0); /* { dg-warning "invalid third argument to '__builtin_ia32_prefetch'; using zero" } */ > + __builtin_ia32_prefetch (foo, 0, 4, 1); /* { dg-error "invalid third argument" } */ > +} > -- > 2.39.0 > -- BR, Hongtao