]> granicus.if.org Git - clang/commitdiff
Simplify test from r334650
authorErich Keane <erich.keane@intel.com>
Wed, 13 Jun 2018 20:47:12 +0000 (20:47 +0000)
committerErich Keane <erich.keane@intel.com>
Wed, 13 Jun 2018 20:47:12 +0000 (20:47 +0000)
No reason to have the 'bool' as an intermediary value,
simply use the fact that curley braces enforce eval order.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@334652 91177308-0d34-0410-b5e6-96231b3b80d8

test/SemaCXX/builtins-overflow.cpp

index 8cd28341e41b1f814eab1c555eea8b296deb691a..65733c0c154f518f664e7f1a692799ad7a6cc3c8 100644 (file)
@@ -29,8 +29,7 @@ struct Result {
 template <typename RET, typename LHS, typename RHS>
 constexpr Result<RET> add(LHS &&lhs, RHS &&rhs) {
   RET sum{};
-  bool b = __builtin_add_overflow(lhs, rhs, &sum);
-  return {b, sum};
+  return {__builtin_add_overflow(lhs, rhs, &sum), sum};
 }
 
 static_assert(add<short>(static_cast<char>(120), static_cast<char>(10)) == Result<short>{false, 130});
@@ -45,8 +44,7 @@ static_assert(add<int>(INT_MIN + 22, -23) == Result<int>{true, INT_MAX});
 template <typename RET, typename LHS, typename RHS>
 constexpr Result<RET> sub(LHS &&lhs, RHS &&rhs) {
   RET sum{};
-  bool b = __builtin_sub_overflow(lhs, rhs, &sum);
-  return {b, sum};
+  return {__builtin_sub_overflow(lhs, rhs, &sum), sum};
 }
 
 static_assert(sub<unsigned char>(static_cast<char>(0),static_cast<char>(1)) == Result<unsigned char>{true, UCHAR_MAX});
@@ -60,8 +58,7 @@ static_assert(sub<int>(INT_MIN + 22, 23) == Result<int>{true, INT_MAX});
 template <typename RET, typename LHS, typename RHS>
 constexpr Result<RET> mul(LHS &&lhs, RHS &&rhs) {
   RET sum{};
-  bool b  = __builtin_mul_overflow(lhs, rhs, &sum);
-  return {b, sum};
+  return {__builtin_mul_overflow(lhs, rhs, &sum), sum};
 }
 
 static_assert(mul<int>(17,22) == Result<int>{false, 374});
@@ -70,8 +67,7 @@ static_assert(mul<int>(INT_MIN / 22, -23) == Result<int>{true, -2049870757});
 
 constexpr Result<int> sadd(int lhs, int rhs) {
   int sum{};
-  bool b = __builtin_sadd_overflow(lhs, rhs, &sum);
-  return {b, sum};
+  return {__builtin_sadd_overflow(lhs, rhs, &sum), sum};
 }
 
 static_assert(sadd(17,22) == Result<int>{false, 39});
@@ -80,8 +76,7 @@ static_assert(sadd(INT_MIN + 22, -23) == Result<int>{true, INT_MAX});
 
 constexpr Result<int> ssub(int lhs, int rhs) {
   int sum{};
-  bool b = __builtin_ssub_overflow(lhs, rhs, &sum);
-  return {b, sum};
+  return {__builtin_ssub_overflow(lhs, rhs, &sum), sum};
 }
 
 static_assert(ssub(17,22) == Result<int>{false, -5});
@@ -90,8 +85,7 @@ static_assert(ssub(INT_MIN + 22, 23) == Result<int>{true, INT_MAX});
 
 constexpr Result<int> smul(int lhs, int rhs) {
   int sum{};
-  bool b = __builtin_smul_overflow(lhs, rhs, &sum);
-  return {b, sum};
+  return {__builtin_smul_overflow(lhs, rhs, &sum), sum};
 }
 
 static_assert(smul(17,22) == Result<int>{false, 374});