summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorcharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>2010-10-11 09:49:37 +0000
committercharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>2010-10-11 09:49:37 +0000
commitbcc62044271a8f0769221d3f957df63e8f74189b (patch)
tree9594c1a01efaaa2774cdb28b86a2da014d6d3f16
parentf005e79a63bb85dddcda5b60956ed83827a3a7ec (diff)
downloadppe42-gcc-bcc62044271a8f0769221d3f957df63e8f74189b.tar.gz
ppe42-gcc-bcc62044271a8f0769221d3f957df63e8f74189b.zip
2010-10-11 Tristan Gingold <gingold@adacore.com>
* gcc-interface/utils2.c (maybe_wrap_malloc): Fix crash when allocating very large object on VMS. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@165288 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ada/ChangeLog5
-rw-r--r--gcc/ada/gcc-interface/utils2.c7
2 files changed, 9 insertions, 3 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index cb8db41b688..2915c1ae6ea 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,3 +1,8 @@
+2010-10-11 Tristan Gingold <gingold@adacore.com>
+
+ * gcc-interface/utils2.c (maybe_wrap_malloc): Fix crash when allocating
+ very large object on VMS.
+
2010-10-11 Javier Miranda <miranda@adacore.com>
* sem_ch10.adb (Analyze_With_Clause): Add missing test to ensure
diff --git a/gcc/ada/gcc-interface/utils2.c b/gcc/ada/gcc-interface/utils2.c
index 8419170cdbb..62380deab98 100644
--- a/gcc/ada/gcc-interface/utils2.c
+++ b/gcc/ada/gcc-interface/utils2.c
@@ -1820,9 +1820,10 @@ maybe_wrap_malloc (tree data_size, tree data_type, Node_Id gnat_node)
/* On VMS, if pointers are 64-bit and the allocator size is 32-bit or
Convention C, allocate 32-bit memory. */
if (TARGET_ABI_OPEN_VMS
- && (POINTER_SIZE == 64
- && (UI_To_Int (Esize (Etype (gnat_node))) == 32
- || Convention (Etype (gnat_node)) == Convention_C)))
+ && POINTER_SIZE == 64
+ && Nkind (gnat_node) == N_Allocator
+ && (UI_To_Int (Esize (Etype (gnat_node))) == 32
+ || Convention (Etype (gnat_node)) == Convention_C))
malloc_ptr = build_call_1_expr (malloc32_decl, size_to_malloc);
else
malloc_ptr = build_call_1_expr (malloc_decl, size_to_malloc);
OpenPOWER on IntegriCloud