Don't use std::errc.
As noted on Errc.h:
// * std::errc is just marked with is_error_condition_enum. This means that
// common patters like AnErrorCode == errc::no_such_file_or_directory take
// 4 virtual calls instead of two comparisons.
And on some libstdc++ those virtual functions conclude that
------------------------
int main() {
std::error_code foo = std::make_error_code(std::errc::no_such_file_or_directory);
return foo == std::errc::no_such_file_or_directory;
}
-------------------------
should exit with 0.
llvm-svn: 239683
This commit is contained in:
@@ -19,6 +19,7 @@
|
||||
#include "llvm/ProfileData/CoverageMappingReader.h"
|
||||
#include "llvm/ProfileData/InstrProfReader.h"
|
||||
#include "llvm/Support/Debug.h"
|
||||
#include "llvm/Support/Errc.h"
|
||||
#include "llvm/Support/ErrorHandling.h"
|
||||
#include "llvm/Support/ManagedStatic.h"
|
||||
#include "llvm/Support/Path.h"
|
||||
@@ -154,11 +155,11 @@ ErrorOr<int64_t> CounterMappingContext::evaluate(const Counter &C) const {
|
||||
return 0;
|
||||
case Counter::CounterValueReference:
|
||||
if (C.getCounterID() >= CounterValues.size())
|
||||
return std::make_error_code(std::errc::argument_out_of_domain);
|
||||
return make_error_code(errc::argument_out_of_domain);
|
||||
return CounterValues[C.getCounterID()];
|
||||
case Counter::Expression: {
|
||||
if (C.getExpressionID() >= Expressions.size())
|
||||
return std::make_error_code(std::errc::argument_out_of_domain);
|
||||
return make_error_code(errc::argument_out_of_domain);
|
||||
const auto &E = Expressions[C.getExpressionID()];
|
||||
ErrorOr<int64_t> LHS = evaluate(E.LHS);
|
||||
if (!LHS)
|
||||
|
||||
Reference in New Issue
Block a user