This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug tree-optimization/50644] ICE in set_is_used added today
- From: "markus at trippelsdorf dot de" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Sat, 29 Oct 2011 12:58:43 +0000
- Subject: [Bug tree-optimization/50644] ICE in set_is_used added today
- Auto-submitted: auto-generated
- References: <bug-50644-4@http.gcc.gnu.org/bugzilla/>
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