HomePhabricator

Reimplement -fsanitize-recover family of flags.

Description

Reimplement -fsanitize-recover family of flags.

Introduce the following -fsanitize-recover flags:

  • -fsanitize-recover=<list>: Enable recovery for selected checks or group of checks. It is forbidden to explicitly list unrecoverable sanitizers here (that is, "address", "unreachable", "return").
  • -fno-sanitize-recover=<list>: Disable recovery for selected checks or group of checks.
  • -f(no-)?sanitize-recover is now a synonym for -f(no-)?sanitize-recover=undefined,integer and will soon be deprecated.

These flags are parsed left to right, and mask of "recoverable"
sanitizer is updated accordingly, much like what we do for -fsanitize= flags.
-fsanitize= and -fsanitize-recover= flag families are independent.

CodeGen change: If there is a single UBSan handler function, responsible
for implementing multiple checks, which have different recoverable setting,
then we emit two handler calls instead of one:
the first one for the set of "unrecoverable" checks, another one - for
set of "recoverable" checks. If all checks implemented by a handler have the
same recoverability setting, then the generated code will be the same.

Details

Committed
samsonovJan 12 2015, 2:39 PM
Parents
rL225718: [X86][SSE] Minor regression fix for r225551
Branches
Unknown
Tags
Unknown