This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug optimization/12177] New: -new-ra with -ftracer, -fomit-frame-pointer, and -O2 ICE


PLEASE REPLY TO gcc-bugzilla@gcc.gnu.org ONLY, *NOT* gcc-bugs@gcc.gnu.org.

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

           Summary: -new-ra with -ftracer, -fomit-frame-pointer, and -O2 ICE
           Product: gcc
           Version: 3.3.1
            Status: UNCONFIRMED
          Severity: normal
          Priority: P2
         Component: optimization
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: peorth at artificial dot ath dot cx
                CC: gcc-bugs at gcc dot gnu dot org

When combining these options on some code, it aborts with an ICE. If any of these are omitted, 
there's no ICE.

Currently this happens in ffmpeg-0.4.7_pre20030624/libabcodec/h263.c:1592: internal compiler 
error: in reloads_to_loads, at ra-rewrite.c:1068. The line in the source file is just a closing bracket, 
so it doesn't appear to shed much light on why (but I'm no expert in this stuff).

The code block in this case appears to be:
/* must be called before writing the header */
void ff_set_mpeg4_time(MpegEncContext * s, int picture_number){
    int time_div, time_mod;

    if(s->pict_type==I_TYPE){ //we will encode a vol header
        int dummy;
        av_reduce(&s->time_increment_resolution, &dummy, s->avctx->frame_rate, 
s->avctx->frame_rate_base, (1<<16)-1);

        s->time_increment_bits = av_log2(s->time_increment_resolution - 1) + 1;
    }

    if(s->current_picture.pts)
        s->time= (s->current_picture.pts*s->time_increment_resolution + 500*1000)/(1000*1000);
    else
        s->time= av_rescale(picture_number*(int64_t)s->avctx->frame_rate_base, 
s->time_increment_resolution, s->avctx->fram$
    time_div= s->time/s->time_increment_resolution;
    time_mod= s->time%s->time_increment_resolution;

    if(s->pict_type==B_TYPE){
        s->pb_time= s->pp_time - (s->last_non_b_time - s->time);
    }else{
        s->last_time_base= s->time_base;
        s->time_base= time_div;
        s->pp_time= s->time - s->last_non_b_time;
        s->last_non_b_time= s->time;
    }
}

The pre-processed source it said to attach appears the same from it, so I won't be redundant.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]