Вы можете использовать WHERE
для фильтрации только положительных значений:
SELECT MIN(value)
FROM tab
WHERE value > 0
Необходимо посмотреть на несколько набор идентификаторов SSA, сходящихся на узле (базисный блок). Сохраните промежуточную структуру базисного блока, тот способ, которым можно легко использовать (например, запрос) все идентификаторы в блоке.
Я не уверен, что Вы имеете в виду с коллизией, но я предполагаю, что Вы хотите решить что-то как
if (bExp) if (bExp)
x := 1 x1 := 1
else SSA: else
x := 2 x2 := 2
y := x; y := Phi(x1,x2)
то есть, Вы хотите Phi в этом месте. Поймите, что нет никакого Phi в исполняемом коде! Используя информацию, что y или (зависимый) на x1 или x2, можно переписать это на следующем шаге. Например, в центральном памятью представлении, Phi (x1, x2) говорит Вам, что x1 и x2 должны быть двумя псевдонимами к той же ячейке памяти, а именно, ячейке памяти y. Phi просто связывает информацию.
if (bExp)
stackframe[y_index] = 1 (y_index being some offset)
else
stackframe[y_index] = 2
nop
Надежда это помогает немного!