├── .gitmodules ├── test ├── Backend │ ├── Types │ │ └── pointer2.ll │ ├── Klee │ │ ├── GlobalVariable.ll │ │ ├── UnconditionalBranch.ll │ │ ├── OneCall.ll │ │ ├── UnconditionalBranchWithSimplePhi.ll │ │ ├── BoolReadWrite.leq36.ll │ │ ├── CmpEq.ll │ │ ├── BitwiseOps.ll │ │ ├── BoolReadWrite.ll │ │ ├── SimpleStoreAndLoad.leq36.ll │ │ ├── Select.ll │ │ ├── GlobalUndef.ll │ │ └── Shifts.ll │ └── Constants │ │ └── array.ll ├── Pathsearch │ ├── paths │ │ ├── from_static │ │ │ ├── simple1-12 │ │ │ ├── entering-call │ │ │ ├── simple1-O2-9 │ │ │ ├── simple1-O2-3 │ │ │ ├── simple1-25 │ │ │ ├── uncondbranch │ │ │ ├── simple1-O2-12 │ │ │ ├── return-to-caller1-11 │ │ │ ├── return-to-caller1-6 │ │ │ ├── return-to-caller2-13 │ │ │ ├── return-to-caller2-6 │ │ │ ├── not-entering-call │ │ │ ├── calling │ │ │ ├── returning │ │ │ ├── not-calling │ │ │ ├── ignore-caller-in-other-module │ │ │ ├── simple1-3 │ │ │ ├── condbranch-true │ │ │ ├── return-nested-via-caller2-6-to-9 │ │ │ ├── return-nested-via-caller2-13-to-13 │ │ │ ├── return-nested-via-caller2-13-to-9 │ │ │ ├── return-nested-via-caller2-6-to-13 │ │ │ ├── return-nested-via-caller1-6 │ │ │ └── return-nested-via-caller1-11 │ │ ├── simple1-O2 │ │ │ ├── foo │ │ │ │ ├── 1 │ │ │ │ │ ├── loop.call │ │ │ │ │ │ ├── 1 │ │ │ │ │ │ ├── 2 │ │ │ │ │ │ ├── 3 │ │ │ │ │ │ ├── 4 │ │ │ │ │ │ └── 5 │ │ │ │ │ └── no-loop.no-call │ │ │ │ │ │ ├── 1 │ │ │ │ │ │ ├── 2 │ │ │ │ │ │ ├── 3 │ │ │ │ │ │ ├── 4 │ │ │ │ │ │ └── 5 │ │ │ │ ├── 2 │ │ │ │ │ ├── loop.call │ │ │ │ │ │ ├── 1 │ │ │ │ │ │ ├── 2 │ │ │ │ │ │ ├── 3 │ │ │ │ │ │ ├── 4 │ │ │ │ │ │ ├── 5 │ │ │ │ │ │ ├── 6 │ │ │ │ │ │ └── 7 │ │ │ │ │ └── no-loop.no-call │ │ │ │ │ │ ├── 1 │ │ │ │ │ │ ├── 2 │ │ │ │ │ │ ├── 3 │ │ │ │ │ │ ├── 4 │ │ │ │ │ │ ├── 5 │ │ │ │ │ │ └── 6 │ │ │ │ ├── 3 │ │ │ │ │ ├── loop.call │ │ │ │ │ │ ├── 1 │ │ │ │ │ │ ├── 2 │ │ │ │ │ │ ├── 3 │ │ │ │ │ │ └── 4 │ │ │ │ │ └── no-loop.no-call │ │ │ │ │ │ ├── 1 │ │ │ │ │ │ ├── 2 │ │ │ │ │ │ ├── 3 │ │ │ │ │ │ └── 4 │ │ │ │ └── 4 │ │ │ │ │ ├── loop.call │ │ │ │ │ ├── 1 │ │ │ │ │ └── 2 │ │ │ │ │ └── no-loop.no-call │ │ │ │ │ ├── 1 │ │ │ │ │ └── 2 │ │ │ └── linked-crossModule │ │ │ │ └── foo │ │ │ │ └── 2 │ │ │ │ └── loop.call │ │ │ │ ├── 1 │ │ │ │ ├── 2 │ │ │ │ ├── 3 │ │ │ │ ├── 4 │ │ │ │ ├── 5 │ │ │ │ ├── 6 │ │ │ │ ├── 7 │ │ │ │ ├── 8 │ │ │ │ ├── 9 │ │ │ │ ├── 10 │ │ │ │ ├── 11 │ │ │ │ └── 12 │ │ ├── simple_phi │ │ │ └── foo │ │ │ │ ├── 1 │ │ │ │ └── no-loop.no-call │ │ │ │ │ ├── 1 │ │ │ │ │ └── 2 │ │ │ │ ├── 2 │ │ │ │ └── no-loop.no-call │ │ │ │ │ ├── 1 │ │ │ │ │ ├── 2 │ │ │ │ │ └── 3 │ │ │ │ └── 3 │ │ │ │ └── no-loop.no-call │ │ │ │ └── 1 │ │ ├── switch-O2 │ │ │ └── foo │ │ │ │ ├── 1 │ │ │ │ └── loop.call │ │ │ │ │ ├── 1 │ │ │ │ │ ├── 2 │ │ │ │ │ └── 3 │ │ │ │ ├── 2 │ │ │ │ └── loop.call │ │ │ │ │ ├── 1 │ │ │ │ │ ├── 2 │ │ │ │ │ ├── 3 │ │ │ │ │ └── 4 │ │ │ │ └── 3 │ │ │ │ └── loop.call │ │ │ │ └── 1 │ │ ├── recursiveCalls │ │ │ ├── moreBlocks │ │ │ │ ├── 1 │ │ │ │ │ └── loop.call │ │ │ │ │ │ ├── 2 │ │ │ │ │ │ ├── 3 │ │ │ │ │ │ ├── 4 │ │ │ │ │ │ ├── 5 │ │ │ │ │ │ ├── 6 │ │ │ │ │ │ ├── 7 │ │ │ │ │ │ ├── 8 │ │ │ │ │ │ ├── 9 │ │ │ │ │ │ ├── 10 │ │ │ │ │ │ ├── 11 │ │ │ │ │ │ ├── 12 │ │ │ │ │ │ └── 13 │ │ │ │ ├── 2 │ │ │ │ │ └── loop.call │ │ │ │ │ │ ├── 3 │ │ │ │ │ │ ├── 4 │ │ │ │ │ │ ├── 5 │ │ │ │ │ │ ├── 6 │ │ │ │ │ │ ├── 7 │ │ │ │ │ │ ├── 8 │ │ │ │ │ │ ├── 9 │ │ │ │ │ │ ├── 10 │ │ │ │ │ │ ├── 11 │ │ │ │ │ │ ├── 12 │ │ │ │ │ │ ├── 13 │ │ │ │ │ │ ├── 14 │ │ │ │ │ │ ├── 15 │ │ │ │ │ │ ├── 16 │ │ │ │ │ │ └── 18 │ │ │ │ ├── 3 │ │ │ │ │ └── loop.call │ │ │ │ │ │ ├── 4 │ │ │ │ │ │ ├── 5 │ │ │ │ │ │ ├── 6 │ │ │ │ │ │ ├── 7 │ │ │ │ │ │ ├── 8 │ │ │ │ │ │ ├── 9 │ │ │ │ │ │ ├── 10 │ │ │ │ │ │ ├── 11 │ │ │ │ │ │ ├── 12 │ │ │ │ │ │ ├── 14 │ │ │ │ │ │ ├── 15 │ │ │ │ │ │ ├── 16 │ │ │ │ │ │ ├── 20 │ │ │ │ │ │ └── 23 │ │ │ │ ├── 4 │ │ │ │ │ └── loop.call │ │ │ │ │ │ ├── 4 │ │ │ │ │ │ ├── 5 │ │ │ │ │ │ ├── 6 │ │ │ │ │ │ ├── 7 │ │ │ │ │ │ ├── 8 │ │ │ │ │ │ ├── 9 │ │ │ │ │ │ ├── 10 │ │ │ │ │ │ ├── 11 │ │ │ │ │ │ ├── 12 │ │ │ │ │ │ ├── 14 │ │ │ │ │ │ └── 30 │ │ │ │ ├── 5 │ │ │ │ │ └── loop.call │ │ │ │ │ │ ├── 5 │ │ │ │ │ │ ├── 7 │ │ │ │ │ │ ├── 8 │ │ │ │ │ │ ├── 9 │ │ │ │ │ │ ├── 10 │ │ │ │ │ │ ├── 11 │ │ │ │ │ │ ├── 12 │ │ │ │ │ │ ├── 13 │ │ │ │ │ │ ├── 14 │ │ │ │ │ │ └── 16 │ │ │ │ └── 6 │ │ │ │ │ └── loop.call │ │ │ │ │ ├── 13 │ │ │ │ │ ├── 15 │ │ │ │ │ ├── 16 │ │ │ │ │ └── 18 │ │ │ ├── simple │ │ │ │ ├── 1 │ │ │ │ │ ├── loop.call │ │ │ │ │ │ ├── 1 │ │ │ │ │ │ ├── 2 │ │ │ │ │ │ ├── 3 │ │ │ │ │ │ └── 4 │ │ │ │ │ └── loop.no-call │ │ │ │ │ │ ├── 1 │ │ │ │ │ │ ├── 2 │ │ │ │ │ │ ├── 3 │ │ │ │ │ │ └── 4 │ │ │ │ ├── 2 │ │ │ │ │ ├── loop.call │ │ │ │ │ │ ├── 1 │ │ │ │ │ │ ├── 2 │ │ │ │ │ │ ├── 3 │ │ │ │ │ │ ├── 4 │ │ │ │ │ │ └── 5 │ │ │ │ │ └── loop.no-call │ │ │ │ │ │ ├── 1 │ │ │ │ │ │ ├── 2 │ │ │ │ │ │ ├── 3 │ │ │ │ │ │ ├── 4 │ │ │ │ │ │ └── 5 │ │ │ │ ├── 3 │ │ │ │ │ ├── loop.call │ │ │ │ │ │ ├── 3 │ │ │ │ │ │ ├── 5 │ │ │ │ │ │ └── 6 │ │ │ │ │ └── loop.no-call │ │ │ │ │ │ ├── 3 │ │ │ │ │ │ ├── 4 │ │ │ │ │ │ └── 5 │ │ │ │ ├── 4 │ │ │ │ │ ├── loop.call │ │ │ │ │ │ ├── 4 │ │ │ │ │ │ └── 7 │ │ │ │ │ └── loop.no-call │ │ │ │ │ │ ├── 3 │ │ │ │ │ │ ├── 4 │ │ │ │ │ │ └── 5 │ │ │ │ └── 5 │ │ │ │ │ ├── loop.call │ │ │ │ │ ├── 4 │ │ │ │ │ └── 8 │ │ │ │ │ └── loop.no-call │ │ │ │ │ ├── 3 │ │ │ │ │ └── 5 │ │ │ ├── nestedRecursive │ │ │ │ ├── 1 │ │ │ │ │ └── loop.call │ │ │ │ │ │ ├── 1 │ │ │ │ │ │ ├── 2 │ │ │ │ │ │ ├── 3 │ │ │ │ │ │ └── 4 │ │ │ │ ├── 2 │ │ │ │ │ └── loop.call │ │ │ │ │ │ ├── 2 │ │ │ │ │ │ ├── 3 │ │ │ │ │ │ └── 4 │ │ │ │ ├── 3 │ │ │ │ │ └── loop.call │ │ │ │ │ │ ├── 2 │ │ │ │ │ │ └── 4 │ │ │ │ └── 4 │ │ │ │ │ └── loop.call │ │ │ │ │ ├── 3 │ │ │ │ │ └── 5 │ │ │ ├── notTailRec │ │ │ │ ├── 1 │ │ │ │ │ └── loop.call │ │ │ │ │ │ ├── 1 │ │ │ │ │ │ ├── 2 │ │ │ │ │ │ ├── 3 │ │ │ │ │ │ ├── 4 │ │ │ │ │ │ ├── 5 │ │ │ │ │ │ └── 6 │ │ │ │ ├── 2 │ │ │ │ │ └── loop.call │ │ │ │ │ │ ├── 1 │ │ │ │ │ │ ├── 2 │ │ │ │ │ │ ├── 3 │ │ │ │ │ │ ├── 4 │ │ │ │ │ │ ├── 5 │ │ │ │ │ │ ├── 6 │ │ │ │ │ │ └── 7 │ │ │ │ └── 3 │ │ │ │ │ └── loop.call │ │ │ │ │ ├── 3 │ │ │ │ │ ├── 6 │ │ │ │ │ ├── 7 │ │ │ │ │ ├── 8 │ │ │ │ │ └── 9 │ │ │ ├── mutRecursiveA │ │ │ │ ├── 1 │ │ │ │ │ └── loop.call │ │ │ │ │ │ ├── 1 │ │ │ │ │ │ ├── 2 │ │ │ │ │ │ ├── 3 │ │ │ │ │ │ └── 4 │ │ │ │ ├── 2 │ │ │ │ │ └── loop.call │ │ │ │ │ │ ├── 1 │ │ │ │ │ │ ├── 2 │ │ │ │ │ │ ├── 3 │ │ │ │ │ │ ├── 4 │ │ │ │ │ │ └── 5 │ │ │ │ ├── 3 │ │ │ │ │ └── loop.call │ │ │ │ │ │ ├── 1 │ │ │ │ │ │ ├── 3 │ │ │ │ │ │ └── 6 │ │ │ │ └── 4 │ │ │ │ │ └── loop.call │ │ │ │ │ ├── 4 │ │ │ │ │ └── 7 │ │ │ ├── doubleRecursive │ │ │ │ ├── 1 │ │ │ │ │ └── loop.call │ │ │ │ │ │ ├── 2 │ │ │ │ │ │ ├── 3 │ │ │ │ │ │ └── 4 │ │ │ │ └── 2 │ │ │ │ │ └── loop.call │ │ │ │ │ ├── 3 │ │ │ │ │ └── 5 │ │ │ └── threeWayMutRecursiveA │ │ │ │ ├── 1 │ │ │ │ └── loop.call │ │ │ │ │ ├── 1 │ │ │ │ │ ├── 2 │ │ │ │ │ ├── 3 │ │ │ │ │ └── 4 │ │ │ │ ├── 2 │ │ │ │ └── loop.call │ │ │ │ │ ├── 2 │ │ │ │ │ ├── 3 │ │ │ │ │ └── 5 │ │ │ │ └── 3 │ │ │ │ └── loop.call │ │ │ │ ├── 3 │ │ │ │ └── 6 │ │ ├── nodeuaffp2 │ │ │ └── myFree │ │ │ │ └── 3 │ │ │ │ └── loop.call │ │ │ │ ├── 1 │ │ │ │ ├── 2 │ │ │ │ ├── 3 │ │ │ │ ├── 4 │ │ │ │ └── 5 │ │ ├── simple2_call │ │ │ └── foo │ │ │ │ ├── 2 │ │ │ │ ├── loop.call │ │ │ │ │ ├── 1 │ │ │ │ │ ├── 2 │ │ │ │ │ ├── 3 │ │ │ │ │ ├── 4 │ │ │ │ │ └── 5 │ │ │ │ ├── no-loop.call │ │ │ │ │ ├── 1 │ │ │ │ │ ├── 2 │ │ │ │ │ ├── 3 │ │ │ │ │ ├── 4 │ │ │ │ │ └── 5 │ │ │ │ ├── loop.no-call │ │ │ │ │ ├── 1 │ │ │ │ │ ├── 2 │ │ │ │ │ ├── 3 │ │ │ │ │ ├── 4 │ │ │ │ │ └── 5 │ │ │ │ └── no-loop.no-call │ │ │ │ │ ├── 1 │ │ │ │ │ ├── 2 │ │ │ │ │ ├── 3 │ │ │ │ │ ├── 4 │ │ │ │ │ └── 5 │ │ │ │ ├── 3 │ │ │ │ ├── loop.call │ │ │ │ │ ├── 1 │ │ │ │ │ ├── 2 │ │ │ │ │ ├── 3 │ │ │ │ │ ├── 4 │ │ │ │ │ ├── 5 │ │ │ │ │ └── 6 │ │ │ │ ├── no-loop.call │ │ │ │ │ ├── 1 │ │ │ │ │ ├── 2 │ │ │ │ │ ├── 3 │ │ │ │ │ ├── 4 │ │ │ │ │ ├── 5 │ │ │ │ │ └── 6 │ │ │ │ ├── loop.no-call │ │ │ │ │ ├── 2 │ │ │ │ │ ├── 3 │ │ │ │ │ ├── 4 │ │ │ │ │ ├── 5 │ │ │ │ │ └── 6 │ │ │ │ └── no-loop.no-call │ │ │ │ │ ├── 2 │ │ │ │ │ ├── 3 │ │ │ │ │ ├── 4 │ │ │ │ │ ├── 5 │ │ │ │ │ └── 6 │ │ │ │ ├── 4 │ │ │ │ ├── loop.call │ │ │ │ │ ├── 2 │ │ │ │ │ ├── 3 │ │ │ │ │ └── 4 │ │ │ │ ├── no-loop.call │ │ │ │ │ ├── 2 │ │ │ │ │ ├── 3 │ │ │ │ │ └── 4 │ │ │ │ ├── loop.no-call │ │ │ │ │ └── 4 │ │ │ │ └── no-loop.no-call │ │ │ │ │ └── 2 │ │ │ │ └── 5 │ │ │ │ └── loop.call │ │ │ │ └── 3 │ │ ├── simple2_call2 │ │ │ └── foo │ │ │ │ ├── 2 │ │ │ │ └── loop.call │ │ │ │ │ ├── 1 │ │ │ │ │ ├── 2 │ │ │ │ │ ├── 3 │ │ │ │ │ ├── 4 │ │ │ │ │ └── 5 │ │ │ │ ├── 3 │ │ │ │ └── loop.call │ │ │ │ │ ├── 1 │ │ │ │ │ ├── 2 │ │ │ │ │ ├── 3 │ │ │ │ │ ├── 4 │ │ │ │ │ ├── 5 │ │ │ │ │ ├── 6 │ │ │ │ │ └── 7 │ │ │ │ └── 4 │ │ │ │ └── loop.call │ │ │ │ ├── 2 │ │ │ │ ├── 3 │ │ │ │ ├── 4 │ │ │ │ ├── 5 │ │ │ │ └── 6 │ │ ├── simple2 │ │ │ └── foo │ │ │ │ ├── 2 │ │ │ │ ├── loop.no-call │ │ │ │ │ ├── 1 │ │ │ │ │ ├── 2 │ │ │ │ │ ├── 3 │ │ │ │ │ ├── 4 │ │ │ │ │ └── 5 │ │ │ │ └── no-loop.no-call │ │ │ │ │ ├── 1 │ │ │ │ │ ├── 2 │ │ │ │ │ ├── 3 │ │ │ │ │ ├── 4 │ │ │ │ │ └── 5 │ │ │ │ ├── 3 │ │ │ │ ├── loop.no-call │ │ │ │ │ ├── 2 │ │ │ │ │ ├── 3 │ │ │ │ │ ├── 4 │ │ │ │ │ ├── 5 │ │ │ │ │ └── 6 │ │ │ │ └── no-loop.no-call │ │ │ │ │ ├── 2 │ │ │ │ │ ├── 3 │ │ │ │ │ ├── 4 │ │ │ │ │ ├── 5 │ │ │ │ │ └── 6 │ │ │ │ └── 4 │ │ │ │ ├── loop.no-call │ │ │ │ └── 4 │ │ │ │ └── no-loop.no-call │ │ │ │ └── 2 │ │ ├── multipleCallers │ │ │ ├── linked-crossModule │ │ │ │ └── foo │ │ │ │ │ └── 2 │ │ │ │ │ └── loop.call │ │ │ │ │ ├── 3 │ │ │ │ │ ├── 4 │ │ │ │ │ ├── 5 │ │ │ │ │ ├── 6 │ │ │ │ │ ├── 7 │ │ │ │ │ ├── 8 │ │ │ │ │ ├── 9 │ │ │ │ │ ├── 10 │ │ │ │ │ ├── 11 │ │ │ │ │ ├── 12 │ │ │ │ │ ├── 13 │ │ │ │ │ └── 14 │ │ │ ├── linked-crossModule-crossModule2 │ │ │ │ └── foo │ │ │ │ │ └── 3 │ │ │ │ │ └── loop.call │ │ │ │ │ ├── 3 │ │ │ │ │ ├── 5 │ │ │ │ │ ├── 6 │ │ │ │ │ ├── 7 │ │ │ │ │ ├── 8 │ │ │ │ │ ├── 9 │ │ │ │ │ ├── 10 │ │ │ │ │ ├── 11 │ │ │ │ │ ├── 12 │ │ │ │ │ ├── 13 │ │ │ │ │ ├── 14 │ │ │ │ │ ├── 16 │ │ │ │ │ ├── 17 │ │ │ │ │ ├── 18 │ │ │ │ │ ├── 19 │ │ │ │ │ ├── 20 │ │ │ │ │ ├── 21 │ │ │ │ │ ├── 22 │ │ │ │ │ ├── 23 │ │ │ │ │ ├── 24 │ │ │ │ │ ├── 28 │ │ │ │ │ ├── 29 │ │ │ │ │ ├── 30 │ │ │ │ │ ├── 31 │ │ │ │ │ ├── 32 │ │ │ │ │ ├── 33 │ │ │ │ │ ├── 36 │ │ │ │ │ └── 37 │ │ │ └── foo │ │ │ │ └── 4 │ │ │ │ └── loop.call │ │ │ │ ├── 9 │ │ │ │ ├── 10 │ │ │ │ ├── 11 │ │ │ │ ├── 12 │ │ │ │ ├── 13 │ │ │ │ ├── 14 │ │ │ │ ├── 15 │ │ │ │ ├── 16 │ │ │ │ ├── 17 │ │ │ │ ├── 18 │ │ │ │ ├── 19 │ │ │ │ ├── 20 │ │ │ │ ├── 21 │ │ │ │ └── 22 │ │ └── crossModule │ │ │ └── linked-simple1-O2 │ │ │ └── multipleCrossModuleCaller │ │ │ └── 4 │ │ │ └── loop.call │ │ │ ├── 7 │ │ │ └── 8 │ ├── src │ │ ├── simple2.c │ │ ├── simple3.c │ │ ├── simple2_call.c │ │ ├── switch.c │ │ ├── simple1.c │ │ ├── crossModule2.c │ │ ├── simple2_call2.c │ │ ├── multipleCallers.c │ │ └── crossModule.c │ └── llvm │ │ └── simple_phi.ll ├── Regression │ ├── i8array.ll │ └── unsupportedTy.ll ├── Bench.hs └── Spec.hs ├── ChangeLog.md ├── .gitignore ├── community └── README.md ├── stack.yaml └── src ├── Checkers └── Attack.hs └── LLVMAST └── Interface.hs /.gitmodules: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test/Backend/Types/pointer2.ll: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /ChangeLog.md: -------------------------------------------------------------------------------- 1 | # Changelog for adverse 2 | 3 | ## Unreleased changes 4 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .stack-work/ 2 | *.cabal 3 | *~ 4 | #* 5 | *.prof.html 6 | site 7 | logs 8 | -------------------------------------------------------------------------------- /test/Pathsearch/paths/from_static/simple1-12: -------------------------------------------------------------------------------- 1 | store i32 3, i32* %foo_4, align 4 2 | -------------------------------------------------------------------------------- /test/Pathsearch/paths/simple1-O2/foo/1/loop.call/2: -------------------------------------------------------------------------------- 1 | %foo_6 = icmp sgt i32 %foo_0, 55 2 | -------------------------------------------------------------------------------- /test/Pathsearch/paths/simple1-O2/foo/1/loop.call/3: -------------------------------------------------------------------------------- 1 | %foo_8 = mul nsw i32 %foo_1, 3 2 | -------------------------------------------------------------------------------- /community/README.md: -------------------------------------------------------------------------------- 1 | This directory hosts files and tools maintained by the community. 2 | -------------------------------------------------------------------------------- /test/Pathsearch/paths/simple1-O2/foo/1/loop.call/1: -------------------------------------------------------------------------------- 1 | %foo_4 = icmp sgt i32 %foo_0, %foo_1 2 | -------------------------------------------------------------------------------- /test/Pathsearch/paths/simple1-O2/foo/1/no-loop.no-call/3: -------------------------------------------------------------------------------- 1 | %foo_8 = mul nsw i32 %foo_1, 3 2 | -------------------------------------------------------------------------------- /test/Pathsearch/paths/simple_phi/foo/1/no-loop.no-call/1: -------------------------------------------------------------------------------- 1 | %foo_3 = icmp slt i64 %foo_0, 3 2 | -------------------------------------------------------------------------------- /test/Pathsearch/paths/simple_phi/foo/2/no-loop.no-call/3: -------------------------------------------------------------------------------- 1 | %foo_6 = bitcast i64 33 to i64 2 | -------------------------------------------------------------------------------- /test/Pathsearch/paths/switch-O2/foo/2/loop.call/1: -------------------------------------------------------------------------------- 1 | path-eq %foo_0 = bitcast i32 4 to i32 2 | -------------------------------------------------------------------------------- /test/Pathsearch/paths/from_static/entering-call: -------------------------------------------------------------------------------- 1 | %foo_13 = load i32, i32* %foo_6, align 4 2 | -------------------------------------------------------------------------------- /test/Pathsearch/paths/simple1-O2/foo/1/no-loop.no-call/1: -------------------------------------------------------------------------------- 1 | %foo_4 = icmp sgt i32 %foo_0, %foo_1 2 | -------------------------------------------------------------------------------- /test/Pathsearch/paths/simple1-O2/foo/1/no-loop.no-call/2: -------------------------------------------------------------------------------- 1 | %foo_6 = icmp sgt i32 %foo_0, 55 2 | -------------------------------------------------------------------------------- /test/Pathsearch/paths/recursiveCalls/moreBlocks/1/loop.call/2: -------------------------------------------------------------------------------- 1 | store i32 1, i32* %moreBlocks_5, align 4 2 | -------------------------------------------------------------------------------- /test/Pathsearch/paths/recursiveCalls/moreBlocks/1/loop.call/4: -------------------------------------------------------------------------------- 1 | store i32 5, i32* %moreBlocks_5, align 4 2 | -------------------------------------------------------------------------------- /test/Pathsearch/paths/recursiveCalls/moreBlocks/1/loop.call/6: -------------------------------------------------------------------------------- 1 | store i32 0, i32* %moreBlocks_6, align 4 2 | -------------------------------------------------------------------------------- /test/Pathsearch/paths/recursiveCalls/moreBlocks/2/loop.call/6: -------------------------------------------------------------------------------- 1 | store i32 5, i32* %moreBlocks_5, align 4 2 | -------------------------------------------------------------------------------- /test/Pathsearch/paths/recursiveCalls/moreBlocks/2/loop.call/8: -------------------------------------------------------------------------------- 1 | store i32 0, i32* %moreBlocks_6, align 4 2 | -------------------------------------------------------------------------------- /test/Pathsearch/paths/recursiveCalls/moreBlocks/1/loop.call/5: -------------------------------------------------------------------------------- 1 | store i32 11, i32* %moreBlocks_5, align 4 2 | -------------------------------------------------------------------------------- /test/Pathsearch/paths/recursiveCalls/moreBlocks/2/loop.call/7: -------------------------------------------------------------------------------- 1 | store i32 11, i32* %moreBlocks_5, align 4 2 | -------------------------------------------------------------------------------- /test/Pathsearch/paths/recursiveCalls/simple/1/loop.call/3: -------------------------------------------------------------------------------- 1 | %simple_12 = load i32, i32* %simple_4, align 4 2 | -------------------------------------------------------------------------------- /test/Pathsearch/paths/recursiveCalls/moreBlocks/1/loop.call/12: -------------------------------------------------------------------------------- 1 | %moreBlocks_40 = load i32, i32* %moreBlocks_4, align 4 2 | -------------------------------------------------------------------------------- /test/Pathsearch/paths/switch-O2/foo/1/loop.call/1: -------------------------------------------------------------------------------- 1 | track-ops LocalReference (IntegerType {typeBits = 32}) (Name "foo_0") 2 | -------------------------------------------------------------------------------- /test/Pathsearch/paths/simple1-O2/foo/2/loop.call/5: -------------------------------------------------------------------------------- 1 | %foo_8 = mul nsw i32 %foo_1, 3 2 | %foo_13 = bitcast i32 %foo_8 to i32 3 | -------------------------------------------------------------------------------- /test/Pathsearch/paths/from_static/simple1-O2-9: -------------------------------------------------------------------------------- 1 | %foo_10 = add nsw i32 %foo_2, 53 2 | %foo_11 = mul nsw i32 %foo_10, %foo_0 3 | -------------------------------------------------------------------------------- /test/Pathsearch/paths/simple1-O2/foo/1/loop.call/4: -------------------------------------------------------------------------------- 1 | %foo_10 = add nsw i32 %foo_2, 53 2 | %foo_11 = mul nsw i32 %foo_10, %foo_0 3 | -------------------------------------------------------------------------------- /test/Pathsearch/paths/recursiveCalls/nestedRecursive/1/loop.call/3: -------------------------------------------------------------------------------- 1 | %nestedRecursive_12 = load i32, i32* %nestedRecursive_4, align 4 2 | -------------------------------------------------------------------------------- /test/Pathsearch/paths/simple1-O2/foo/2/no-loop.no-call/5: -------------------------------------------------------------------------------- 1 | %foo_8 = mul nsw i32 %foo_1, 3 2 | %foo_13 = bitcast i32 %foo_8 to i32 3 | -------------------------------------------------------------------------------- /test/Pathsearch/paths/simple_phi/foo/1/no-loop.no-call/2: -------------------------------------------------------------------------------- 1 | par-eqs [[%foo_6 = bitcast i64 22 to i64], [%foo_6 = bitcast i64 33 to i64]] 2 | -------------------------------------------------------------------------------- /test/Pathsearch/paths/simple_phi/foo/2/no-loop.no-call/1: -------------------------------------------------------------------------------- 1 | %foo_3 = icmp slt i64 %foo_0, 3 2 | path-eq %foo_3 = bitcast i1 1 to i1 3 | -------------------------------------------------------------------------------- /test/Pathsearch/paths/simple1-O2/foo/1/no-loop.no-call/4: -------------------------------------------------------------------------------- 1 | %foo_10 = add nsw i32 %foo_2, 53 2 | %foo_11 = mul nsw i32 %foo_10, %foo_0 3 | -------------------------------------------------------------------------------- /test/Pathsearch/src/simple2.c: -------------------------------------------------------------------------------- 1 | int foo(int x, int y, int z) { 2 | for (int i =0; i < x; i++) { 3 | y += z* 3; 4 | } 5 | return y; 6 | } 7 | -------------------------------------------------------------------------------- /test/Pathsearch/paths/recursiveCalls/moreBlocks/2/loop.call/3: -------------------------------------------------------------------------------- 1 | store i32 1, i32* %moreBlocks_5, align 4 2 | store i32 0, i32* %moreBlocks_6, align 4 3 | -------------------------------------------------------------------------------- /test/Pathsearch/paths/recursiveCalls/moreBlocks/3/loop.call/7: -------------------------------------------------------------------------------- 1 | store i32 5, i32* %moreBlocks_5, align 4 2 | store i32 0, i32* %moreBlocks_6, align 4 3 | -------------------------------------------------------------------------------- /test/Pathsearch/paths/recursiveCalls/moreBlocks/3/loop.call/8: -------------------------------------------------------------------------------- 1 | store i32 11, i32* %moreBlocks_5, align 4 2 | store i32 0, i32* %moreBlocks_6, align 4 3 | -------------------------------------------------------------------------------- /test/Pathsearch/paths/from_static/simple1-O2-3: -------------------------------------------------------------------------------- 1 | %foo_4 = icmp sgt i32 %foo_0, %foo_1 2 | track-ops LocalReference (IntegerType {typeBits = 1}) (Name "foo_4") 3 | -------------------------------------------------------------------------------- /test/Pathsearch/paths/recursiveCalls/simple/1/loop.call/2: -------------------------------------------------------------------------------- 1 | %simple_10 = load i32, i32* %simple_4, align 4 2 | store i32 %simple_10, i32* %simple_2, align 4 3 | -------------------------------------------------------------------------------- /test/Pathsearch/paths/switch-O2/foo/1/loop.call/2: -------------------------------------------------------------------------------- 1 | %foo_6 = mul nsw i32 %foo_1, 3 2 | track-ops LocalReference (IntegerType {typeBits = 32}) (Name "foo_6") 3 | -------------------------------------------------------------------------------- /test/Pathsearch/paths/switch-O2/foo/2/loop.call/4: -------------------------------------------------------------------------------- 1 | %foo_8 = bitcast i32 %foo_2 to i32 2 | track-ops LocalReference (IntegerType {typeBits = 32}) (Name "foo_8") 3 | -------------------------------------------------------------------------------- /test/Pathsearch/paths/from_static/simple1-25: -------------------------------------------------------------------------------- 1 | %foo_26 = load i32, i32* %foo_4, align 4 2 | track-ops LocalReference (IntegerType {typeBits = 32}) (Name "foo_26") 3 | -------------------------------------------------------------------------------- /test/Pathsearch/paths/recursiveCalls/simple/1/loop.no-call/2: -------------------------------------------------------------------------------- 1 | %simple_10 = load i32, i32* %simple_4, align 4 2 | store i32 %simple_10, i32* %simple_2, align 4 3 | -------------------------------------------------------------------------------- /test/Pathsearch/paths/simple1-O2/foo/2/loop.call/1: -------------------------------------------------------------------------------- 1 | %foo_4 = icmp sgt i32 %foo_0, %foo_1 2 | path-eq %foo_4 = bitcast i1 0 to i1 3 | %foo_6 = icmp sgt i32 %foo_0, 55 4 | -------------------------------------------------------------------------------- /test/Pathsearch/paths/simple1-O2/foo/2/loop.call/3: -------------------------------------------------------------------------------- 1 | %foo_6 = icmp sgt i32 %foo_0, 55 2 | path-eq %foo_6 = bitcast i1 1 to i1 3 | %foo_8 = mul nsw i32 %foo_1, 3 4 | -------------------------------------------------------------------------------- /test/Pathsearch/src/simple3.c: -------------------------------------------------------------------------------- 1 | int foo() { 2 | int y = 0; 3 | int z = 44; 4 | for (int i = 0; i < 3; i++) { 5 | y += z * 3; 6 | } 7 | return y; 8 | } 9 | -------------------------------------------------------------------------------- /test/Pathsearch/paths/simple1-O2/foo/2/loop.call/2: -------------------------------------------------------------------------------- 1 | %foo_4 = icmp sgt i32 %foo_0, %foo_1 2 | path-eq %foo_4 = bitcast i1 1 to i1 3 | %foo_13 = bitcast i32 3 to i32 4 | -------------------------------------------------------------------------------- /test/Pathsearch/paths/simple1-O2/foo/2/no-loop.no-call/3: -------------------------------------------------------------------------------- 1 | %foo_6 = icmp sgt i32 %foo_0, 55 2 | path-eq %foo_6 = bitcast i1 1 to i1 3 | %foo_8 = mul nsw i32 %foo_1, 3 4 | -------------------------------------------------------------------------------- /test/Pathsearch/paths/simple_phi/foo/2/no-loop.no-call/2: -------------------------------------------------------------------------------- 1 | %foo_3 = icmp slt i64 %foo_0, 3 2 | path-eq %foo_3 = bitcast i1 0 to i1 3 | %foo_6 = bitcast i64 22 to i64 4 | -------------------------------------------------------------------------------- /test/Pathsearch/paths/simple_phi/foo/3/no-loop.no-call/1: -------------------------------------------------------------------------------- 1 | %foo_3 = icmp slt i64 %foo_0, 3 2 | path-eq %foo_3 = bitcast i1 1 to i1 3 | %foo_6 = bitcast i64 33 to i64 4 | -------------------------------------------------------------------------------- /test/Pathsearch/paths/recursiveCalls/notTailRec/1/loop.call/3: -------------------------------------------------------------------------------- 1 | %notTailRec_11 = load i32, i32* %notTailRec_3, align 4 2 | %notTailRec_12 = sub nsw i32 %notTailRec_11, 2 3 | -------------------------------------------------------------------------------- /test/Pathsearch/paths/simple1-O2/foo/1/loop.call/5: -------------------------------------------------------------------------------- 1 | par-eqs [[%foo_13 = bitcast i32 %foo_8 to i32], [%foo_13 = bitcast i32 %foo_11 to i32], [%foo_13 = bitcast i32 3 to i32]] 2 | -------------------------------------------------------------------------------- /test/Pathsearch/paths/simple1-O2/foo/2/loop.call/6: -------------------------------------------------------------------------------- 1 | %foo_10 = add nsw i32 %foo_2, 53 2 | %foo_11 = mul nsw i32 %foo_10, %foo_0 3 | %foo_13 = bitcast i32 %foo_11 to i32 4 | -------------------------------------------------------------------------------- /test/Pathsearch/paths/simple1-O2/foo/2/loop.call/7: -------------------------------------------------------------------------------- 1 | %foo_10 = add nsw i32 %foo_2, 53 2 | %foo_11 = mul nsw i32 %foo_10, %foo_0 3 | %foo_13 = bitcast i32 %foo_11 to i32 4 | -------------------------------------------------------------------------------- /test/Pathsearch/paths/simple1-O2/foo/2/no-loop.no-call/1: -------------------------------------------------------------------------------- 1 | %foo_4 = icmp sgt i32 %foo_0, %foo_1 2 | path-eq %foo_4 = bitcast i1 0 to i1 3 | %foo_6 = icmp sgt i32 %foo_0, 55 4 | -------------------------------------------------------------------------------- /test/Pathsearch/paths/simple1-O2/foo/2/no-loop.no-call/2: -------------------------------------------------------------------------------- 1 | %foo_4 = icmp sgt i32 %foo_0, %foo_1 2 | path-eq %foo_4 = bitcast i1 1 to i1 3 | %foo_13 = bitcast i32 3 to i32 4 | -------------------------------------------------------------------------------- /test/Pathsearch/paths/nodeuaffp2/myFree/3/loop.call/1: -------------------------------------------------------------------------------- 1 | %myFree_pointer = bitcast i8* zeroinitializer to i8* 2 | %myFree_nextpointer = getelementptr i8, i8* %myFree_pointer, i32 1 3 | -------------------------------------------------------------------------------- /test/Pathsearch/paths/simple1-O2/foo/1/no-loop.no-call/5: -------------------------------------------------------------------------------- 1 | par-eqs [[%foo_13 = bitcast i32 %foo_8 to i32], [%foo_13 = bitcast i32 %foo_11 to i32], [%foo_13 = bitcast i32 3 to i32]] 2 | -------------------------------------------------------------------------------- /test/Pathsearch/paths/simple1-O2/foo/2/no-loop.no-call/6: -------------------------------------------------------------------------------- 1 | %foo_10 = add nsw i32 %foo_2, 53 2 | %foo_11 = mul nsw i32 %foo_10, %foo_0 3 | %foo_13 = bitcast i32 %foo_11 to i32 4 | -------------------------------------------------------------------------------- /test/Regression/i8array.ll: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | define i8 @dumbarray (i8) { 5 | %getelem = extractvalue { i8 } zeroinitializer, 0 6 | %sum = add i8 %0, %getelem 7 | ret i8 %sum 8 | } -------------------------------------------------------------------------------- /test/Pathsearch/paths/nodeuaffp2/myFree/3/loop.call/3: -------------------------------------------------------------------------------- 1 | %myFree_pointer = bitcast i8* %myFree_nextpointer to i8* 2 | %myFree_nextpointer_1 = getelementptr i8, i8* %myFree_pointer, i32 1 3 | -------------------------------------------------------------------------------- /test/Pathsearch/paths/recursiveCalls/simple/1/loop.call/4: -------------------------------------------------------------------------------- 1 | %simple_15 = load i32, i32* %simple_2, align 4 2 | track-ops LocalReference (IntegerType {typeBits = 32}) (Name "simple_15") 3 | -------------------------------------------------------------------------------- /test/Pathsearch/paths/simple1-O2/linked-crossModule/foo/2/loop.call/3: -------------------------------------------------------------------------------- 1 | %foo_6 = icmp sgt i32 %foo_0, 55 2 | path-eq %foo_6 = bitcast i1 1 to i1 3 | %foo_8 = mul nsw i32 %foo_1, 3 4 | -------------------------------------------------------------------------------- /test/Pathsearch/paths/recursiveCalls/mutRecursiveA/1/loop.call/3: -------------------------------------------------------------------------------- 1 | %mutRecursiveA_9 = load i32, i32* %mutRecursiveA_3, align 4 2 | %mutRecursiveA_10 = add nsw i32 %mutRecursiveA_9, 11 3 | -------------------------------------------------------------------------------- /test/Pathsearch/paths/recursiveCalls/simple/1/loop.no-call/4: -------------------------------------------------------------------------------- 1 | %simple_15 = load i32, i32* %simple_2, align 4 2 | track-ops LocalReference (IntegerType {typeBits = 32}) (Name "simple_15") 3 | -------------------------------------------------------------------------------- /test/Pathsearch/paths/recursiveCalls/mutRecursiveA/1/loop.call/2: -------------------------------------------------------------------------------- 1 | %mutRecursiveA_7 = load i32, i32* %mutRecursiveA_3, align 4 2 | store i32 %mutRecursiveA_7, i32* %mutRecursiveA_2, align 4 3 | -------------------------------------------------------------------------------- /test/Pathsearch/paths/from_static/uncondbranch: -------------------------------------------------------------------------------- 1 | store i32 3, i32* %foo_4, align 4 2 | %foo_26 = load i32, i32* %foo_4, align 4 3 | track-ops LocalReference (IntegerType {typeBits = 32}) (Name "foo_26") 4 | -------------------------------------------------------------------------------- /test/Pathsearch/paths/recursiveCalls/moreBlocks/1/loop.call/13: -------------------------------------------------------------------------------- 1 | %moreBlocks_43 = load i32, i32* %moreBlocks_2, align 4 2 | track-ops LocalReference (IntegerType {typeBits = 32}) (Name "moreBlocks_43") 3 | -------------------------------------------------------------------------------- /test/Pathsearch/paths/recursiveCalls/nestedRecursive/1/loop.call/2: -------------------------------------------------------------------------------- 1 | %nestedRecursive_10 = load i32, i32* %nestedRecursive_4, align 4 2 | store i32 %nestedRecursive_10, i32* %nestedRecursive_2, align 4 3 | -------------------------------------------------------------------------------- /test/Pathsearch/paths/recursiveCalls/notTailRec/1/loop.call/6: -------------------------------------------------------------------------------- 1 | %notTailRec_23 = load i32, i32* %notTailRec_2, align 4 2 | track-ops LocalReference (IntegerType {typeBits = 32}) (Name "notTailRec_23") 3 | -------------------------------------------------------------------------------- /test/Pathsearch/paths/simple1-O2/foo/3/loop.call/1: -------------------------------------------------------------------------------- 1 | %foo_6 = icmp sgt i32 %foo_0, 55 2 | path-eq %foo_6 = bitcast i1 1 to i1 3 | %foo_8 = mul nsw i32 %foo_1, 3 4 | %foo_13 = bitcast i32 %foo_8 to i32 5 | -------------------------------------------------------------------------------- /test/Pathsearch/paths/switch-O2/foo/2/loop.call/3: -------------------------------------------------------------------------------- 1 | path-eq %foo_0 = bitcast i32 3 to i32 2 | %foo_8 = bitcast i32 %foo_0 to i32 3 | track-ops LocalReference (IntegerType {typeBits = 32}) (Name "foo_8") 4 | -------------------------------------------------------------------------------- /test/Pathsearch/paths/switch-O2/foo/3/loop.call/1: -------------------------------------------------------------------------------- 1 | path-eq %foo_0 = bitcast i32 4 to i32 2 | %foo_8 = bitcast i32 %foo_2 to i32 3 | track-ops LocalReference (IntegerType {typeBits = 32}) (Name "foo_8") 4 | -------------------------------------------------------------------------------- /test/Pathsearch/paths/simple1-O2/foo/2/loop.call/4: -------------------------------------------------------------------------------- 1 | %foo_6 = icmp sgt i32 %foo_0, 55 2 | path-eq %foo_6 = bitcast i1 0 to i1 3 | %foo_10 = add nsw i32 %foo_2, 53 4 | %foo_11 = mul nsw i32 %foo_10, %foo_0 5 | -------------------------------------------------------------------------------- /test/Pathsearch/paths/simple1-O2/foo/3/no-loop.no-call/3: -------------------------------------------------------------------------------- 1 | %foo_6 = icmp sgt i32 %foo_0, 55 2 | path-eq %foo_6 = bitcast i1 1 to i1 3 | %foo_8 = mul nsw i32 %foo_1, 3 4 | %foo_13 = bitcast i32 %foo_8 to i32 5 | -------------------------------------------------------------------------------- /test/Pathsearch/paths/recursiveCalls/mutRecursiveA/1/loop.call/4: -------------------------------------------------------------------------------- 1 | %mutRecursiveA_13 = load i32, i32* %mutRecursiveA_2, align 4 2 | track-ops LocalReference (IntegerType {typeBits = 32}) (Name "mutRecursiveA_13") 3 | -------------------------------------------------------------------------------- /test/Pathsearch/paths/simple1-O2/foo/2/no-loop.no-call/4: -------------------------------------------------------------------------------- 1 | %foo_6 = icmp sgt i32 %foo_0, 55 2 | path-eq %foo_6 = bitcast i1 0 to i1 3 | %foo_10 = add nsw i32 %foo_2, 53 4 | %foo_11 = mul nsw i32 %foo_10, %foo_0 5 | -------------------------------------------------------------------------------- /test/Pathsearch/paths/simple2_call/foo/2/loop.call/4: -------------------------------------------------------------------------------- 1 | %foo_13 = load i32, i32* %foo_6, align 4 2 | %bar_0 = bitcast i32 %foo_13 to i32 3 | %bar_1 = bitcast i32 3 to i32 4 | %bar_3 = mul nsw i32 %bar_0, %bar_1 5 | -------------------------------------------------------------------------------- /test/Pathsearch/paths/simple2_call2/foo/2/loop.call/4: -------------------------------------------------------------------------------- 1 | %foo_13 = load i32, i32* %foo_6, align 4 2 | %bar_0 = bitcast i32 %foo_13 to i32 3 | %bar_1 = bitcast i32 3 to i32 4 | %bar_3 = icmp slt i32 %bar_0, %bar_1 5 | -------------------------------------------------------------------------------- /test/Bench.hs: -------------------------------------------------------------------------------- 1 | module Main where 2 | 3 | import AllTests (allTests) 4 | import BenchUtils 5 | import Criterion.Main 6 | 7 | main :: IO () 8 | main = defaultMain $ map getBench allTests 9 | -------------------------------------------------------------------------------- /test/Pathsearch/paths/simple1-O2/linked-crossModule/foo/2/loop.call/5: -------------------------------------------------------------------------------- 1 | %foo_8 = mul nsw i32 %foo_1, 3 2 | %foo_13 = bitcast i32 %foo_8 to i32 3 | track-ops LocalReference (IntegerType {typeBits = 32}) (Name "foo_13") 4 | -------------------------------------------------------------------------------- /test/Pathsearch/paths/simple2_call/foo/2/no-loop.call/4: -------------------------------------------------------------------------------- 1 | %foo_13 = load i32, i32* %foo_6, align 4 2 | %bar_0 = bitcast i32 %foo_13 to i32 3 | %bar_1 = bitcast i32 3 to i32 4 | %bar_3 = mul nsw i32 %bar_0, %bar_1 5 | -------------------------------------------------------------------------------- /test/Pathsearch/paths/switch-O2/foo/1/loop.call/3: -------------------------------------------------------------------------------- 1 | par-eqs [ [ %foo_8 = bitcast i32 %foo_2 to i32 ],[ %foo_8 = bitcast i32 %foo_0 to i32 ] ] 2 | track-ops LocalReference (IntegerType {typeBits = 32}) (Name "foo_8") 3 | -------------------------------------------------------------------------------- /test/Pathsearch/paths/recursiveCalls/doubleRecursive/1/loop.call/4: -------------------------------------------------------------------------------- 1 | %doubleRecursive_30 = load i32, i32* %doubleRecursive_3, align 4 2 | track-ops LocalReference (IntegerType {typeBits = 32}) (Name "doubleRecursive_30") 3 | -------------------------------------------------------------------------------- /test/Pathsearch/paths/recursiveCalls/nestedRecursive/1/loop.call/4: -------------------------------------------------------------------------------- 1 | %nestedRecursive_15 = load i32, i32* %nestedRecursive_2, align 4 2 | track-ops LocalReference (IntegerType {typeBits = 32}) (Name "nestedRecursive_15") 3 | -------------------------------------------------------------------------------- /test/Pathsearch/paths/recursiveCalls/simple/1/loop.no-call/3: -------------------------------------------------------------------------------- 1 | %simple_12 = load i32, i32* %simple_4, align 4 2 | %simple_13 = call ccc i32 @simple(i32 %simple_12) 3 | store i32 %simple_13, i32* %simple_2, align 4 4 | -------------------------------------------------------------------------------- /test/Pathsearch/paths/recursiveCalls/notTailRec/1/loop.call/2: -------------------------------------------------------------------------------- 1 | %notTailRec_8 = load i32, i32* %notTailRec_3, align 4 2 | %notTailRec_9 = add nsw i32 %notTailRec_8, 10 3 | store i32 %notTailRec_9, i32* %notTailRec_2, align 4 4 | -------------------------------------------------------------------------------- /test/Pathsearch/paths/recursiveCalls/threeWayMutRecursiveA/1/loop.call/3: -------------------------------------------------------------------------------- 1 | %threeWayMutRecursiveA_10 = load i32, i32* %threeWayMutRecursiveA_3, align 4 2 | %threeWayMutRecursiveA_11 = add nsw i32 %threeWayMutRecursiveA_10, 1 3 | -------------------------------------------------------------------------------- /test/Pathsearch/paths/simple1-O2/linked-crossModule/foo/2/loop.call/4: -------------------------------------------------------------------------------- 1 | %foo_6 = icmp sgt i32 %foo_0, 55 2 | path-eq %foo_6 = bitcast i1 0 to i1 3 | %foo_10 = add nsw i32 %foo_2, 53 4 | %foo_11 = mul nsw i32 %foo_10, %foo_0 5 | -------------------------------------------------------------------------------- /test/Pathsearch/paths/recursiveCalls/moreBlocks/1/loop.call/8: -------------------------------------------------------------------------------- 1 | %moreBlocks_25 = load i32, i32* %moreBlocks_4, align 4 2 | %moreBlocks_26 = add nsw i32 %moreBlocks_25, 1 3 | store i32 %moreBlocks_26, i32* %moreBlocks_4, align 4 4 | -------------------------------------------------------------------------------- /test/Pathsearch/paths/recursiveCalls/moreBlocks/1/loop.call/9: -------------------------------------------------------------------------------- 1 | %moreBlocks_28 = load i32, i32* %moreBlocks_6, align 4 2 | %moreBlocks_29 = add nsw i32 %moreBlocks_28, 1 3 | store i32 %moreBlocks_29, i32* %moreBlocks_6, align 4 4 | -------------------------------------------------------------------------------- /test/Pathsearch/paths/recursiveCalls/notTailRec/1/loop.call/4: -------------------------------------------------------------------------------- 1 | %notTailRec_17 = load i32, i32* %notTailRec_4, align 4 2 | %notTailRec_18 = mul nsw i32 %notTailRec_17, 2 3 | store i32 %notTailRec_18, i32* %notTailRec_2, align 4 4 | -------------------------------------------------------------------------------- /test/Pathsearch/paths/recursiveCalls/notTailRec/1/loop.call/5: -------------------------------------------------------------------------------- 1 | %notTailRec_20 = load i32, i32* %notTailRec_4, align 4 2 | %notTailRec_21 = add nsw i32 %notTailRec_20, 5 3 | store i32 %notTailRec_21, i32* %notTailRec_2, align 4 4 | -------------------------------------------------------------------------------- /test/Pathsearch/paths/recursiveCalls/threeWayMutRecursiveA/1/loop.call/2: -------------------------------------------------------------------------------- 1 | %threeWayMutRecursiveA_8 = load i32, i32* %threeWayMutRecursiveA_3, align 4 2 | store i32 %threeWayMutRecursiveA_8, i32* %threeWayMutRecursiveA_2, align 4 3 | -------------------------------------------------------------------------------- /test/Pathsearch/paths/recursiveCalls/threeWayMutRecursiveA/1/loop.call/4: -------------------------------------------------------------------------------- 1 | %threeWayMutRecursiveA_14 = load i32, i32* %threeWayMutRecursiveA_2, align 4 2 | track-ops LocalReference (IntegerType {typeBits = 32}) (Name "threeWayMutRecursiveA_14") 3 | -------------------------------------------------------------------------------- /test/Pathsearch/paths/switch-O2/foo/2/loop.call/2: -------------------------------------------------------------------------------- 1 | path-neq %foo_0 = bitcast i32 3 to i32 2 | path-neq %foo_0 = bitcast i32 4 to i32 3 | %foo_6 = mul nsw i32 %foo_1, 3 4 | track-ops LocalReference (IntegerType {typeBits = 32}) (Name "foo_6") 5 | -------------------------------------------------------------------------------- /test/Pathsearch/paths/simple1-O2/foo/3/loop.call/3: -------------------------------------------------------------------------------- 1 | %foo_4 = icmp sgt i32 %foo_0, %foo_1 2 | path-eq %foo_4 = bitcast i1 0 to i1 3 | %foo_6 = icmp sgt i32 %foo_0, 55 4 | path-eq %foo_6 = bitcast i1 1 to i1 5 | %foo_8 = mul nsw i32 %foo_1, 3 6 | -------------------------------------------------------------------------------- /test/Pathsearch/paths/from_static/simple1-O2-12: -------------------------------------------------------------------------------- 1 | par-eqs [ [ %foo_13 = bitcast i32 %foo_8 to i32 ],[ %foo_13 = bitcast i32 %foo_11 to i32 ],[ %foo_13 = bitcast i32 3 to i32 ] ] 2 | track-ops LocalReference (IntegerType {typeBits = 32}) (Name "foo_13") 3 | -------------------------------------------------------------------------------- /test/Pathsearch/paths/recursiveCalls/moreBlocks/1/loop.call/7: -------------------------------------------------------------------------------- 1 | %moreBlocks_22 = load i32, i32* %moreBlocks_6, align 4 2 | %moreBlocks_23 = icmp slt i32 %moreBlocks_22, 2 3 | track-ops LocalReference (IntegerType {typeBits = 1}) (Name "moreBlocks_23") 4 | -------------------------------------------------------------------------------- /test/Pathsearch/paths/simple1-O2/foo/3/loop.call/2: -------------------------------------------------------------------------------- 1 | %foo_6 = icmp sgt i32 %foo_0, 55 2 | path-eq %foo_6 = bitcast i1 0 to i1 3 | %foo_10 = add nsw i32 %foo_2, 53 4 | %foo_11 = mul nsw i32 %foo_10, %foo_0 5 | %foo_13 = bitcast i32 %foo_11 to i32 6 | -------------------------------------------------------------------------------- /test/Pathsearch/paths/simple1-O2/foo/3/no-loop.no-call/1: -------------------------------------------------------------------------------- 1 | %foo_4 = icmp sgt i32 %foo_0, %foo_1 2 | path-eq %foo_4 = bitcast i1 0 to i1 3 | %foo_6 = icmp sgt i32 %foo_0, 55 4 | path-eq %foo_6 = bitcast i1 1 to i1 5 | %foo_8 = mul nsw i32 %foo_1, 3 6 | -------------------------------------------------------------------------------- /test/Pathsearch/src/simple2_call.c: -------------------------------------------------------------------------------- 1 | int bar(int x, int y); 2 | int foo(int x, int y, int z) { 3 | for (int i =0; i < x; i++) { 4 | y += bar(z, 3); 5 | } 6 | return y; 7 | } 8 | 9 | int bar(int x, int y) { 10 | return x*y; 11 | } 12 | -------------------------------------------------------------------------------- /test/Pathsearch/src/switch.c: -------------------------------------------------------------------------------- 1 | int foo(int x, int y, int z) { 2 | switch (x) { 3 | case 3: 4 | return 3; 5 | case 4: 6 | return z; 7 | default: 8 | if (x > 55) { 9 | return y*3; 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /test/Pathsearch/paths/simple1-O2/foo/3/no-loop.no-call/4: -------------------------------------------------------------------------------- 1 | %foo_6 = icmp sgt i32 %foo_0, 55 2 | path-eq %foo_6 = bitcast i1 0 to i1 3 | %foo_10 = add nsw i32 %foo_2, 53 4 | %foo_11 = mul nsw i32 %foo_10, %foo_0 5 | %foo_13 = bitcast i32 %foo_11 to i32 6 | -------------------------------------------------------------------------------- /test/Pathsearch/paths/simple1-O2/linked-crossModule/foo/2/loop.call/1: -------------------------------------------------------------------------------- 1 | %foo_4 = icmp sgt i32 %foo_0, %foo_1 2 | path-eq %foo_4 = bitcast i1 0 to i1 3 | %foo_6 = icmp sgt i32 %foo_0, 55 4 | track-ops LocalReference (IntegerType {typeBits = 1}) (Name "foo_6") 5 | -------------------------------------------------------------------------------- /test/Pathsearch/paths/simple1-O2/linked-crossModule/foo/2/loop.call/2: -------------------------------------------------------------------------------- 1 | %foo_4 = icmp sgt i32 %foo_0, %foo_1 2 | path-eq %foo_4 = bitcast i1 1 to i1 3 | %foo_13 = bitcast i32 3 to i32 4 | track-ops LocalReference (IntegerType {typeBits = 32}) (Name "foo_13") 5 | -------------------------------------------------------------------------------- /test/Pathsearch/paths/simple2_call2/foo/3/loop.call/5: -------------------------------------------------------------------------------- 1 | %foo_13 = load i32, i32* %foo_6, align 4 2 | %bar_0 = bitcast i32 %foo_13 to i32 3 | %bar_1 = bitcast i32 3 to i32 4 | %bar_3 = icmp slt i32 %bar_0, %bar_1 5 | path-eq %bar_3 = bitcast i1 0 to i1 6 | -------------------------------------------------------------------------------- /test/Pathsearch/llvm/simple_phi.ll: -------------------------------------------------------------------------------- 1 | define i64 @foo(i64, i64) { 2 | %3 = icmp slt i64 %0, 3 3 | br i1 %3, label %4, label %5 4 | 5 | ;