diff options
author | Erick Ochoa <erick.ochoa@theobroma-systems.com> | 2020-06-18 18:04:48 +0200 |
---|---|---|
committer | Erick Ochoa <erick.ochoa@theobroma-systems.com> | 2020-06-18 19:21:41 +0200 |
commit | 8f31158edf7ba386f144faa525d3babe0ff54349 (patch) | |
tree | c66524bf6ecd34bd52218c16ba0ae224a602657d | |
parent | c82c07726da2ed895875090bc8be91fc0704b733 (diff) |
feature parity
-rw-r--r-- | gcc/expr-rewriter.c | 4 | ||||
-rw-r--r-- | gcc/gimple-rewriter.c | 3 | ||||
-rw-r--r-- | gcc/gimple-walker.c | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/ipa/ipa-structreorg-53-csmith-2.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/ipa/ipa-structreorg-54-csmith-3.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/ipa/ipa-structreorg-55-csmith-4.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/ipa/ipa-structreorg-56-csmith-5.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/ipa/ipa-structreorg-57-csmith-6.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/ipa/ipa-structreorg-58-csmith-7.c | 3 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/ipa/ipa-structreorg-59-csmith-8.c | 4 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/ipa/ipa-structreorg-60-csmith-9.c | 4 |
11 files changed, 22 insertions, 11 deletions
diff --git a/gcc/expr-rewriter.c b/gcc/expr-rewriter.c index da4a7fa8320..803d4206cb8 100644 --- a/gcc/expr-rewriter.c +++ b/gcc/expr-rewriter.c @@ -60,7 +60,9 @@ ExprTypeRewriter::_walk_FUNCTION_DECL_post(const_tree t) tree r_t = _map[ret_type]; TREE_TYPE(fn_type) = r_t; - log("rewriting a return type\n"); + std::string r_t_2 = stringifier.stringify(r_t); + log("rewriting %s with %s return type\n", name.c_str(), r_t_2.c_str()); + //relayout_decl((tree)t); } void diff --git a/gcc/gimple-rewriter.c b/gcc/gimple-rewriter.c index 35c1126c567..b1e2dc2aa0a 100644 --- a/gcc/gimple-rewriter.c +++ b/gcc/gimple-rewriter.c @@ -168,6 +168,7 @@ GimpleTypeRewriter::_walk_pre(gassign *s) handle_pointer_arithmetic(s); break; default: + log("missing %s\n", get_tree_code_name(e_code)); break; } @@ -190,6 +191,8 @@ GimpleTypeRewriter::_rewrite_function_decl() tree fndecl = node->decl; gcc_assert(fndecl); exprTypeRewriter.walk(fndecl); + tree decl = DECL_RESULT(fndecl); + if (decl) exprTypeRewriter.walk(decl); } diff --git a/gcc/gimple-walker.c b/gcc/gimple-walker.c index abf0cfff0cb..3c9c07c13ad 100644 --- a/gcc/gimple-walker.c +++ b/gcc/gimple-walker.c @@ -174,13 +174,14 @@ GimpleWalker::_walk(basic_block bb) unlink_stmt_vdef (stmt); gsi_remove(&gsi, true); gsi_prev(&gsi); - _deleted = false; } + bool old_deleted = _deleted; while (_deleted && first) { unlink_stmt_vdef (stmt); gsi_remove(&gsi, true); + old_deleted = _deleted; _deleted = false; stmt = gsi_stmt(gsi); if (!stmt) break; // we might have deleted and was end of basic block? @@ -188,7 +189,7 @@ GimpleWalker::_walk(basic_block bb) if (gsi_end_p(gsi)) break; } - if (_deleted && gsi_end_p (gsi)) break; + if (old_deleted && gsi_end_p (gsi)) break; first = false; _deleted = false; diff --git a/gcc/testsuite/gcc.dg/ipa/ipa-structreorg-53-csmith-2.c b/gcc/testsuite/gcc.dg/ipa/ipa-structreorg-53-csmith-2.c index df33fb7aeb7..e653aaafade 100644 --- a/gcc/testsuite/gcc.dg/ipa/ipa-structreorg-53-csmith-2.c +++ b/gcc/testsuite/gcc.dg/ipa/ipa-structreorg-53-csmith-2.c @@ -1,5 +1,5 @@ /* { dg-do run } */ -/* { dg-options "-w -flto -flto-partition=none -fipa-dead-field-eliminate" } */ +/* { dg-options "-w -flto -fipa-type-escape-analysis -fdump-ipa-type-escape-analysis " } */ struct { } a; main() {} diff --git a/gcc/testsuite/gcc.dg/ipa/ipa-structreorg-54-csmith-3.c b/gcc/testsuite/gcc.dg/ipa/ipa-structreorg-54-csmith-3.c index f49627eeeba..39c2d17ec0e 100644 --- a/gcc/testsuite/gcc.dg/ipa/ipa-structreorg-54-csmith-3.c +++ b/gcc/testsuite/gcc.dg/ipa/ipa-structreorg-54-csmith-3.c @@ -1,5 +1,5 @@ /* { dg-do run } */ -/* { dg-options "-w -flto -flto-partition=none -fipa-dead-field-eliminate" } */ +/* { dg-options "-w -flto -fipa-type-escape-analysis -fdump-ipa-type-escape-analysis " } */ #include <stdint.h> //TODO: So, our analysis says that we are deleting a field "a". diff --git a/gcc/testsuite/gcc.dg/ipa/ipa-structreorg-55-csmith-4.c b/gcc/testsuite/gcc.dg/ipa/ipa-structreorg-55-csmith-4.c index e745c6aa8fb..5e52dc26bf5 100644 --- a/gcc/testsuite/gcc.dg/ipa/ipa-structreorg-55-csmith-4.c +++ b/gcc/testsuite/gcc.dg/ipa/ipa-structreorg-55-csmith-4.c @@ -1,5 +1,5 @@ /* { dg-do run } */ -/* { dg-options "-w -flto -flto-partition=none -fipa-dead-field-eliminate" } */ +/* { dg-options "-w -flto -fipa-type-escape-analysis -fdump-ipa-type-escape-analysis " } */ #include <stdint.h> union a { diff --git a/gcc/testsuite/gcc.dg/ipa/ipa-structreorg-56-csmith-5.c b/gcc/testsuite/gcc.dg/ipa/ipa-structreorg-56-csmith-5.c index 27da3daa29d..eaffbb95970 100644 --- a/gcc/testsuite/gcc.dg/ipa/ipa-structreorg-56-csmith-5.c +++ b/gcc/testsuite/gcc.dg/ipa/ipa-structreorg-56-csmith-5.c @@ -1,5 +1,5 @@ /* { dg-do run } */ -/* { dg-options "-w -flto -flto-partition=none -fipa-dead-field-eliminate" } */ +/* { dg-options "-w -flto -fipa-type-escape-analysis -fdump-ipa-type-escape-analysis " } */ #include <stdint.h> struct a { diff --git a/gcc/testsuite/gcc.dg/ipa/ipa-structreorg-57-csmith-6.c b/gcc/testsuite/gcc.dg/ipa/ipa-structreorg-57-csmith-6.c index 9827d228e31..2f8f59017b8 100644 --- a/gcc/testsuite/gcc.dg/ipa/ipa-structreorg-57-csmith-6.c +++ b/gcc/testsuite/gcc.dg/ipa/ipa-structreorg-57-csmith-6.c @@ -1,5 +1,5 @@ /* { dg-do run } */ -/* { dg-options "-w -flto -flto-partition=none -fipa-dead-field-eliminate" } */ +/* { dg-options "-w -flto -fipa-type-escape-analysis -fdump-ipa-type-escape-analysis " } */ struct a {}; b(struct a c) {} diff --git a/gcc/testsuite/gcc.dg/ipa/ipa-structreorg-58-csmith-7.c b/gcc/testsuite/gcc.dg/ipa/ipa-structreorg-58-csmith-7.c index 3edc8a44499..e36f264298e 100644 --- a/gcc/testsuite/gcc.dg/ipa/ipa-structreorg-58-csmith-7.c +++ b/gcc/testsuite/gcc.dg/ipa/ipa-structreorg-58-csmith-7.c @@ -1,5 +1,5 @@ /* { dg-do run } */ -/* { dg-options "-w -flto -flto-partition=none -fipa-dead-field-eliminate" } */ +/* { dg-options "-w -flto -fipa-type-escape-analysis -fdump-ipa-type-escape-analysis " } */ #include <stdint.h> struct a { @@ -10,3 +10,4 @@ d() { ; } main() {} +/* { dg-final { scan-ipa-dump "deleting field b 0" "type-escape-analysis" } } */ diff --git a/gcc/testsuite/gcc.dg/ipa/ipa-structreorg-59-csmith-8.c b/gcc/testsuite/gcc.dg/ipa/ipa-structreorg-59-csmith-8.c index 050e3177fb1..fc02b460ef6 100644 --- a/gcc/testsuite/gcc.dg/ipa/ipa-structreorg-59-csmith-8.c +++ b/gcc/testsuite/gcc.dg/ipa/ipa-structreorg-59-csmith-8.c @@ -1,5 +1,5 @@ /* { dg-do run } */ -/* { dg-options "-w -flto -flto-partition=none -fipa-dead-field-eliminate" } */ +/* { dg-options "-w -flto -fipa-type-escape-analysis -fdump-ipa-type-escape-analysis " } */ struct a { signed b @@ -8,3 +8,5 @@ struct { struct a b } volatile c; main() { c.b.b; } + +// we will do nothing because volatile diff --git a/gcc/testsuite/gcc.dg/ipa/ipa-structreorg-60-csmith-9.c b/gcc/testsuite/gcc.dg/ipa/ipa-structreorg-60-csmith-9.c index b1001a6286c..3f9253b7a2b 100644 --- a/gcc/testsuite/gcc.dg/ipa/ipa-structreorg-60-csmith-9.c +++ b/gcc/testsuite/gcc.dg/ipa/ipa-structreorg-60-csmith-9.c @@ -1,5 +1,5 @@ /* { dg-do run } */ -/* { dg-options "-w -flto -flto-partition=none -fipa-dead-field-eliminate" } */ +/* { dg-options "-w -flto -fipa-type-escape-analysis -fdump-ipa-type-escape-analysis " } */ #include <stdint.h> @@ -18,3 +18,5 @@ struct a { main() {} + +/* { dg-final { scan-ipa-dump "a.c may be deleted" "type-escape-analysis" } } */ |