{"id":2219409,"url":"http://patchwork.ozlabs.org/api/patches/2219409/?format=json","web_url":"http://patchwork.ozlabs.org/project/gcc/patch/319b912c-6229-4155-a306-97f5cd1d4feb@yahoo.co.jp/","project":{"id":17,"url":"http://patchwork.ozlabs.org/api/projects/17/?format=json","name":"GNU Compiler Collection","link_name":"gcc","list_id":"gcc-patches.gcc.gnu.org","list_email":"gcc-patches@gcc.gnu.org","web_url":null,"scm_url":null,"webscm_url":null,"list_archive_url":"","list_archive_url_format":"","commit_url_format":""},"msgid":"<319b912c-6229-4155-a306-97f5cd1d4feb@yahoo.co.jp>","list_archive_url":null,"date":"2026-04-02T23:08:52","name":"[v2,1/2] xtensa: Avoid redundant MEM_P() checks in memory constraint definitions","commit_ref":null,"pull_url":null,"state":"new","archived":false,"hash":"6a33e85fcc64d6f8b5134aa060fd264acbd5cf23","submitter":{"id":83997,"url":"http://patchwork.ozlabs.org/api/people/83997/?format=json","name":"Takayuki 'January June' Suwa","email":"jjsuwa_sys3175@yahoo.co.jp"},"delegate":null,"mbox":"http://patchwork.ozlabs.org/project/gcc/patch/319b912c-6229-4155-a306-97f5cd1d4feb@yahoo.co.jp/mbox/","series":[{"id":498563,"url":"http://patchwork.ozlabs.org/api/series/498563/?format=json","web_url":"http://patchwork.ozlabs.org/project/gcc/list/?series=498563","date":"2026-04-02T23:08:52","name":"[v2,1/2] xtensa: Avoid redundant MEM_P() checks in memory constraint definitions","version":2,"mbox":"http://patchwork.ozlabs.org/series/498563/mbox/"}],"comments":"http://patchwork.ozlabs.org/api/patches/2219409/comments/","check":"pending","checks":"http://patchwork.ozlabs.org/api/patches/2219409/checks/","tags":{},"related":[],"headers":{"Return-Path":"<gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org>","X-Original-To":["incoming@patchwork.ozlabs.org","gcc-patches@gcc.gnu.org"],"Delivered-To":["patchwork-incoming@legolas.ozlabs.org","gcc-patches@gcc.gnu.org"],"Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=yahoo.co.jp header.i=@yahoo.co.jp header.a=rsa-sha256\n header.s=yahoocojp-202506 header.b=OxUR6BLN;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org\n (client-ip=38.145.34.32; helo=vm01.sourceware.org;\n envelope-from=gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org;\n receiver=patchwork.ozlabs.org)","sourceware.org;\n\tdkim=pass (2048-bit key,\n unprotected) header.d=yahoo.co.jp header.i=@yahoo.co.jp header.a=rsa-sha256\n header.s=yahoocojp-202506 header.b=OxUR6BLN","sourceware.org; dmarc=pass (p=quarantine dis=none)\n header.from=yahoo.co.jp","sourceware.org; spf=pass smtp.mailfrom=yahoo.co.jp","server2.sourceware.org;\n arc=none smtp.remote-ip=124.83.188.23"],"Received":["from vm01.sourceware.org (vm01.sourceware.org [38.145.34.32])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fmyH13KtRz1yD3\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 03 Apr 2026 10:09:33 +1100 (AEDT)","from vm01.sourceware.org (localhost [127.0.0.1])\n\tby sourceware.org (Postfix) with ESMTP id 5F90E4BA23CA\n\tfor <incoming@patchwork.ozlabs.org>; Thu,  2 Apr 2026 23:09:31 +0000 (GMT)","from omggw2001.mail.snz.yahoo.co.jp (omggw2001.mail.snz.yahoo.co.jp\n [124.83.188.23])\n by sourceware.org (Postfix) with ESMTPS id 9A8884BA2E2B\n for <gcc-patches@gcc.gnu.org>; Thu,  2 Apr 2026 23:09:01 +0000 (GMT)","from sonicgw.mail.gze.yahoo.co.jp by\n sonicconh5102.mail.kks.ynwp.yahoo.co.jp with HTTP;\n Thu, 2 Apr 2026 23:08:58 +0000","by smtphe5111.mail.kks.ynwp.yahoo.co.jp (YJ Hermes SMTP Server) with\n ESMTPA ID d313c7bf245ee22f75d94fc34299428b;\n Fri, 03 Apr 2026 08:08:53 +0900 (JST)"],"DKIM-Filter":["OpenDKIM Filter v2.11.0 sourceware.org 5F90E4BA23CA","OpenDKIM Filter v2.11.0 sourceware.org 9A8884BA2E2B"],"DMARC-Filter":"OpenDMARC Filter v1.4.2 sourceware.org 9A8884BA2E2B","ARC-Filter":"OpenARC Filter v1.0.0 sourceware.org 9A8884BA2E2B","ARC-Seal":"i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1775171342; cv=none;\n b=xzo3S4a4bSqCl88Kz8ZScznSyKfMxZ46p0Vy7iQeCuYKDj7cTVnsIBWFTk7PnVFERO8sgGk4KuMt2UuN811GpxJGU/zg7XSJ4Mp567+KcM2hiad/Z+hXUbrPocbqRaat2ADm+pdN2bslElbzv17oljF5h7g1hcI9QBFH25sfhZM=","ARC-Message-Signature":"i=1; a=rsa-sha256; d=sourceware.org; s=key;\n t=1775171342; c=relaxed/simple;\n bh=z7V1/48z6kL/4W1a3EOYVg7bHZ/FhQzD8sP0UCjouU8=;\n h=DKIM-Signature:Message-ID:Date:MIME-Version:Subject:To:From;\n b=I+snPPZ7YtB9WOWq7/VX7ORobGz9NTF1i3vtzWagS10LMnmKQjwg7kFlBCyha6tHv3S8jBEAyfka9R2PCi0FUsoZgDeBN/iSVMQTbsSbMYWXka/4gua/s+f9v2ZFs8FRYi8HiBt6tcIsNkqpyjkOwMDoF8CLXraJyfro+pOs/7Y=","ARC-Authentication-Results":"i=1; server2.sourceware.org","X-YMail-OSG":"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","X-Sonic-MF":"jjsuwa_sys3175@yahoo.co.jp","DKIM-Signature":"v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1775171332;\n s=yahoocojp-202506; d=yahoo.co.jp;\n h=Content-Transfer-Encoding:Content-Type:In-Reply-To:From:Cc:References:To:Subject:MIME-Version:Date:Message-ID;\n bh=Oea/jdOIL5R0gLZuKA8KdybJrEDQmIq1krGSp69tMLo=;\n b=OxUR6BLNS339+CL+7eHQEZWdbPiEnLEDxe6VIhRagI5+9IzE+xN1OPKrIU+Vy6cU\n OAqah3Hjw1C2W9HulcBcaJw0v3+9Ti3+QFwD++cDXwlHkl2av4olbLBhEUg9HDUamNh\n FYOrbSBo04zbYMK1WLgR4ON9LAzehzrYdkUnM+/0ICZlTT1zKzBWMIUZfzyN1loMd9K\n FaZsc81D7o97CCYspyiBH1o7CWojKbV2+H4sPKOhVc0nic5luBPFTrSG7YAErG07HSQ\n K6LhYGV/LyglBs5g9RvdCm72JKWRQVRcf5xrvcRV4lqd7nTUFPk5D8t4Ry6+NvBItIe\n JtyNK9f1oA==","Message-ID":"<319b912c-6229-4155-a306-97f5cd1d4feb@yahoo.co.jp>","Date":"Fri, 3 Apr 2026 08:08:52 +0900","MIME-Version":"1.0","User-Agent":"Mozilla Thunderbird","Subject":"[PATCH v2 1/2] xtensa: Avoid redundant MEM_P() checks in memory\n constraint definitions","To":"Max Filippov <jcmvbkbc@gmail.com>","References":"<b4e34940-a2bd-42d1-abee-e52fb225bd67.ref@yahoo.co.jp>\n <b4e34940-a2bd-42d1-abee-e52fb225bd67@yahoo.co.jp>\n <CAMo8BfJanH79BHQBseshFb7Ym8XfgwW+f6eufT8ubP0GSAnNgQ@mail.gmail.com>","Content-Language":"en-US","Cc":"gcc-patches@gcc.gnu.org","From":"Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>","In-Reply-To":"\n <CAMo8BfJanH79BHQBseshFb7Ym8XfgwW+f6eufT8ubP0GSAnNgQ@mail.gmail.com>","Content-Type":"text/plain; charset=UTF-8; format=flowed","Content-Transfer-Encoding":"7bit","X-BeenThere":"gcc-patches@gcc.gnu.org","X-Mailman-Version":"2.1.30","Precedence":"list","List-Id":"Gcc-patches mailing list <gcc-patches.gcc.gnu.org>","List-Unsubscribe":"<https://gcc.gnu.org/mailman/options/gcc-patches>,\n <mailto:gcc-patches-request@gcc.gnu.org?subject=unsubscribe>","List-Archive":"<https://gcc.gnu.org/pipermail/gcc-patches/>","List-Post":"<mailto:gcc-patches@gcc.gnu.org>","List-Help":"<mailto:gcc-patches-request@gcc.gnu.org?subject=help>","List-Subscribe":"<https://gcc.gnu.org/mailman/listinfo/gcc-patches>,\n <mailto:gcc-patches-request@gcc.gnu.org?subject=subscribe>","Errors-To":"gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org"},"content":"If the memory constraint definition includes (match_code \"MEM\"), then\nthe subsequent 'op' is undoubtedly MEM rtx, and all that remains is to\ndetermine if 'XEXP (op, 0)' is the address corresponding to that\ndefinition using (match_test \"...\").\n\nThis patch eliminates the need to call MEM_P() again in the predicate\nfunction called from (match_test \"...\") in the memory constraint\ndefinitions.\n\ngcc/ChangeLog:\n\n\t* config/xtensa/xtensa.cc (smalloffset_mem_p):\n\tRename it to smalloffset_address_p and remove the result check\n\tof MEM_P().\n\t(constantpool_address_p): Change from static scope to global.\n\t* config/xtensa/xtensa-protos.h (smalloffset_mem_p):\n\tRename it to smalloffset_address_p.\n\t(constantpool_address_p): New function prototype.\n\t* config/xtensa/constraints.md (R):\n\tChange the call in (match_test \"...\") from smalloffset_mem_p()\n\tto smalloffset_address_p().\n\t(T, U): Change the call in (match_test \"...\") from\n\tconstantpool_mem_p() to constantpool_address_p().\n---\n  gcc/config/xtensa/constraints.md  |  6 ++---\n  gcc/config/xtensa/xtensa-protos.h |  3 ++-\n  gcc/config/xtensa/xtensa.cc       | 40 +++++++++++++++----------------\n  3 files changed, 24 insertions(+), 25 deletions(-)","diff":"diff --git a/gcc/config/xtensa/constraints.md b/gcc/config/xtensa/constraints.md\nindex 5cf2f198c5f..81305074b64 100644\n--- a/gcc/config/xtensa/constraints.md\n+++ b/gcc/config/xtensa/constraints.md\n@@ -129,14 +129,14 @@\n  (define_special_memory_constraint \"R\"\n   \"Memory that can be accessed with a 4-bit unsigned offset from a register.\"\n   (and (match_code \"mem\")\n-      (match_test \"smalloffset_mem_p (op)\")))\n+      (match_test \"smalloffset_address_p (XEXP (op, 0))\")))\n  \n  (define_special_memory_constraint \"T\"\n   \"Memory in a literal pool (addressable with an L32R instruction).\"\n   (and (match_code \"mem\")\n-      (match_test \"!TARGET_CONST16 && constantpool_mem_p (op)\")))\n+      (match_test \"!TARGET_CONST16 && constantpool_address_p (XEXP (op, 0))\")))\n  \n  (define_special_memory_constraint \"U\"\n   \"Memory that is not in a literal pool.\"\n   (and (match_code \"mem\")\n-      (match_test \"! constantpool_mem_p (op)\")))\n+      (match_test \"! constantpool_address_p (XEXP (op, 0))\")))\ndiff --git a/gcc/config/xtensa/xtensa-protos.h b/gcc/config/xtensa/xtensa-protos.h\nindex f41f32f18ac..034549b61e0 100644\n--- a/gcc/config/xtensa/xtensa-protos.h\n+++ b/gcc/config/xtensa/xtensa-protos.h\n@@ -35,7 +35,8 @@ extern bool xtensa_mem_offset (unsigned, machine_mode);\n  #ifdef RTX_CODE\n  extern int xt_true_regnum (rtx);\n  extern int xtensa_valid_move (machine_mode, rtx *);\n-extern int smalloffset_mem_p (rtx);\n+extern bool smalloffset_address_p (const_rtx);\n+extern bool constantpool_address_p (const_rtx);\n  extern int constantpool_mem_p (rtx);\n  extern void xtensa_extend_reg (rtx, rtx);\n  extern void xtensa_expand_conditional_branch (rtx *, machine_mode);\ndiff --git a/gcc/config/xtensa/xtensa.cc b/gcc/config/xtensa/xtensa.cc\nindex 235b4e0446d..dbbea0799da 100644\n--- a/gcc/config/xtensa/xtensa.cc\n+++ b/gcc/config/xtensa/xtensa.cc\n@@ -165,7 +165,6 @@ static reg_class_t xtensa_secondary_reload (bool, rtx, reg_class_t,\n  \t\t\t\t\t    machine_mode,\n  \t\t\t\t\t    struct secondary_reload_info *);\n  \n-static bool constantpool_address_p (const_rtx addr);\n  static bool xtensa_legitimate_constant_p (machine_mode, rtx);\n  static void xtensa_reorg (void);\n  static bool xtensa_can_use_doloop_p (const widest_int &, const widest_int &,\n@@ -563,32 +562,31 @@ xtensa_valid_move (machine_mode mode, rtx *operands)\n  }\n  \n  \n-int\n-smalloffset_mem_p (rtx op)\n+bool\n+smalloffset_address_p (const_rtx addr)\n  {\n-  if (MEM_P (op))\n+  if (REG_P (addr))\n+    return BASE_REG_P (addr, 0);\n+\n+  if (GET_CODE (addr) == PLUS)\n      {\n-      rtx addr = XEXP (op, 0);\n-      if (REG_P (addr))\n-\treturn BASE_REG_P (addr, 0);\n-      if (GET_CODE (addr) == PLUS)\n-\t{\n-\t  rtx offset = XEXP (addr, 0);\n-\t  HOST_WIDE_INT val;\n-\t  if (! CONST_INT_P (offset))\n-\t    offset = XEXP (addr, 1);\n-\t  if (! CONST_INT_P (offset))\n-\t    return FALSE;\n-\n-\t  val = INTVAL (offset);\n-\t  return (val & 3) == 0 && IN_RANGE (val, 0, 60);\n-\t}\n+      rtx offset = XEXP (addr, 0);\n+      HOST_WIDE_INT val;\n+\n+      if (! CONST_INT_P (offset))\n+\toffset = XEXP (addr, 1);\n+      if (! CONST_INT_P (offset))\n+\treturn false;\n+\n+      val = INTVAL (offset);\n+      return (val & 3) == 0 && IN_RANGE (val, 0, 60);\n      }\n-  return FALSE;\n+\n+  return false;\n  }\n  \n  \n-static bool\n+bool\n  constantpool_address_p (const_rtx addr)\n  {\n    const_rtx sym = addr;\n","prefixes":["v2","1/2"]}