From: Alan Stern A change which was recently applied to fs/proc/proc_misc.c included a comment about splitting a seq_printf into two pieces to work around a bug in gcc-2.95.3. Unfortunately gcc-2.96 still chokes on the statements. The patch below makes it work better and tidies the code up a bit. --- 25-akpm/fs/proc/proc_misc.c | 34 +++++++++++++++++----------------- 1 files changed, 17 insertions(+), 17 deletions(-) diff -puN fs/proc/proc_misc.c~proc_misc-compiler-workaround fs/proc/proc_misc.c --- 25/fs/proc/proc_misc.c~proc_misc-compiler-workaround Thu Mar 18 12:49:51 2004 +++ 25-akpm/fs/proc/proc_misc.c Thu Mar 18 12:49:51 2004 @@ -391,24 +391,24 @@ int show_stat(struct seq_file *p, void * (unsigned long long)jiffies_64_to_clock_t(irq), (unsigned long long)jiffies_64_to_clock_t(softirq)); for_each_cpu(i) { - /* two separate calls here to work around gcc-2.95.3 ICE */ - seq_printf(p, "cpu%d %llu %llu %llu ", + + /* Copy values here to work around gcc-2.95.3, gcc-2.96 */ + user = kstat_cpu(i).cpustat.user; + nice = kstat_cpu(i).cpustat.nice; + system = kstat_cpu(i).cpustat.system; + idle = kstat_cpu(i).cpustat.idle; + iowait = kstat_cpu(i).cpustat.iowait; + irq = kstat_cpu(i).cpustat.irq; + softirq = kstat_cpu(i).cpustat.softirq; + seq_printf(p, "cpu%d %llu %llu %llu %llu %llu %llu %llu\n", i, - (unsigned long long) - jiffies_64_to_clock_t(kstat_cpu(i).cpustat.user), - (unsigned long long) - jiffies_64_to_clock_t(kstat_cpu(i).cpustat.nice), - (unsigned long long) - jiffies_64_to_clock_t(kstat_cpu(i).cpustat.system)); - seq_printf(p, "%llu %llu %llu %llu\n", - (unsigned long long) - jiffies_64_to_clock_t(kstat_cpu(i).cpustat.idle), - (unsigned long long) - jiffies_64_to_clock_t(kstat_cpu(i).cpustat.iowait), - (unsigned long long) - jiffies_64_to_clock_t(kstat_cpu(i).cpustat.irq), - (unsigned long long) - jiffies_64_to_clock_t(kstat_cpu(i).cpustat.softirq)); + (unsigned long long)jiffies_64_to_clock_t(user), + (unsigned long long)jiffies_64_to_clock_t(nice), + (unsigned long long)jiffies_64_to_clock_t(system), + (unsigned long long)jiffies_64_to_clock_t(idle), + (unsigned long long)jiffies_64_to_clock_t(iowait), + (unsigned long long)jiffies_64_to_clock_t(irq), + (unsigned long long)jiffies_64_to_clock_t(softirq)); } seq_printf(p, "intr %llu", (unsigned long long)sum); _