[PATCH] D133157: Add -sanitizer-coverage-control-flow
Navid Emamdoost via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Thu Sep 1 16:43:08 PDT 2022
Navidem marked 4 inline comments as done.
Navidem added inline comments.
================
Comment at: llvm/lib/Transforms/Instrumentation/SanitizerCoverage.cpp:1055
+ for (auto &BB: F) {
+ // blockaddress may not be used on function's entry block.
+ if (&BB == &F.getEntryBlock())
----------------
kcc wrote:
> "can not" ?
Actually I started with "can not", but saw the error message from opt saying "may not". Changing anyways :)
================
Comment at: llvm/lib/Transforms/Instrumentation/SanitizerCoverage.cpp:1062
+ for (auto SuccBB : successors(&BB)) {
+ if (SuccBB == &F.getEntryBlock())
+ CFs.push_back((Constant *)IRB.CreatePointerCast(&F, IntptrPtrTy));
----------------
kcc wrote:
> hmmm... is it even possible?
I was being cautious here for the branches (like `goto`) to the beginning of the function.
But later once checked a concrete example, I was not able to produce such scenario.
something like the following code breaks the entry basic block:
```
int foo (int x) {
top:
x += 5;
if (x > 5)
bar(x);
else
goto top;
return x;
}
```
```
define dso_local i32 @foo(i32 noundef %x) #0 {
entry:
%x.addr = alloca i32, align 4
store i32 %x, ptr %x.addr, align 4
br label %top
top: ; preds = %if.else, %entry
%0 = load i32, ptr %x.addr, align 4
%add = add nsw i32 %0, 5
store i32 %add, ptr %x.addr, align 4
%1 = load i32, ptr %x.addr, align 4
%cmp = icmp sgt i32 %1, 5
br i1 %cmp, label %if.then, label %if.else
if.then: ; preds = %top
%2 = load i32, ptr %x.addr, align 4
call void @bar(i32 noundef %2)
br label %if.end
if.else: ; preds = %top
br label %top
if.end: ; preds = %if.then
%3 = load i32, ptr %x.addr, align 4
ret i32 %3
}
```
If you think it is impossible, I am fine with simplifying the code here.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D133157/new/
https://reviews.llvm.org/D133157
More information about the llvm-commits
mailing list