user avatar
Work around ICC optimizer bug hoisting conditions out of the loop
Thiago Macieira authored
In the first iteration of the loop, span->objects is not null, but
becomes null and therefore the entry is removed from the list. When the
list is empty, the list header (nonempty_) has next == prev == self and
objects is null. So in the second iteration, DLL_IsEmpty should return
true.

Analysis of the assembly output indicates that the function DLL_IsEmpty
(DLL = "doubly linked list") was hoisted out of the loop and its
condition was never checked again.

Affects: 14.0.3 on Linux, 15 on OS X (EDG and Clang) and Linux
Does not affect: 14.0.3 on Windows

Intel issue ID: 6000056746
Change-Id: I4439f441d5206a39391b9181baf42160d37bd2f1
Reviewed-by: default avatarSimon Hausmann <simon.hausmann@digia.com>
11ca3481
Name Last commit Last update