This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH] C undefined behavior fix
- From: Florian Weimer <fw at deneb dot enyo dot de>
- To: paulus at samba dot org
- Cc: Richard Henderson <rth at redhat dot com>, Tom Rini<trini at kernel dot crashing dot org>, jtv <jtv at xs4all dot nl>, Momchil Velikov <velco at fadata dot bg>, linux-kernel at vger dot kernel dot org, gcc at gcc dot gnu dot org, linuxppc-dev at lists dot linuxppc dot org, Franz Sirl <Franz dot Sirl-kernel at lauterbach dot com>, Benjamin Herrenschmidt <benh at kernel dot crashing dot org>, Corey Minyard <minyard at acm dot org>
- Date: Fri, 04 Jan 2002 09:48:04 +0100
- Subject: Re: [PATCH] C undefined behavior fix
- References: <87g05py8qq.fsf@fadata.bg><20020102190910.GG1803@cpe-24-221-152-185.az.sprintbbd.net><20020102133632.C10362@redhat.com><20020102220548.GL1803@cpe-24-221-152-185.az.sprintbbd.net><20020102232320.A19933@xs4all.nl><20020102231243.GO1803@cpe-24-221-152-185.az.sprintbbd.net><20020103004514.B19933@xs4all.nl><20020103000118.GR1803@cpe-24-221-152-185.az.sprintbbd.net><20020102160739.A10659@redhat.com><15411.49911.958835.299377@argo.ozlabs.ibm.com><20020103003240.A10838@redhat.com><15412.11822.811712.207946@argo.ozlabs.ibm.com>
Paul Mackerras <paulus@samba.org> writes:
> Richard Henderson writes:
>
>> On Thu, Jan 03, 2002 at 01:33:27PM +1100, Paul Mackerras wrote:
>> > I look forward to seeing your patch to remove all uses of
>> > virt_to_phys, phys_to_virt, __pa, __va, etc. from arch/alpha... :)
>>
>> I don't dereference them either, do I?
>
> Does that matter?
No, it doesn't. C pointers do not behave like machine addresses,
there are additional constraints.
> Also, what does the standard say about casting pointers to integral
> types? IIRC you aren't entitled to assume that a pointer will fit in
> any integral type, or anything about the bit patterns that you get.
This casting falls into the category "additional language constructs
supported by GCC". The standard contains wording which encourages
implementors to include a meaningfull conversion from a pointer type
to an integral type, but there is no requirement that this has the
semantics expected by most programmers.