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 tree-optimization/50644] ICE in set_is_used added today


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

Markus Trippelsdorf <markus at trippelsdorf dot de> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |markus at trippelsdorf dot
                   |                            |de

--- Comment #15 from Markus Trippelsdorf <markus at trippelsdorf dot de> 2011-10-29 12:58:43 UTC ---
Further reduced:

markus@x4 testcase % cat smpboot.i 
struct _ddebug {
     const char *modname;
     const char *function;
     const char *filename;
     const char *format;
     char enabled;
}
cpumask_t;
extern void check_tsc_sync_source(int cpu);
int native_cpu_up(unsigned int cpu)
{
     int err;
     static struct _ddebug descriptor  = {
             "", __func__, "", "", 866, 0};
               if (__builtin_expect(!!(descriptor.enabled), 0))
                 __dynamic_pr_debug(&descriptor, "", err);
     check_tsc_sync_source(cpu);
}

markus@x4 testcase % cat smp.i 
struct smp_ops {
     void (*smp_prepare_boot_cpu)(void);
     void (*smp_prepare_cpus)(unsigned max_cpus);
     void (*smp_cpus_done)(unsigned max_cpus);
     void (*stop_other_cpus)(int wait);
     void (*smp_send_reschedule)(int cpu);
     int (*cpu_up)(unsigned cpu);
     int (*cpu_disable)(void);
     void (*cpu_die)(unsigned int cpu);
     void (*play_dead)(void);
     void (*send_call_func_ipi)(const struct cpumask *mask);
     void (*send_call_func_single_ipi)(int cpu);
};
int native_cpu_up(unsigned int cpunum);
void native_cpu_die(unsigned int cpu);
struct kernel_symbol {
     unsigned long value;
};
struct smp_ops smp_ops = {
     .cpu_up = native_cpu_up,  .cpu_die = native_cpu_die,
};
static const char __kstrtab_smp_ops[] = "" "smp_ops";
static const struct kernel_symbol 
__ksymtab_smp_ops __attribute__((__used__)) = {
     (unsigned long)&smp_ops
};

markus@x4 testcase % cat tsc_sync.i 
typedef struct {} atomic_t;
struct _ddebug {
     const char *modname;
     const char *function;
     const char *filename;
     const char *format;
     char enabled;
};
extern __typeof__(int) cpu_number;
static atomic_t start_count;
void check_tsc_sync_source(int cpu)
{
 if (unsynchronized_tsc())   return;
  else {
    do {
        static struct _ddebug descriptor = {
        "", __func__, "", 151, 0 };
        if (__builtin_expect(!!(descriptor.enabled), 0))
        __dynamic_pr_debug(&descriptor, "", 
        (({
            typeof(cpu_number) pfo_ret__;
            switch (sizeof(cpu_number)) {
             case 4:
              asm("mov" "l ""%%""gs"":" "%P" "1"",%0" :
              "=r" (pfo_ret__) : "m" (cpu_number));
             }
             pfo_ret__;
         })), cpu);
         } while (0);
  }
 atomic_set(&start_count, 0);
}

markus@x4 testcase % gcc smpboot.i smp.i tsc_sync.i -w -Os -flto
In file included from :0:0:
smpboot.i: In function ânative_cpu_upâ:
smpboot.i:10:5: internal compiler error: Segmentation fault
Please submit a full bug report


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