FSP4.5编译RA6M4,编译器优化问题

for循环使用如下代码遍历链表时,发现会被编译器优化成死循环,链表结尾值为null.for (p = n->next, n = p->next; p != 0; p = n, n = p->next)
这段代码即使p=0,也不会退出循环。这是处于什么考虑才这么优化?