This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Type-punning


On Tue, 26 Jun 2007, Andrew Pinski wrote:

> On 6/26/07, Herman Geza <hg211@hszk.bme.hu> wrote:
> > Maybe GCC shouldn't optimize around invalid type-punnings?
> 
> That is what -fno-strict-aliasing is for.
> Also GCC has done this since 3.0.0 (and also 2.95 and 2.95.1 and then
> in 2.95.2 it was changed back while most of the free source world
> fixes their code).

Let me elaborate.  If the compiler can detect invalid type-punning, 
then shouldn't optimize.  For example,

void foo(int *a, float *b) {
	// here, access to a and b can be optimized, as the compiler 
supposedly doesn't know whether a and b point to the same address
}

but:

void foo(float *a) {
	int *b = (int*)a; // type-punning warning

	// here, access to a and b shouldn't be optimized, as the compiler 
knows that a and b point to the same address
}

Is this reasonable?

Geza


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]