From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 86604 invoked by alias); 11 May 2015 18:05:15 -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 83408 invoked by uid 89); 11 May 2015 18:05:14 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.4 required=5.0 tests=AWL,BAYES_00,KAM_LAZY_DOMAIN_SECURITY,T_RP_MATCHES_RCVD autolearn=no version=3.3.2 X-HELO: nikam.ms.mff.cuni.cz Received: from nikam.ms.mff.cuni.cz (HELO nikam.ms.mff.cuni.cz) (195.113.20.16) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES256-GCM-SHA384 encrypted) ESMTPS; Mon, 11 May 2015 18:05:12 +0000 Received: by nikam.ms.mff.cuni.cz (Postfix, from userid 16202) id E2DF154167C; Mon, 11 May 2015 20:05:09 +0200 (CEST) Date: Mon, 11 May 2015 18:05:00 -0000 From: Jan Hubicka To: Jason Merrill Cc: Jan Hubicka , gcc-patches@gcc.gnu.org Subject: Re: False ODR violation positives on anonymous namespace types Message-ID: <20150511180509.GB22960@kam.mff.cuni.cz> References: <20150511142810.GA6584@kam.mff.cuni.cz> <5550E3D2.2080408@redhat.com> <20150511174607.GB59663@kam.mff.cuni.cz> <5550ECB5.8000607@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <5550ECB5.8000607@redhat.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-SW-Source: 2015-05/txt/msg00984.txt.bz2 > On 05/11/2015 12:46 PM, Jan Hubicka wrote: > >Well, my main motivatoin to extend from RECORD_OR_UNION_TYPE_P was to handle > >enums. But other case I would like to deal with are integer types - i.e. preserve > >difference between char/signed char/unsigned char/short/int/long/wchar in cases > >where they structurally coincide. > > In what context? Won't you get that from comparing e.g. the field > types of two definitions of the same class? If one class define "int foo;" and other "long foo;" we currently do not complain about ODR on 32bit targets while I think we could. Other case was the ODR violations dragged by the signed/unsigned: char switch: $ cat t.C char a; $ ./xgcc -B ./ -O2 t.C -o t1.o -fno-signed-char -c -flto $ ./xgcc -B ./ -O2 t.C -o t2.o -fsigned-char -c -flto $ ./xgcc -B ./ -O2 t1.o t2.o -flto -fno-signed-char -flto : warning: type ïcharï violates one definition rule [-Wodr] : note: a type with different signedness is defined in another translation unit t.C:1:6: warning: type of ïaï does not match original declaration char a; ^ t.C:1:6: note: previously declared here char a; ^ I also want to use ODR for more fine grained TBAA on LTO and there the differences between integer types matter more. Honza > > Jason