OSDN Git Service

* tree.c (build_common_builtin_nodes): Always clear TREE_NOTHROW on
authorebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 16 May 2010 15:20:47 +0000 (15:20 +0000)
committerMasaki Muranaka <monaka@monami-software.com>
Sun, 23 May 2010 05:09:52 +0000 (14:09 +0900)
BUILT_IN_ALLOCA if stack checking is enabled.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@159457 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/tree.c

index 9c1cd4d..cd3a80f 100644 (file)
@@ -1,3 +1,8 @@
+2010-05-16  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * tree.c (build_common_builtin_nodes): Always clear TREE_NOTHROW on
+       BUILT_IN_ALLOCA if stack checking is enabled.
+
 2010-05-16  Richard Guenther  <rguenther@suse.de>
 
        * var-tracking.c (vars_copy_1): Inline ...
@@ -33,7 +38,8 @@
 
 2010-05-15  Jan Hubicka  <jh@suse.cz>
 
-       * ipa-prop.c (ipa_prop_read_section): Add sanity check that node is analyzed.
+       * ipa-prop.c (ipa_prop_read_section): Add sanity check that node is
+       analyzed.
        * passes.c (ipa_write_summaries): Write all analyzed nodes.
 
 2010-05-15  Steven Bosscher  <steven@gcc.gnu.org>
index 9dbd084..3c456a2 100644 (file)
@@ -9083,10 +9083,13 @@ build_common_builtin_nodes (void)
       tmp = tree_cons (NULL_TREE, size_type_node, void_list_node);
       ftype = build_function_type (ptr_type_node, tmp);
       local_define_builtin ("__builtin_alloca", ftype, BUILT_IN_ALLOCA,
-                           "alloca",
-                           ECF_MALLOC | (flag_stack_check ? 0 : ECF_NOTHROW));
+                           "alloca", ECF_MALLOC | ECF_NOTHROW);
     }
 
+  /* If we're checking the stack, `alloca' can throw.  */
+  if (flag_stack_check)
+    TREE_NOTHROW (built_in_decls[BUILT_IN_ALLOCA]) = 0;
+
   tmp = tree_cons (NULL_TREE, ptr_type_node, void_list_node);
   tmp = tree_cons (NULL_TREE, ptr_type_node, tmp);
   tmp = tree_cons (NULL_TREE, ptr_type_node, tmp);