From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-lf1-x136.google.com (mail-lf1-x136.google.com [IPv6:2a00:1450:4864:20::136]) by sourceware.org (Postfix) with ESMTPS id 99B8D386C5B1 for ; Tue, 5 Dec 2023 14:57:42 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 99B8D386C5B1 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 99B8D386C5B1 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2a00:1450:4864:20::136 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1701788264; cv=none; b=GEcFB84MV0rSGc1TwSuIF/PKRc7mT7atM1ydZpLlOoESZMFGORotE+7Mh3GOIRhrZ+rEE3hzj4GkMxbEE1X0MgJ+zdT7i6WchGILPJn6qtk48YtaM7pR/Oo/ChJKnruTMk1v3zpYbxdZ4lHjU/axKQNFz69vtJ+vJrK3HaI0uBY= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1701788264; c=relaxed/simple; bh=L9joWLsiD8irYjdIeSnC+D3hjQsnANwiyV58D0Tzads=; h=DKIM-Signature:MIME-Version:From:Date:Message-ID:Subject:To; b=foFVv6H0x5g+x03U3+nhXEBIn3vGwhXuWhj+NcyiuSmeto+XB9i0HGNeYxPs+Gzo6RM2ssQ991HpXC1Tp2WNYDmOBSFaixMQ+S1lMav/y4chu5LIxU0ZkN2HwqwhNeRRIyvDVD4FwC3ZF4LI+mgJ1cQwfzS53yCIHcwxrkr0h3A= ARC-Authentication-Results: i=1; server2.sourceware.org Received: by mail-lf1-x136.google.com with SMTP id 2adb3069b0e04-50be3611794so4359659e87.0 for ; Tue, 05 Dec 2023 06:57:42 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1701788261; x=1702393061; darn=gcc.gnu.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=tU6f/r71udkhNQYrWW7Zli9pHNQAQ1hxzkb6796Ji78=; b=fLDN9zmuyS1ZD5Ar68My0FyrIhVYq0edlaswz4pxyLQt0B6b7bxJIEiLsKzgG0BZE7 4ezMyYgRSONxAKQ4s5H4CWmed2LK41aEditO68l1sdH871m0Oau/BvpMIRNTYjjUFURg C3wLOlFQbKI9NaAKESahAQ4Pf/DiEIj8zbjVNowdEwDRNzhFwX349IIEuB1GO1no7gJ6 TxZ6Cs0LYvslrihLtWU4SsO7XsihH0eh9CRLgXs0+986y+tSebBYdWJYjvAlgHCmLNMC rgoJdRQ0Xl3d6/JGADMVO3kqfTMqS6kb8z1J6oe22lSPoqUgXX6Fl9+jtAMY8kTroJXS gQGw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1701788261; x=1702393061; h=content-transfer-encoding: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=tU6f/r71udkhNQYrWW7Zli9pHNQAQ1hxzkb6796Ji78=; b=CbC+wJZT2faosV8mpaf6jfDudyP+Qmt0vCq5KmkIALrYDi5EFHiXFgizkrXhbZ0Xb1 spFYFURxojaL/uvOGZGA3PyfjD8bzn8jApL0GkUKmWzB8x+4AFvWRcFKSbFMxtJ2YI+g xXb6QUF/iW85fqBlDvyMvQglsmGbbL5tvcddH7g4PlJg5qxFiCOdgmrXj5blWNvgwxUz 35GEyWBZ5UD6LrIRRGkyMmf1Ag3gAg78UFlkqk5v3U5ZD1pKwBlMejO3ZIcFesWVkZgr i0iFQmR5DTACLsVJpUHmXCpfce3hNKAEYXfjCVPebjOefQmsn95l+W6iEX97kr03jvnP YZ9A== X-Gm-Message-State: AOJu0Yw2B9Jn37/UAU1BcI7ENQq4AMLDOBavjlQl99onzjNKweTnfd34 Rp5+gJaDKaTjyPvmnfyqVavdU//tpXBulVvq0t4= X-Google-Smtp-Source: AGHT+IFWh7a+c2Jh0GcuNtg674Lu7TTqABvKiyJ/XZTzt8hXVVC9JuWup6OL1t04Vgpmfvc+oXglT9P2lFw9cKSH66U= X-Received: by 2002:ac2:596b:0:b0:50b:df27:345 with SMTP id h11-20020ac2596b000000b0050bdf270345mr2965714lfp.38.1701788260718; Tue, 05 Dec 2023 06:57:40 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Richard Biener Date: Tue, 5 Dec 2023 15:53:44 +0100 Message-ID: Subject: Re: NOP_EXPR vs. CONVERT_EXPR To: Alexander Monakov Cc: gcc@gcc.gnu.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Spam-Status: No, score=-1.5 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE 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 Tue, Dec 5, 2023 at 3:54=E2=80=AFPM Alexander Monakov via Gcc wrote: > > Greetings, > > the definitions for NOP_EXPR and CONVERT_EXPR in tree.def, having survive= d > all the way from 1992, currently say: > > /* Represents a conversion of type of a value. > All conversions, including implicit ones, must be > represented by CONVERT_EXPR or NOP_EXPR nodes. */ > DEFTREECODE (CONVERT_EXPR, "convert_expr", tcc_unary, 1) > > /* Represents a conversion expected to require no code to be generate= d. */ > DEFTREECODE (NOP_EXPR, "nop_expr", tcc_unary, 1) > > Unfortunately, they are confusing, as in > > float f(double d) > { > return d; > } > > the narrowing conversion is represented with NOP_EXPR, and it is definite= ly > not a no-op. > > Does some clear distinction remain, and is it possible to clarify the > definitions? {NOP,CONVERT}_EXPR are interchangeable in the middle-end but frontends (IIRC the C++ FE mainly) distinguishes them. So a uniform documentation might be difficult - in the end we could eventually drop NOP_EXPR from the middle-end (during gimplification?) and only use CONVERT_EXPR. All uses should use CASE_CONVERT or CONVERT_EXPR_CODE_P which globs both. Richard. > > Thanks. > Alexander