This commit is contained in:
Jakub Jelinek 2016-08-17 18:13:11 +02:00
parent 4f5892b0e1
commit 31e7eb359b

View File

@ -29,7 +29,7 @@
} }
--- gcc/tree-cfgcleanup.c.jj 2016-08-09 09:41:14.000000000 +0200 --- gcc/tree-cfgcleanup.c.jj 2016-08-09 09:41:14.000000000 +0200
+++ gcc/tree-cfgcleanup.c 2016-08-17 10:36:24.198791289 +0200 +++ gcc/tree-cfgcleanup.c 2016-08-17 10:36:24.198791289 +0200
@@ -602,9 +602,14 @@ fixup_noreturn_call (gimple *stmt) @@ -602,10 +602,15 @@ fixup_noreturn_call (gimple *stmt)
/* If there is an LHS, remove it, but only if its type has fixed size. /* If there is an LHS, remove it, but only if its type has fixed size.
The LHS will need to be recreated during RTL expansion and creating The LHS will need to be recreated during RTL expansion and creating
temporaries of variable-sized types is not supported. Also don't temporaries of variable-sized types is not supported. Also don't
@ -39,9 +39,11 @@
+ has been changed into a call that does not return a value, like + has been changed into a call that does not return a value, like
+ __builtin_unreachable or __cxa_pure_virtual. */ + __builtin_unreachable or __cxa_pure_virtual. */
tree lhs = gimple_call_lhs (stmt); tree lhs = gimple_call_lhs (stmt);
- if (should_remove_lhs_p (lhs)) - if (lhs && TREE_CODE (TYPE_SIZE_UNIT (TREE_TYPE (lhs))) == INTEGER_CST
- && !TREE_ADDRESSABLE (TREE_TYPE (lhs)))
+ if (lhs + if (lhs
+ && (should_remove_lhs_p (lhs) + && ((TREE_CODE (TYPE_SIZE_UNIT (TREE_TYPE (lhs))) == INTEGER_CST
+ && !TREE_ADDRESSABLE (TREE_TYPE (lhs)))
+ || VOID_TYPE_P (TREE_TYPE (gimple_call_fntype (stmt))))) + || VOID_TYPE_P (TREE_TYPE (gimple_call_fntype (stmt)))))
{ {
gimple_call_set_lhs (stmt, NULL_TREE); gimple_call_set_lhs (stmt, NULL_TREE);