On Tue, Jan 05, 2010 at 04:27:33PM +0100, Richard Guenther wrote: > On Tue, Jan 5, 2010 at 4:03 PM, torbenh wrote: > > On Tue, Jan 05, 2010 at 02:46:30PM +0100, Richard Guenther wrote: > >> On Tue, Jan 5, 2010 at 2:40 PM, torbenh wrote: > >> > >> The -fno-alias-X things do not make much sense for user code (they > >> have been historically used from Frontends).  If restrict doesn't work > >> for you (do you have a testcase that can reproduce your issue?) > >> then you probably need to wait for IPA pointer analysis to be > >> fixed in GCC 4.6. > > > > sorry... forget the attachment :S > > Yes, in this case you can fix it by making ramp static. Otherwise its > address may be takein in another translation unit. For Fortran we > have the DECL_RESTRICTED_P which we could expose to other > languages via an attribute. It tells that a decl is not aliased by > restrict qualified pointers, so > > struct Ramp { > float phase; > inline float process() { return phase++; } > } ramp __attribute__((restrict)); > > void fill_buffer( float * __restrict buf, size_t nframes ) > { > for( size_t i=0; i buf[i] = ramp.process(); > } would that also work with this stuff: template class Mixer; template class Mixer : public Block { private: T1 t1 __attribute__((restrict)); Mixer t2; public: inline float process() { return t1.process() + t2.process(); } }; template class Mixer : public Block { private: T1 t1 __attribute__((restrict)); T2 t2 __attribute__((restrict)); public: inline float process() { return t1.process() + t2.process(); } }; Mixer mix __attribute__((restrict)) ? i still dont understand whats the problem with -fnolias, as in attached patch. > > would then be optimized as well. Can you file an enhancement > bugreport according to this? > > Thanks, > Richard. -- torben Hohn