summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorErick Ochoa <erick.ochoa@theobroma-systems.com>2020-06-18 18:04:48 +0200
committerErick Ochoa <erick.ochoa@theobroma-systems.com>2020-06-18 19:21:41 +0200
commit8f31158edf7ba386f144faa525d3babe0ff54349 (patch)
treec66524bf6ecd34bd52218c16ba0ae224a602657d
parentc82c07726da2ed895875090bc8be91fc0704b733 (diff)
feature parity
-rw-r--r--gcc/expr-rewriter.c4
-rw-r--r--gcc/gimple-rewriter.c3
-rw-r--r--gcc/gimple-walker.c5
-rw-r--r--gcc/testsuite/gcc.dg/ipa/ipa-structreorg-53-csmith-2.c2
-rw-r--r--gcc/testsuite/gcc.dg/ipa/ipa-structreorg-54-csmith-3.c2
-rw-r--r--gcc/testsuite/gcc.dg/ipa/ipa-structreorg-55-csmith-4.c2
-rw-r--r--gcc/testsuite/gcc.dg/ipa/ipa-structreorg-56-csmith-5.c2
-rw-r--r--gcc/testsuite/gcc.dg/ipa/ipa-structreorg-57-csmith-6.c2
-rw-r--r--gcc/testsuite/gcc.dg/ipa/ipa-structreorg-58-csmith-7.c3
-rw-r--r--gcc/testsuite/gcc.dg/ipa/ipa-structreorg-59-csmith-8.c4
-rw-r--r--gcc/testsuite/gcc.dg/ipa/ipa-structreorg-60-csmith-9.c4
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" } } */