[PATCH] D30762: [ubsan] Add a nullability sanitizer
Jonathan Roelofs via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Thu Mar 9 07:42:23 PST 2017
jroelofs added inline comments.
================
Comment at: lib/CodeGen/CGDecl.cpp:1911
+ if (auto Nullability = Ty->getNullability(getContext())) {
+ if (Nullability && *Nullability == NullabilityKind::NonNull) {
+ SanitizerScope SanScope(this);
----------------
aprantl wrote:
> Is this a typo, or do you. really want `Nullability` here? Asking because everywhere else there is a check for `! Nullability && *Nullability == NullabilityKind::NonNull`.
> Ans should this condition be factored out?
Could just stick `if (auto Nullability =` in there, and remove the `Nullability &&`.
================
Comment at: lib/CodeGen/CodeGenFunction.cpp:829
+ if (auto Nullability = FnRetTy->getNullability(getContext()))
+ if (Nullability && *Nullability == NullabilityKind::NonNull)
+ if (!(SanOpts.has(SanitizerKind::ReturnsNonnullAttribute) &&
----------------
Hasn't the `if (auto Nullability =` already checked the truthiness of the var, making the `Nullability &&` part of the second check redundant?
================
Comment at: test/CodeGenObjC/ubsan-null-retval.m:14
+ // CHECK-NEXT: [[ICMP:%.*]] = icmp ne i32* [[ARG]], null, !nosanitize
+ // CHECK-NEXT: br i1 [[ICMP]], label %[[CONT:.+]], label %[[HANDLE:[^,]+]]
+ // CHECK: [[HANDLE]]:
----------------
The:
```
alloca
store
load
```
part of this looks like it's just making extra work for mem2reg. Is the alloca actually necessary?
https://reviews.llvm.org/D30762
More information about the cfe-commits
mailing list