------- Comment #4 from rguenth at gcc dot gnu dot org  2006-05-24 17:15 -------
Unfortunately it ICEs during bootstrap compiling mf-runtime.c with

mf-runtime.8.i: In function '__mfu_check':
mf-runtime.8.i:8: internal compiler error: in find_or_generate_expression, at
tree-ssa-pre.c:2279

testcase:

typedef unsigned long int uintptr_t;
unsigned mudflap_mode;
typedef struct __mf_object {
  uintptr_t low, high;
} __mf_object_t;
void __mfu_check (void *ptr, unsigned obj_count,
        uintptr_t ptr_lower, uintptr_t ptr_higher, __mf_object_t** all_ovr_obj)
{
  int judgement = 0;
  uintptr_t ptr_low = (uintptr_t) ptr;
  uintptr_t ptr_high = (uintptr_t) ptr;
  switch (mudflap_mode) {
  case 0:    
    while (judgement == 0)     
      {
        unsigned i;
        unsigned uncovered = 0;
        for (i = 0; i < obj_count; i++)
          {
             __mf_object_t *obj = all_ovr_obj[i];
             int j, uncovered_low_p, uncovered_high_p;
             uncovered_low_p = ptr_low < obj->low;
             uncovered_high_p = ptr_high > obj->high;
             for (j = 0; j < obj_count; j++)
               { 
                 __mf_object_t *obj2 = all_ovr_obj[j];
                 if (ptr_lower >= obj2->low && ptr_lower <= obj2->high)
                   uncovered_low_p = 0;
                 if (ptr_high >= obj2->low && ptr_higher <= obj2->high)
                   uncovered_high_p = 0;
               }
             if (uncovered_low_p || uncovered_high_p)    
               uncovered++;
          }
        if (uncovered == 0)     
          judgement = 1;
      }
  }
}


-- 


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

Reply via email to