[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#633469: ICE: gcc-4.6: ICE on armhf with traverso-0.49.2-3



Package: g++-4.6
Version: 4.6.1-2
Severity: important

Hi,

g++ fails with an ICE on package traverso on armhf:

http://buildd.debian-ports.org/status/fetch.php?pkg=traverso&arch=armhf&ver=0.49.2-3&stamp=1307331580

Attached is the smallest trimmed down file that is able to reproduce the ICE:

$ g++-4.6 -O2 -c memops_testcase.cpp -o memops_testcase.o
memops_testcase.cpp: In function ‘void sample_move_d32u24_sS(char*,
audio_sample_t*, long unsigned int, long unsigned int,
dither_state_t*)’:
memops_testcase.cpp:28:1: internal compiler error: in
get_arm_condition_code, at config/arm/arm.c:17152
Please submit a full bug report,
with preprocessed source if appropriate.
See <file:///usr/share/doc/gcc-4.6/README.Bugs> for instructions.

Regards

Konstantinos
typedef float audio_sample_t;

typedef struct {
    unsigned int depth;
    float rm1;
    unsigned int idx;
    float e[8];
} dither_state_t;


void sample_move_d32u24_sS (char *dst, audio_sample_t *src, unsigned long nsamples, unsigned long dst_skip, dither_state_t*)

{
    long long y;

    while (nsamples--) {
        y = (long long)(*src * 8388608.0f) << 8;
        if (y > 2147483647) {
            *((int *) dst) = 2147483647;
        } else if (y < (-2147483647 - 1)) {
            *((int *) dst) = (-2147483647 - 1);
        } else {
            *((int *) dst) = (int)y;
        }
        dst += dst_skip;
        src++;
    }
}

Reply to: