Я пишу проход для LLVM. Я клонирую и переставляю петли, что можно сделать несколько раз. Проблема в том, что после первого раза, когда я делаю это, SCEV становятся типами SCEVUnknown
, когда они должны быть SCEVAddRecExpr
.
Однако, если я перезапущу весь проход, используя вывод первой итерации, онбудет правильно идентифицировать их как SCEVAddRecExpr
.
Я уже пытался вызвать функцию ForgetAllLoops
Scalar Evolution, но это не работает. Я также пытался вызвать runOnFuction
с прохода ScalarEvolution, но это также не сработало.
Мой вопрос: есть ли способ повторно выполнить проход анализа во время моего прохода? Или как я могу заставить ScalarEvolution пересчитать значения SCEV для неизвестных SCEV.