On Mon, Dec 14, 2015 at 3:03 PM, Richard Eisenberg <eir@cis.upenn.edu> wrote:
1. -fwarn-pattern-guards=none
2. -fwarn-pattern-guards=try
3. -fwarn-pattern-guards=try-quiet
4. -fwarn-pattern-guards=do   -- there is no "try"

The implementation now uses: 
1. -guard-reasoning=simple
2. -guard-reasoning=try
3. -guard-reasoning=try-quiet
4. -guard-reasoning=do

Since `try-quiet` suppresses a warning, it seems more consistent with the rest of the warning machinery to have a separate warning flag for it (`-Wornate-guards`, using the new syntax from #11218), enabled by default. When the fine-grained `-Werror=...` facility is implemented (#11219), this would allow you to for example say `-Werror -Wno-error=ornate-guards`, meaning: turn all warnings into errors, except for `-Wornate-guards` (but don't silence those completely!).

So then it would like this (with `-f` prefix preferable):
1. -fguard-reasoning=simple
2. -fguard-reasoning=try
3. -fguard-reasoning=do

And orthogonal to that: -Wornate-guards / -Wno-ornate-guards (name to be decided), which only have an effect when `-fguard-reasoning=try` (the default).

Thomas