================
Comment at: lib/Driver/SanitizerArgs.cpp:147
@@ +146,3 @@
+      Add &= ~TrapRemove;
+      if ((Add & ~TrappingSupportedWithGroups) != 0) {
+        SanitizerSet S;
----------------
samsonov wrote:
>   if (SanitizerMask InvalidValues = Add & ~TrappingSupportedWithGroups) {
>     SanitizerSet S;
>     S.Mask = InvalidValues;
>     //....
>   }
Done

================
Comment at: lib/Driver/SanitizerArgs.cpp:165
@@ +164,3 @@
+      Arg->claim();
+      TrapRemove |= Undefined | UndefinedGroup;
+    }
----------------
samsonov wrote:
>   TrapRemove |= expandSanitizerGroups(UndefinedGroup);
Done

================
Comment at: lib/Driver/SanitizerArgs.cpp:239
@@ +238,3 @@
+      SanitizerMask KindsToDiagnose = Add & NotSupported & ~DiagnosedKinds;
+      if (KindsToDiagnose & Vptr) {
+        D.Diag(diag::err_drv_argument_not_allowed_with)
----------------
samsonov wrote:
> I don't think this is right. Suppose `-fsanitize=vptr` is not supported on 
> target foo (by corresponding toolchain). Then
>   clang -target foo -fsanitize=vptr a.cc
> would produce confusing
>   "-fsanitize=vptr" is not allowed with "-fsanitize-trap=undefined"
> 
> I think you would need separate clause for that
>   if (SanitizerMask KindsToDiagnose = Add & TrappingKinds & 
> NotAllowedWithTrap & ~DiagnosedKinds) {
>     std::string Desc = describeSanitizeArg(*I, KindsToDiagnose);
>     D.Diag(diag::err_drv_argument_not_allowed_with) << Desc << 
> lastTrapArgumentForMask(KindsToDiagnose);
>     DiagnosedKinds |= KindsToDiagnose;
>   }
Done. (We know that the second argument to the diagnostic can only ever be 
`"-fsanitize-trap=undefined"`, so I've hard coded that for now.)

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