// { dg-do compile { target i?86-*-* x86_64-*-* } } // { dg-require-effective-target fpic } // { dg-options "-Os -std=c++11 -fPIC -fstack-protector-strong -fomit-frame-pointer" } #pragma GCC visibility push(hidden) #pragma GCC visibility push(default) extern "C" { typedef int int64_t __attribute__ ((__mode__ (__DI__))); } enum class nsresult; #pragma GCC visibility pop class A { float mRawPtr; public: A (float *); }; class B { public: B (int64_t, int, int); }; typedef struct { int channels; } vorbis_info; template class C { public: typedef int size_type; size_type erase (_Key &); }; template class D { public: typedef _Key key_type; typedef C _Rep_type; _Rep_type _M_t; typename _Rep_type::size_type erase (key_type p1) { return _M_t.erase (p1); } }; class F { public: vorbis_info mInfo; D mVorbisPacketSamples; void ValidateVorbisPacketSamples (int *); int64_t Time (int64_t); }; class G { nsresult DecodeVorbis (int *); F *mVorbisState; int64_t mDecodedAudioFrames; }; int fn1 (float ***); void fn2 (int); void F::ValidateVorbisPacketSamples (int *p1) { mVorbisPacketSamples.erase (p1); } nsresult G::DecodeVorbis (int *p1) { float **a; int b; long long c; while ((b = fn1 (&a))) { mVorbisState->ValidateVorbisPacketSamples (p1); A (new float); for (; mVorbisState->mInfo.channels;) { } int64_t d = mVorbisState->Time (c - b); (B (d, b, mVorbisState->mInfo.channels)); mDecodedAudioFrames -= b; fn2 (b); } return nsresult(); }