]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
Backported from trunk:
authorMartin Sebor <msebor@redhat.com>
Thu, 17 Jun 2021 18:22:28 +0000 (12:22 -0600)
committerMartin Sebor <msebor@redhat.com>
Thu, 17 Jun 2021 20:07:15 +0000 (14:07 -0600)
Consider size_t mangling as unsigned int and long [PR100876].

gcc/ChangeLog:

PR middle-end/100876
* builtins.c: (gimple_call_return_array): Account for size_t
mangling as either unsigned int or unsigned long

gcc/builtins.c

index 6f3ace5d1248529c6a2349bcd88d01d1512697c1..73c12e3bb8c39907b6bd95148f860709dbbf3f50 100644 (file)
@@ -5171,8 +5171,12 @@ gimple_call_return_array (gimple *stmt, offset_int offrng[2],
          || DECL_IS_REPLACEABLE_OPERATOR_NEW_P (fn))
        return NULL_TREE;
 
+      /* Check the mangling, keeping in mind that operator new takes
+        a size_t which could be unsigned int or unsigned long.  */
       tree fname = DECL_ASSEMBLER_NAME (fn);
-      if (!id_equal (fname, "_ZnwmPv")       // ordinary form
+      if (!id_equal (fname, "_ZnwjPv")       // ordinary form
+         && !id_equal (fname, "_ZnwmPv")    // ordinary form
+         && !id_equal (fname, "_ZnajPv")    // array form
          && !id_equal (fname, "_ZnamPv"))   // array form
        return NULL_TREE;