Open choco-bear opened 4 months ago
네, poison을 어떤 식으로든 값을 그대로 넘기지 않고 연산에 사용하면 UB가 발생하는 것이 맞습니다.
네, poison을 어떤 식으로든 값을 그대로 넘기지 않고 연산에 사용하면 UB가 발생하는 것이 맞습니다.
답변 감사합니다!
@strikef
그런데 그럴 경우
%a
가 poison일 때
%add = add i32 %a, 1
는 poison이고
%add = call i32 @incr_i32(i32 %a)
는 UB를 발생시킨다면
단지 1을 더하는 instruction조차 @incr_i32
으로 변경할 수 없는 것 아닌가요?
이 경우 @incr_i32
를 사용할 수 있는 경우가 있나요?
안녕하세요, 다름이 아니라 패치와 관련하여 버그로 의심되는 현상을 또 발견하여 문의드립니다. [1]에서는 source의
%#1 = call i32 @decr_i32(i32 %a)
의 리턴값이 없다는 출력이 있으며, [2]에서는@incr_i64
함수가 UB를 발생시켰다고 하는데, 이는 아마 intrinsic function의 인자로 poison이 전달되는 경우를 처리하지 못해서 발생하는 것으로 보입니다. Intrinsic function의 인자로 poison이 전달되었을 때 리턴값이 poison인 것이 아닌 UB를 발생시키는 것이 의도된 동작인가요? 감사합니다.[1]
[2]