* tree-vrp.c (infer_value_range): Return false if STMT is a
block terminator and its basic block has no successors.
testsuite/
PR 24840
* gcc.dg/tree-ssa/pr24840.c: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@106930
138bc75d-0d04-0410-961f-
82ee72b054a4
+2005-11-14 Diego Novillo <dnovillo@redhat.com>
+
+ PR 24840
+ * tree-vrp.c (infer_value_range): Return false if STMT is a
+ block terminator and its basic block has no successors.
+
2005-11-14 Mike Stump <mrs@apple.com>
* config/i386/i386.c (override_options): -masm=intel isn't
+2005-11-14 Diego Novillo <dnovillo@redhat.com>
+
+ PR 24840
+ * gcc.dg/tree-ssa/pr24840.c: New test.
+
2005-11-14 Janis Johnson <janis187@us.ibm.com>
PR testsuite/24841
--- /dev/null
+/* { dg-do compile } */
+/* { dg-options "-O2" } */
+
+typedef struct
+{
+ int tag, y;
+} Object;
+
+void Err_Handler () __attribute__ ((__noreturn__));
+
+int
+P_Error (int argc, Object * argv)
+{
+ if (((argv[1]).tag >> 1) != 11)
+ Wrong_Type (argv[1], 11);
+ Err_Handler (argv[0], argv[1], argc - 2, argv + 2);
+}
if (tree_could_throw_p (stmt))
return false;
+ /* If STMT is the last statement of a basic block with no
+ successors, there is no point inferring anything about any of its
+ operands. We would not be able to find a proper insertion point
+ for the assertion, anyway. */
+ if (stmt_ends_bb_p (stmt) && EDGE_COUNT (bb_for_stmt (stmt)->succs) == 0)
+ return false;
+
if (POINTER_TYPE_P (TREE_TYPE (op)))
{
bool is_store;