http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46077

Richard Guenther <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
         Resolution|                            |DUPLICATE

--- Comment #3 from Richard Guenther <rguenth at gcc dot gnu.org> 2010-11-04 
13:24:38 UTC ---
Reduced testcase:

extern "C" {
    typedef __builtin_va_list __gnuc_va_list;
    typedef __gnuc_va_list va_list;
}
typedef unsigned char uint8;
typedef unsigned int uint32;
typedef signed char int8;
namespace Audio {
    class AudioStream {
    };
}
class TownsPC98_FmSynth : public Audio::AudioStream {
};
class TownsAudio_PcmChannel;
class TownsAudioInterface : public TownsPC98_FmSynth {
    int intf_pcmPlayEffect(va_list &args);
    TownsAudio_PcmChannel *_pcmChan;
};
class TownsAudio_PcmChannel {
    friend class TownsAudioInterface;
    void loadExtData(uint8 *buffer, uint32 size);
    int8 *extData;
};
class TownsAudio_WaveTable {
    friend class TownsAudioInterface;
    uint32 size;
};
int TownsAudioInterface::intf_pcmPlayEffect(va_list &args) {
    int chan = __builtin_va_arg(args,int);
    uint8 *data = __builtin_va_arg(args,uint8 *);
    TownsAudio_WaveTable w;
    TownsAudio_PcmChannel *p = &_pcmChan[chan];
    p->loadExtData(data + 32, w.size);
}
void TownsAudio_PcmChannel::loadExtData(uint8 *buffer, uint32 size) {
    int8 *src = (int8 *)buffer;
    int8 *dst = extData;
    for (uint32 i = 0; i < size; i++)
      *dst++ = *src & 0x80 ? (*src++ & 0x7f) : -*src++;
}

Indeed makes it look like a dup.

*** This bug has been marked as a duplicate of bug 45971 ***

Reply via email to