From bc392e55dfd0eed72ce30a550e91fa480eba1ef9 Mon Sep 17 00:00:00 2001 From: Marco Carvalho Date: Sat, 24 Jun 2023 09:06:58 -0300 Subject: [PATCH] Empty "case" clauses that fall through to the "default" should be omitted (#5353) * Empty "case" clauses that fall through to the "default" should be omitted * default throw exception * format --- src/ARMeilleure/Instructions/SoftFloat.cs | 54 ++++++++++++++++++----- 1 file changed, 43 insertions(+), 11 deletions(-) diff --git a/src/ARMeilleure/Instructions/SoftFloat.cs b/src/ARMeilleure/Instructions/SoftFloat.cs index 9e3db68d9..4af73c6df 100644 --- a/src/ARMeilleure/Instructions/SoftFloat.cs +++ b/src/ARMeilleure/Instructions/SoftFloat.cs @@ -228,7 +228,6 @@ namespace ARMeilleure.Instructions switch (context.Fpcr.GetRoundingMode()) { - default: case FPRoundingMode.ToNearest: roundUp = (error > 0.5d || (error == 0.5d && (intMant & 1u) == 1u)); overflowToInf = true; @@ -248,6 +247,9 @@ namespace ARMeilleure.Instructions roundUp = false; overflowToInf = false; break; + + default: + throw new ArgumentException($"Invalid rounding mode \"{context.Fpcr.GetRoundingMode()}\"."); } if (roundUp) @@ -412,7 +414,6 @@ namespace ARMeilleure.Instructions switch (context.Fpcr.GetRoundingMode()) { - default: case FPRoundingMode.ToNearest: roundUp = (error > 0.5d || (error == 0.5d && (intMant & 1u) == 1u)); overflowToInf = true; @@ -432,6 +433,9 @@ namespace ARMeilleure.Instructions roundUp = false; overflowToInf = false; break; + + default: + throw new ArgumentException($"Invalid rounding mode \"{context.Fpcr.GetRoundingMode()}\"."); } if (roundUp) @@ -585,7 +589,6 @@ namespace ARMeilleure.Instructions switch (context.Fpcr.GetRoundingMode()) { - default: case FPRoundingMode.ToNearest: roundUp = (error > 0.5d || (error == 0.5d && (intMant & 1u) == 1u)); overflowToInf = true; @@ -605,6 +608,9 @@ namespace ARMeilleure.Instructions roundUp = false; overflowToInf = false; break; + + default: + throw new ArgumentException($"Invalid rounding mode \"{context.Fpcr.GetRoundingMode()}\"."); } if (roundUp) @@ -1433,11 +1439,24 @@ namespace ARMeilleure.Instructions switch (fpcr.GetRoundingMode()) { + case FPRoundingMode.ToNearest: + overflowToInf = true; + break; + + case FPRoundingMode.TowardsPlusInfinity: + overflowToInf = !sign; + break; + + case FPRoundingMode.TowardsMinusInfinity: + overflowToInf = sign; + break; + + case FPRoundingMode.TowardsZero: + overflowToInf = false; + break; + default: - case FPRoundingMode.ToNearest: overflowToInf = true; break; - case FPRoundingMode.TowardsPlusInfinity: overflowToInf = !sign; break; - case FPRoundingMode.TowardsMinusInfinity: overflowToInf = sign; break; - case FPRoundingMode.TowardsZero: overflowToInf = false; break; + throw new ArgumentException($"Invalid rounding mode \"{fpcr.GetRoundingMode()}\"."); } result = overflowToInf ? FPInfinity(sign) : FPMaxNormal(sign); @@ -2845,11 +2864,24 @@ namespace ARMeilleure.Instructions switch (fpcr.GetRoundingMode()) { + case FPRoundingMode.ToNearest: + overflowToInf = true; + break; + + case FPRoundingMode.TowardsPlusInfinity: + overflowToInf = !sign; + break; + + case FPRoundingMode.TowardsMinusInfinity: + overflowToInf = sign; + break; + + case FPRoundingMode.TowardsZero: + overflowToInf = false; + break; + default: - case FPRoundingMode.ToNearest: overflowToInf = true; break; - case FPRoundingMode.TowardsPlusInfinity: overflowToInf = !sign; break; - case FPRoundingMode.TowardsMinusInfinity: overflowToInf = sign; break; - case FPRoundingMode.TowardsZero: overflowToInf = false; break; + throw new ArgumentException($"Invalid rounding mode \"{fpcr.GetRoundingMode()}\"."); } result = overflowToInf ? FPInfinity(sign) : FPMaxNormal(sign);