/* APPLE LOCAL file 3893112 */ /* { dg-do compile { target "powerpc*-*-darwin*" } } */ /* { dg-options "-O2" } */ #define ID_INLINE inline class idVec3 { public: float x; float y; float z; explicit idVec3( const float x, const float y, const float z ); idVec3 & operator=( const idVec3 &a ); idVec3 operator*( const float a ) const; idVec3 operator+( const idVec3 &a ) const; idVec3 operator-( const idVec3 &a ) const; idVec3 & operator*=( const float a ); friend idVec3 operator*( const float a, const idVec3 b ); }; ID_INLINE idVec3::idVec3( const float x, const float y, const float z ) { this->x = x; this->y = y; this->z = z; } ID_INLINE idVec3 &idVec3::operator=( const idVec3 &a ) { x = a.x; y = a.y; z = a.z; return *this; } ID_INLINE idVec3 idVec3::operator-( const idVec3 &a ) const { return idVec3( x - a.x, y - a.y, z - a.z ); } ID_INLINE idVec3 idVec3::operator*( const float a ) const { return idVec3( x * a, y * a, z * a ); } ID_INLINE idVec3 operator*( const float a, const idVec3 b ) { return idVec3( b.x * a, b.y * a, b.z * a ); } ID_INLINE idVec3 idVec3::operator+( const idVec3 &a ) const { return idVec3( x + a.x, y + a.y, z + a.z ); } #define FLOATSIGNBITSET(x) (x<0.0f) int EdgeSplitPoint( idVec3 &v1, idVec3 &v2, idVec3 &split, float d1, float d2) { if ( FLOATSIGNBITSET( d1 ) == FLOATSIGNBITSET( d2 ) ) { return false; } split = v1 + (d1 / (d1 - d2)) * (v1 - v2); return true; } /* { dg-final { scan-assembler-not "\\-40\\(r1\\)" } } */