]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR middle-end/35265 (__builtin_popcount expansion bug)
authorRichard Guenther <rguenther@suse.de>
Wed, 20 Feb 2008 17:33:07 +0000 (17:33 +0000)
committerRichard Biener <rguenth@gcc.gnu.org>
Wed, 20 Feb 2008 17:33:07 +0000 (17:33 +0000)
2008-02-20  Richard Guenther  <rguenther@suse.de>

PR middle-end/35265
* builtins.c (validate_arg): If we want an INTEGER_TYPE,
be happy with INTEGRAL_TYPE_P.

* gcc.dg/builtins-66.c: New testcase.

From-SVN: r132487

gcc/ChangeLog
gcc/builtins.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/builtins-66.c [new file with mode: 0644]

index 4983f27c2ffb246670420a0c5f218e13fd32a5ab..5a860ad1d78a3c9e974cb88a55a8e74882f4bebc 100644 (file)
@@ -1,3 +1,9 @@
+2008-02-20  Richard Guenther  <rguenther@suse.de>
+
+       PR middle-end/35265
+       * builtins.c (validate_arg): If we want an INTEGER_TYPE,
+       be happy with INTEGRAL_TYPE_P.
+
 2008-02-19  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
 
        PR bootstrap/35218
index d8d5756da2ea7b594d8113ae44a3d52ff191fc1b..726fcef611876f35ef1c2eb4fb2bf7a88bad8b8c 100644 (file)
@@ -9246,6 +9246,11 @@ validate_arglist (tree arglist, ...)
              if (! POINTER_TYPE_P (TREE_TYPE (TREE_VALUE (arglist))))
                goto end;
            }
+         else if (code == INTEGER_TYPE)
+           {
+             if (! INTEGRAL_TYPE_P (TREE_TYPE (TREE_VALUE (arglist))))
+               goto end;
+           }
          else if (code != TREE_CODE (TREE_TYPE (TREE_VALUE (arglist))))
            goto end;
          break;
index 238f33ce207422bfe0ca497cdfe010a7d51d75e0..7558f55569d8ef3d55410303cb6e60fd651a4854 100644 (file)
@@ -1,3 +1,8 @@
+2008-02-20  Richard Guenther  <rguenther@suse.de>
+
+       PR middle-end/35265
+       * gcc.dg/builtins-66.c: New testcase.
+
 2008-02-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
 
        * g++.dg/tree-ssa/ivopts-1.C: Remove x86 XFAILs.
diff --git a/gcc/testsuite/gcc.dg/builtins-66.c b/gcc/testsuite/gcc.dg/builtins-66.c
new file mode 100644 (file)
index 0000000..87bea3f
--- /dev/null
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+
+enum { E0 = 0, E1 = 1, E2 = 2 } e;
+
+int
+foo (void)
+{
+  return __builtin_popcount ((int) e);
+}
+
+/* { dg-final { scan-assembler-not "__builtin_popcount" } } */