aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
-rw-r--r--memops.c12
-rw-r--r--validation/optim/kill-stores0.c1
-rw-r--r--validation/optim/kill-stores1.c1
3 files changed, 12 insertions, 2 deletions
diff --git a/memops.c b/memops.c
index df2e4d6c..20806175 100644
--- a/memops.c
+++ b/memops.c
@@ -190,6 +190,7 @@ next_store:
void simplify_memops(struct entrypoint *ep)
{
struct basic_block *bb;
+ pseudo_t pseudo;
FOR_EACH_PTR_REVERSE(ep->bbs, bb) {
simplify_loads(bb);
@@ -198,4 +199,15 @@ void simplify_memops(struct entrypoint *ep)
FOR_EACH_PTR_REVERSE(ep->bbs, bb) {
kill_dominated_stores(bb);
} END_FOR_EACH_PTR_REVERSE(bb);
+
+ FOR_EACH_PTR(ep->accesses, pseudo) {
+ struct symbol *var = pseudo->sym;
+ unsigned long mod;
+ if (!var)
+ continue;
+ mod = var->ctype.modifiers;
+ if (mod & (MOD_VOLATILE | MOD_NONLOCAL | MOD_STATIC))
+ continue;
+ kill_dead_stores(ep, pseudo, local_pseudo(pseudo));
+ } END_FOR_EACH_PTR(pseudo);
}
diff --git a/validation/optim/kill-stores0.c b/validation/optim/kill-stores0.c
index eb6eaa4e..00c005ff 100644
--- a/validation/optim/kill-stores0.c
+++ b/validation/optim/kill-stores0.c
@@ -28,7 +28,6 @@ static int baz(struct p p, struct q q)
/*
* check-name: kill-stores0
* check-command: test-linearize $file
- * check-known-to-fail
*
* check-output-ignore
* check-output-excludes: store\\.
diff --git a/validation/optim/kill-stores1.c b/validation/optim/kill-stores1.c
index 09537872..16a5dcf0 100644
--- a/validation/optim/kill-stores1.c
+++ b/validation/optim/kill-stores1.c
@@ -38,7 +38,6 @@ static void foo5(void)
/*
* check-name: kill-stores1
* check-command: test-linearize -Wno-decl $file
- * check-known-to-fail
*
* check-output-ignore
* check-output-pattern(4): load\\.