diff options
author | Jakub Jelinek <jakub@redhat.com> | 2019-10-31 11:04:47 +0100 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2019-10-31 11:04:47 +0100 |
commit | 6773658a809fbebcdb68483cb929207150ac7e5f (patch) | |
tree | c9817b2d821102662da597e911e8cc2ab92d9092 /gcc/gimple-fold.c | |
parent | 1297712fb4af6c6bfd827e0f0a9695b14669f87d (diff) | |
download | gcc-6773658a809fbebcdb68483cb929207150ac7e5f.zip gcc-6773658a809fbebcdb68483cb929207150ac7e5f.tar.gz gcc-6773658a809fbebcdb68483cb929207150ac7e5f.tar.bz2 |
re PR middle-end/92231 (ICE in gimple_fold_stmt_to_constant_1)
PR middle-end/92231
* tree.h (fndecl_built_in_p): Use fndecl_built_in_p instead of
DECL_BUILT_IN in comment. Remove redundant ()s around return
argument.
* tree.c (free_lang_data_in_decl): Check if var is FUNCTION_DECL
before calling fndecl_built_in_p.
* gimple-fold.c (gimple_fold_stmt_to_constant_1): Check if
TREE_OPERAND (fn, 0) is a FUNCTION_DECL before calling
fndecl_built_in_p on it.
lto/
* lto-lang.c (handle_const_attribute): Don't call fndecl_built_in_p
on *node that is not FUNCTION_DECL.
testsuite/
* gcc.c-torture/compile/pr92231.c: New test.
From-SVN: r277660
Diffstat (limited to 'gcc/gimple-fold.c')
-rw-r--r-- | gcc/gimple-fold.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/gcc/gimple-fold.c b/gcc/gimple-fold.c index 1b7e7ed..dc3d228 100644 --- a/gcc/gimple-fold.c +++ b/gcc/gimple-fold.c @@ -6439,6 +6439,7 @@ gimple_fold_stmt_to_constant_1 (gimple *stmt, tree (*valueize) (tree), fn = (*valueize) (gimple_call_fn (stmt)); if (TREE_CODE (fn) == ADDR_EXPR + && TREE_CODE (TREE_OPERAND (fn, 0)) == FUNCTION_DECL && fndecl_built_in_p (TREE_OPERAND (fn, 0)) && gimple_builtin_call_types_compatible_p (stmt, TREE_OPERAND (fn, 0))) |