Make TREE_NOTHROW use the base.nothrow_flag again
authorDodji Seketeli <dodji@redhat.com>
Wed, 22 Aug 2012 13:50:58 +0000 (13:50 +0000)
committerDodji Seketeli <dodji@gcc.gnu.org>
Wed, 22 Aug 2012 13:50:58 +0000 (15:50 +0200)
While working on something else, I noticed that debug_tree (vec), when
vec is a TREE_VEC was crashing because TREE_NOTHROW was asserting that
its argument is not a TREE_VEC, so print_node would crash.

It turned out that TREE_NOTHROW was accidentally modified by this
change set:

commit 87d8f7b67c6a36c37e48e298f26e693520099b1e
Author: rguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>
Date:   Tue Aug 21 10:03:38 2012 +0000

    2012-08-21  Richard Guenther  <rguenther@suse.de>

     cp/
     * cp-tree.h (TREE_INDIRECT_USING): Use TREE_LANG_FLAG_0 accessor.
     (ATTR_IS_DEPENDENT): Likewise.
     (ARGUMENT_PACK_INCOMPLETE_P): Use TREE_ADDRESSABLE instead of
     TREE_LANG_FLAG_0 on TREE_VECs.

     * tree.h (struct tree_base): Add union to make it possible to
     re-use the upper 4 bytes for tree codes that do not need as
     many flags as others.  Move visited and default_def_flag to
     common bits section in exchange for saturating_flag and
     unsigned_flag.  Add SSA name version and tree vec length
     fields here.
     (struct tree_vec): Remove length field here.
     (struct tree_ssa_name): Remove version field here.

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

Richard Guenther pre-approved the reverting of the TREE_NOTHROW change
line.

Tested on x86_64-unknown-linux-gnu against master and applied to
trunk.

gcc/
* tree.h (TREE_NOTHROW): Use the base.nothrow_flag.

From-SVN: r190595

gcc/ChangeLog
gcc/tree.h

index 75cd34c49b2d8d62f917add9b7868bcc6c63dd99..c9b0e0a84cf75068d83c1e725234a995bdd8bbc5 100644 (file)
@@ -1,3 +1,7 @@
+2012-08-22  Dodji Seketeli  <dodji@redhat.com>
+
+       * tree.h (TREE_NOTHROW): Use the base.nothrow_flag.
+
 2012-08-22  Richard Guenther  <rguenther@suse.de>
 
        PR tree-optimization/46590
index f332fddded076f1d6c3fb92773f325e87f4f3798..bca0576d5a77828228b41d490345f56c3645fe74 100644 (file)
@@ -1305,7 +1305,7 @@ extern void omp_clause_range_check_failed (const_tree, const char *, int,
    throw an exception.  In a CALL_EXPR, nonzero means the call cannot
    throw.  We can't easily check the node type here as the C++
    frontend also uses this flag (for AGGR_INIT_EXPR).  */
-#define TREE_NOTHROW(NODE) (TREE_NOT_CHECK (NODE, TREE_VEC)->base.nothrow_flag)
+#define TREE_NOTHROW(NODE) ((NODE)->base.nothrow_flag)
 
 /* In a CALL_EXPR, means that it's safe to use the target of the call
    expansion as the return slot for a call that returns in memory.  */