aboutsummaryrefslogtreecommitdiff
path: root/gcc/builtins.c
diff options
context:
space:
mode:
authorMartin Sebor <msebor@redhat.com>2021-06-15 12:42:06 -0600
committerMartin Sebor <msebor@redhat.com>2021-06-15 12:46:54 -0600
commit71790f398e119c7fed867b0cfce60a7500629dff (patch)
tree18c755043090782f23ac0204521a31c66e9a683f /gcc/builtins.c
parent8b93548778a487f31f21e0c6afe7e0bde9711fc4 (diff)
downloadgcc-71790f398e119c7fed867b0cfce60a7500629dff.zip
gcc-71790f398e119c7fed867b0cfce60a7500629dff.tar.gz
gcc-71790f398e119c7fed867b0cfce60a7500629dff.tar.bz2
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
Diffstat (limited to 'gcc/builtins.c')
-rw-r--r--gcc/builtins.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/gcc/builtins.c b/gcc/builtins.c
index 75419cc..855ad1e 100644
--- a/gcc/builtins.c
+++ b/gcc/builtins.c
@@ -5183,8 +5183,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;