[clang] 4a0267e - Convert a reachable llvm_unreachable into an assert.
Aaron Ballman via cfe-commits
cfe-commits at lists.llvm.org
Sun Mar 22 06:34:43 PDT 2020
On Sat, Mar 21, 2020 at 11:31 PM David Blaikie <dblaikie at gmail.com> wrote:
>
> Why the change? this seems counter to LLVM's style which pretty consistently uses unreachable rather than assert(false), so far as I know?
We're not super consistent (at least within Clang), but the rules as
I've generally understood them are to use llvm_unreachable only for
truly unreachable code and to use assert(false) when the code is
technically reachable but is a programmer mistake to have gotten
there. In this particular case, the code is very much reachable and I
spent a lot more time debugging than I should have because I was using
a release + asserts build and the semantics of llvm_unreachable made
unfortunate codegen (switching to an assert makes the issue
immediately obvious).
>
> On Tue, Mar 10, 2020 at 11:22 AM Aaron Ballman via cfe-commits <cfe-commits at lists.llvm.org> wrote:
>>
>>
>> Author: Aaron Ballman
>> Date: 2020-03-10T14:22:21-04:00
>> New Revision: 4a0267e3ad8c4d47f267d7d960f127e099fb4818
>>
>> URL: https://github.com/llvm/llvm-project/commit/4a0267e3ad8c4d47f267d7d960f127e099fb4818
>> DIFF: https://github.com/llvm/llvm-project/commit/4a0267e3ad8c4d47f267d7d960f127e099fb4818.diff
>>
>> LOG: Convert a reachable llvm_unreachable into an assert.
>>
>> Added:
>>
>>
>> Modified:
>> clang/lib/StaticAnalyzer/Core/AnalyzerOptions.cpp
>>
>> Removed:
>>
>>
>>
>> ################################################################################
>> diff --git a/clang/lib/StaticAnalyzer/Core/AnalyzerOptions.cpp b/clang/lib/StaticAnalyzer/Core/AnalyzerOptions.cpp
>> index 01ac2bc83bb6..99e16752b51a 100644
>> --- a/clang/lib/StaticAnalyzer/Core/AnalyzerOptions.cpp
>> +++ b/clang/lib/StaticAnalyzer/Core/AnalyzerOptions.cpp
>> @@ -134,9 +134,9 @@ StringRef AnalyzerOptions::getCheckerStringOption(StringRef CheckerName,
>> CheckerName = CheckerName.substr(0, Pos);
>> } while (!CheckerName.empty() && SearchInParents);
>>
>> - llvm_unreachable("Unknown checker option! Did you call getChecker*Option "
>> - "with incorrect parameters? User input must've been "
>> - "verified by CheckerRegistry.");
>> + assert(false && "Unknown checker option! Did you call getChecker*Option "
>> + "with incorrect parameters? User input must've been "
>> + "verified by CheckerRegistry.");
>>
>> return "";
>> }
>>
>>
>>
>> _______________________________________________
>> cfe-commits mailing list
>> cfe-commits at lists.llvm.org
>> https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
More information about the cfe-commits
mailing list