From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 121889 invoked by alias); 16 Mar 2016 12:38:44 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 121879 invoked by uid 89); 16 Mar 2016 12:38:44 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.4 required=5.0 tests=AWL,BAYES_00,FREEMAIL_FROM,RCVD_IN_DNSWL_LOW,SPF_PASS autolearn=ham version=3.3.2 spammy= X-HELO: mail-qg0-f51.google.com Received: from mail-qg0-f51.google.com (HELO mail-qg0-f51.google.com) (209.85.192.51) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-GCM-SHA256 encrypted) ESMTPS; Wed, 16 Mar 2016 12:38:42 +0000 Received: by mail-qg0-f51.google.com with SMTP id u110so41251852qge.3 for ; Wed, 16 Mar 2016 05:38:42 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:date :message-id:subject:from:to:cc:content-transfer-encoding; bh=ytUNEQnu90dGy+b4w03KCSVQ8sjAhS7N4ObnfPHKtCI=; b=b1jA0+Xh2KYILoooe3WUFjZDOgnD4BVTH9bnItI0mxqDaQh+rQLZAmx1wOs/wiaj/1 SPxLxJla/9rXsMlx2SABr9pzK6f9ZYA52ApvgNIuQum5ijpqCXPGQa7Bf7vyaUZvn4xS 1zrXc/+vWz4aZMduFG0jdXnljitQoEbAtdm7BcBl9DIKOkbNb3im79l54fi+M/O/og/o Qui0kjafcrAkRXVrI+/f9iinZj5oiUyAp5+DZnfnQ+G3+YzMDQahx0shreHvgQOtKo6C e1eWYmOttqosn4Cr1dQAFXuoiOAQEKkD2JtlDf+uC9EVuNci7gQ7kUnVWBqD/ijis7Y+ 4/Zw== X-Gm-Message-State: AD7BkJIgI5kYsT3T5PR2n4/UNUWn4PfrVXK4kcMUlsR7Q7ahJNBzmONcnmo/AjYTA/9iqhzX83aFkB+ALXUpiQ== MIME-Version: 1.0 X-Received: by 10.140.82.146 with SMTP id h18mr4879792qgd.26.1458131919524; Wed, 16 Mar 2016 05:38:39 -0700 (PDT) Received: by 10.55.15.199 with HTTP; Wed, 16 Mar 2016 05:38:39 -0700 (PDT) In-Reply-To: <56E8633B.8070303@redhat.com> References: <20160302162538.66068C88E@oc7340732750.ibm.com> <56E82BC4.7070401@redhat.com> <56E8633B.8070303@redhat.com> Date: Wed, 16 Mar 2016 12:38:00 -0000 Message-ID: Subject: Re: PING^1: [PATCH] Add TYPE_EMPTY_RECORD for C++ empty class From: "H.J. Lu" To: Jason Merrill Cc: Ulrich Weigand , GCC Patches , Jakub Jelinek , Richard Biener , Markus Trippelsdorf Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable X-IsSubscribed: yes X-SW-Source: 2016-03/txt/msg00907.txt.bz2 On Tue, Mar 15, 2016 at 12:32 PM, Jason Merrill wrote: > On 03/15/2016 12:00 PM, H.J. Lu wrote: >> >> On Tue, Mar 15, 2016 at 8:35 AM, Jason Merrill wrote: >>> >>> I'm concerned about how this patch changes both target-independent code >>> and >>> target-specific code, with a passing remark that other targets might ne= ed >>> to >>> make similar changes. I'm also concerned about the effect of this on >>> other >>> languages that might not want the same change. So, here's an alternati= ve >>> patch that implements the change in the front end (and includes your >>> testcases, thanks!). >>> >>> Thoughts? >> >> >> On x86-64, I got >> >> >> /export/gnu/import/git/sources/gcc/libstdc++-v3/src/c++11/cxx11-shim_fac= ets.cc:273:23: >> error: empty class =E2=80=98std::__facet_shims::other_abi {aka >> std::integral_constant}=E2=80=99 parameter passing ABI chang= es in >> -fabi-version=3D10 (GCC 6) [-Werror=3Dabi] >> __collate_transform(other_abi{}, _M_get(), st, lo, hi); > > > Right, need to remove the -Werror=3Dabi bit from the patch until Jonathan > updates libstdc++. > > Jason > I got FAIL: g++.dg/abi/pr60336-1.C scan-assembler jmp[\t ]+[^$]*?_Z3xxx9true_ty= pe FAIL: g++.dg/abi/pr60336-5.C scan-assembler jmp[\t ]+[^$]*?_Z3xxx9true_ty= pe FAIL: g++.dg/abi/pr60336-6.C scan-assembler jmp[\t ]+[^$]*?_Z3xxx9true_ty= pe FAIL: g++.dg/abi/pr60336-7.C scan-assembler jmp[\t ]+[^$]*?_Z3xxx9true_ty= pe FAIL: g++.dg/abi/pr60336-9.C scan-assembler jmp[\t ]+[^$]*?_Z3xxx9true_ty= pe FAIL: g++.dg/abi/pr68355.C scan-assembler jmp[\t ]+[^$]*?_Z3xxx17integral_constantIbLb1EE They are expected since get_ref_base_and_extent needs to be changed to set bitsize to 0 for empty types so that when ref_maybe_used_by_call_p_1 calls get_ref_base_and_extent to get 0 as the maximum size on empty type. Otherwise, find_tail_calls won't perform tail call optimization for functions with empty type parameters. --=20 H.J.