================
Comment at: lib/CodeGen/CGExpr.cpp:2306
@@ -2304,2 +2305,3 @@
     llvm::Value *Check = Checked[i].first;
+    // -fsanitize-trap= overrides -fsanitize-recover=.
     llvm::Value *&Cond =
----------------
Should we clarify this behavior in the docs?
We can also handle this case in the driver, so that frontend can assert that 
each sanitizer check is listed in at most one of `-fsanitize-recover=` and 
`-fsanitize-trap=` lists. (i.e. intersection of `SanitizeTrap` and 
`SanitizeRecover` is empty).

Another interesting question is handling the relative order of 
`-fsanitize-trap=` and `-fsanitize-recover=` flags. Now we parse them 
completely independently, but this may not be the best solution. Consider global
  CFLAGS='-fsanitize=undefined -fsanitize-trap=undefined'
and now I want to compile a special program, and enable recovery for alignment 
issues. Using
  clang++ $(CFLAGS) -fsanitize-recover=alignment a.cc
wouldn't work, I would have to write
  clang++ $(CFLAGS) -fno-sanitize-trap=alignment -fsanitize-recover=alignment 
a.cc
Do you think we should instead parse `-fsanitize-trap` and `-fsanitize-recover` 
in a single pass, and maintain the recovery setting for each sanitizer kind to 
be one of
  * diagnosed, recoverable
  * diagnosed, unrecoverable/fatal
  * undiagnosed, trapping.
?


================
Comment at: lib/Driver/SanitizerArgs.cpp:37
@@ -36,1 +36,3 @@
   NeedsLTO = CFI,
+  TrappingSupported = (Undefined & ~Vptr) | UndefinedGroup |
+                      UnsignedIntegerOverflow | LocalBounds,
----------------
Yep, let's use `setGroupBits`. Specifying the groups here manually is 
error-prone - one can easily forget to change this part if `Sanitizers.def` is 
re-orrganized.

================
Comment at: lib/Driver/SanitizerArgs.cpp:503
@@ -462,2 +502,3 @@
   RecoverableSanitizers.Mask |= RecoverableKinds;
+  TrapSanitizers.Mask |= TrappingKinds;
 }
----------------
Note that you can also strip out sanitizers which were not enabled eventually 
from here
  TrappingKinds &= Kinds;
as we do for recoverable sanitizers.

http://reviews.llvm.org/D10464

EMAIL PREFERENCES
  http://reviews.llvm.org/settings/panel/emailpreferences/



_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to