Why should I know this?

alive2 관련 궁금한거 본문

LLVM-STUDY/ALIVE2

alive2 관련 궁금한거

die4taoam 2023. 6. 11. 03:08
@a = external global i32

define i1 @src(ptr %ptr) {
entry:
%first1 = getelementptr inbounds i8, ptr %ptr, i32 -2
%last1 = getelementptr inbounds i8, ptr %ptr, i32 48
%last2 = getelementptr inbounds i8, ptr %last1, i32 -6
%cmp = icmp slt ptr %first1, %last2
ret i1 %cmp
}
=> 비교

define i1 @tgt(ptr %ptr) {
%0:
ret i1 1
}
Transformation doesn't verify!
define i1 @tgt(ptr %ptr) {
%0:
ret i1 0
}
Transformation doesn't verify!

 

참/거짓 둘 중 하나지만 판정은 못하는 것으로 보인다.

다음의 경우는 판정 가능하다

 

----------------------------------------
define i1 @src(ptr %ptr) {
%entry:
%first1 = gep inbounds ptr %ptr, 1 x i32 4294967294
%last1 = gep inbounds ptr %ptr, 1 x i32 48
%last2 = gep inbounds ptr %last1, 1 x i32 4294967290
%cmp = icmp ult ptr %first1, %last2, offsetonly
ret i1 %cmp
}
=>
define i1 @tgt(ptr %ptr) {
%0:
ret i1 1
}
Transformation seems to be correct!

무슨차이가 있는걸까?

 

'LLVM-STUDY > ALIVE2' 카테고리의 다른 글

[TODO] Alive: Provably Correct InstCombine Optimizations  (0) 2024.01.14
ALIVE2 - 관련 내용 모음  (0) 2023.05.29
Comments