On 29/06/2017 14:05, Wanpeng Li wrote: > + /* In case the sw timer triggered in the window */ > + if (!apic_lvtt_period(apic)) { > + if (r || atomic_read(&apic->lapic_timer.pending)) { > + need_cancel = true; > + if (r) > + apic_timer_expired(apic); > + } > + } Yes, that's equivalent. The compiler should thread the jumps as if it were: if (r) { apic_timer_expired(apic); goto cancel_timer; } if (atomic_read(&apic->lapic_timer.pending)) goto cancel_timer; so it produces pretty good code too. Paolo