[libc] Use if constexpr for compile-time conditionals#113417
Merged
[libc] Use if constexpr for compile-time conditionals#113417
if constexpr for compile-time conditionals#113417Conversation
Don't use plain `if` for things that are compile-time constants. Instead, use `if constexpr`. This both ensures that these are properly wired up constant expressions as intended, and prevents warnings from the compiler about useless `if` checks that look in the source like they're meant to do something at runtime but will just be compiled away.
Member
|
@llvm/pr-subscribers-libc Author: Roland McGrath (frobtech) ChangesDon't use plain Full diff: https://github.com/llvm/llvm-project/pull/113417.diff 1 Files Affected:
diff --git a/libc/test/UnitTest/FPMatcher.h b/libc/test/UnitTest/FPMatcher.h
index bdcc22ef94e76b..7fcc6a32025b5d 100644
--- a/libc/test/UnitTest/FPMatcher.h
+++ b/libc/test/UnitTest/FPMatcher.h
@@ -124,35 +124,35 @@ template <typename T, TestCond Condition> class CFPMatcher : public Matcher<T> {
bool match(T actualValue) {
actual = actualValue;
- if (cpp::is_complex_type_same<T, _Complex float>())
+ if constexpr (cpp::is_complex_type_same<T, _Complex float>())
return matchComplex<float>();
- else if (cpp::is_complex_type_same<T, _Complex double>())
+ else if constexpr (cpp::is_complex_type_same<T, _Complex double>())
return matchComplex<double>();
- else if (cpp::is_complex_type_same<T, _Complex long double>())
+ else if constexpr (cpp::is_complex_type_same<T, _Complex long double>())
return matchComplex<long double>();
#ifdef LIBC_TYPES_HAS_CFLOAT16
- else if (cpp::is_complex_type_same<T, cfloat16>)
+ else if constexpr (cpp::is_complex_type_same<T, cfloat16>)
return matchComplex<float16>();
#endif
#ifdef LIBC_TYPES_HAS_CFLOAT128
- else if (cpp::is_complex_type_same<T, cfloat128>)
+ else if constexpr (cpp::is_complex_type_same<T, cfloat128>)
return matchComplex<float128>();
#endif
}
void explainError() override {
- if (cpp::is_complex_type_same<T, _Complex float>())
+ if constexpr (cpp::is_complex_type_same<T, _Complex float>())
return explainErrorComplex<float>();
- else if (cpp::is_complex_type_same<T, _Complex double>())
+ else if constexpr (cpp::is_complex_type_same<T, _Complex double>())
return explainErrorComplex<double>();
- else if (cpp::is_complex_type_same<T, _Complex long double>())
+ else if constexpr (cpp::is_complex_type_same<T, _Complex long double>())
return explainErrorComplex<long double>();
#ifdef LIBC_TYPES_HAS_CFLOAT16
- else if (cpp::is_complex_type_same<T, cfloat16>)
+ else if constexpr (cpp::is_complex_type_same<T, cfloat16>)
return explainErrorComplex<float16>();
#endif
#ifdef LIBC_TYPES_HAS_CFLOAT128
- else if (cpp::is_complex_type_same<T, cfloat128>)
+ else if constexpr (cpp::is_complex_type_same<T, cfloat128>)
return explainErrorComplex<float128>();
#endif
}
|
lntue
approved these changes
Oct 23, 2024
Closed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Don't use plain
iffor things that are compile-time constants.Instead, use
if constexpr. This both ensures that these areproperly wired up constant expressions as intended, and prevents
warnings from the compiler about useless
ifchecks that look inthe source like they're meant to do something at runtime but will
just be compiled away.