diff options
author | Erick Ochoa <erick.ochoa@theobroma-systems.com> | 2020-04-29 14:03:22 +0200 |
---|---|---|
committer | Erick Ochoa <erick.ochoa@theobroma-systems.com> | 2020-05-14 14:45:54 +0200 |
commit | 7938439d31bb8e76b7de4079aa25ed593580378a (patch) | |
tree | 9c605d169af30b8e770ac0737f660109e154f276 | |
parent | 52822712388cdf72e5f5b078603adf0fde4a57fc (diff) |
Dealing with eliminating writes to elimited fields when they are the only gimple statement in bb
-rw-r--r-- | gcc/ipa-str-reorg-dead-field-eliminate.c | 1 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/ipa/ipa-structreorg-58-csmith-7.c | 12 |
2 files changed, 13 insertions, 0 deletions
diff --git a/gcc/ipa-str-reorg-dead-field-eliminate.c b/gcc/ipa-str-reorg-dead-field-eliminate.c index 0d6b5df18d8..9241156d0f0 100644 --- a/gcc/ipa-str-reorg-dead-field-eliminate.c +++ b/gcc/ipa-str-reorg-dead-field-eliminate.c @@ -2374,6 +2374,7 @@ rewrite_basic_block (basic_block bb, t_map &type_map, while (deleted && is_first) { stmt = gsi_stmt(gsi); + if (!stmt) break; // we might have deleted and was end of basic block? deleted = rewrite_stmt (stmt, gsi, type_map, inverse); if (gsi_end_p(gsi)) break; } 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 new file mode 100644 index 00000000000..3edc8a44499 --- /dev/null +++ b/gcc/testsuite/gcc.dg/ipa/ipa-structreorg-58-csmith-7.c @@ -0,0 +1,12 @@ +/* { dg-do run } */ +/* { dg-options "-w -flto -flto-partition=none -fipa-dead-field-eliminate" } */ + +#include <stdint.h> +struct a { + int32_t b +} c; +d() { + for (;; c.b = 0) + ; +} +main() {} |