alive2
alive2 copied to clipboard
Automatic verification of LLVM optimizations
This is a srctgt reduced from ph7: ``` define i32 @src(i8* %dummy, i8** %pCur1) { entry: %retval = alloca i32, align 4 %i = load i8*, i8** %pCur1, align 8...
Information from @aqjune so it doesn't get lost: The biggest hurdle in fixing the shufflevector semantics is that the Intel intrinsics that return 'undefined' vectors should be fixed to return...
This patch checks the bytes of local blocks escaped via fn calls (resolves #435 ). This check is done when the local block ids are known to be constants (which...
Alive2 verifies the example below as correct, but shouldn't this fail verification? Unless I am missing something, a counter example would be any pointer value for `%arr` so that `%gep.2`...
We miss a bug in NewGVN (https://github.com/llvm/llvm-project/issues/56149) because the ordering of BBs is not optimal. We have a jump to a BB that appears before, so we never see that...
The input (reduced by @Dongjoo-Kim): ``` declare i32* @g() define void @f(i32** %p1, i32* %p2, i32** %p3, i32*) { entry: load i32*, i32** %p1, align 8 %cond1 = icmp eq...
We produce spurious phi nodes, e.g. the example in https://github.com/AliveToolkit/alive2/issues/571 and `tests/alive-tv/loops/issue561.srctgt.ll`
I'm digging `precondition is false` errors at LLVM unit tests, and found this epic one: Transforms/InstCombine/alloca-big.ll ``` ; OSS-Fuzz: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=5223 define void @test_bigalloc() { ; CHECK-LABEL: @test_bigalloc( ; CHECK-NEXT: [[TMP1:%.*]]...
I've been hacking at another loop idiom: ``` declare void @escape(i8, i8, i8, i1, i8) define i8 @src(i8 %val, i8 %start, i8 %extraoffset) { entry: br label %loop loop: %iv...
Nowadays, LLVM, at least nominally, does not assume that loops must progress, but requires `mustprogress` annotation for that. But it seems like alive2 doesn't deal with that. For example, ```...