aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Botcazou <ebotcazou@adacore.com>2011-10-04 07:40:07 +0000
committerEric Botcazou <ebotcazou@gcc.gnu.org>2011-10-04 07:40:07 +0000
commit437bcafa1adcc9693a6437b410c98e17b1f78dbe (patch)
treef7529d05f44cb01bd818dc18ad82197b474634ba
parentaecb6197237d88797df2334cd20c89697a54c438 (diff)
downloadgcc-437bcafa1adcc9693a6437b410c98e17b1f78dbe.zip
gcc-437bcafa1adcc9693a6437b410c98e17b1f78dbe.tar.gz
gcc-437bcafa1adcc9693a6437b410c98e17b1f78dbe.tar.bz2
* config/sparc/sparc.c (sparc_fold_builtin): Use a sequence of tests.
From-SVN: r179493
-rw-r--r--gcc/ChangeLog4
-rw-r--r--gcc/config/sparc/sparc.c35
2 files changed, 21 insertions, 18 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index f332285..886d227 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,7 @@
+2011-10-04 Eric Botcazou <ebotcazou@adacore.com>
+
+ * config/sparc/sparc.c (sparc_fold_builtin): Use a sequence of tests.
+
2011-10-04 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
* longlong.h (smul_ppmm, sdiv_qrnnd): Add underscores to the local
diff --git a/gcc/config/sparc/sparc.c b/gcc/config/sparc/sparc.c
index 4df9f6a..5e67b4c 100644
--- a/gcc/config/sparc/sparc.c
+++ b/gcc/config/sparc/sparc.c
@@ -9716,24 +9716,23 @@ sparc_fold_builtin (tree fndecl, int n_args ATTRIBUTE_UNUSED,
if (ignore)
{
- switch (icode)
- {
- case CODE_FOR_alignaddrsi_vis:
- case CODE_FOR_alignaddrdi_vis:
- case CODE_FOR_wrgsr_vis:
- case CODE_FOR_bmasksi_vis:
- case CODE_FOR_bmaskdi_vis:
- case CODE_FOR_cmask8si_vis:
- case CODE_FOR_cmask8di_vis:
- case CODE_FOR_cmask16si_vis:
- case CODE_FOR_cmask16di_vis:
- case CODE_FOR_cmask32si_vis:
- case CODE_FOR_cmask32di_vis:
- break;
-
- default:
- return build_zero_cst (rtype);
- }
+ /* Note that a switch statement instead of the sequence of tests would
+ be incorrect as many of the CODE_FOR values could be CODE_FOR_nothing
+ and that would yield multiple alternatives with identical values. */
+ if (icode == CODE_FOR_alignaddrsi_vis
+ || icode == CODE_FOR_alignaddrdi_vis
+ || icode == CODE_FOR_wrgsr_vis
+ || icode == CODE_FOR_bmasksi_vis
+ || icode == CODE_FOR_bmaskdi_vis
+ || icode == CODE_FOR_cmask8si_vis
+ || icode == CODE_FOR_cmask8di_vis
+ || icode == CODE_FOR_cmask16si_vis
+ || icode == CODE_FOR_cmask16di_vis
+ || icode == CODE_FOR_cmask32si_vis
+ || icode == CODE_FOR_cmask32di_vis)
+ ;
+ else
+ return build_zero_cst (rtype);
}
switch (icode)