--- /dev/null
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py\r
+; REQUIRES: asserts\r
+; XFAIL: *\r
+; RUN: opt -S -enable-loop-simplifycfg-term-folding=true -loop-simplifycfg -verify-loop-info -verify-dom-info -verify-loop-lcssa < %s | FileCheck %s\r
+; RUN: opt -S -enable-loop-simplifycfg-term-folding=true -passes='require<domtree>,loop(simplify-cfg)' -verify-loop-info -verify-dom-info -verify-loop-lcssa < %s | FileCheck %s\r
+; RUN: opt -S -enable-loop-simplifycfg-term-folding=true -loop-simplifycfg -enable-mssa-loop-dependency=true -verify-memoryssa -verify-loop-info -verify-dom-info -verify-loop-lcssa < %s | FileCheck %s\r
+\r
+target datalayout = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128"\r
+\r
+; Make sure we update MSSA properly.\r
+define void @test(i32* %a, i32* %b) {\r
+; CHECK-LABEL: @test(\r
+\r
+entry:\r
+ br label %for.body\r
+\r
+for.body:\r
+ %i = phi i32 [ 0, %entry ], [ %i.inc, %latch ]\r
+ br label %switch.bb\r
+\r
+switch.bb:\r
+ switch i2 1, label %default [\r
+ i2 1, label %case\r
+ ]\r
+\r
+case:\r
+ br label %latch\r
+\r
+default:\r
+ unreachable\r
+\r
+latch:\r
+ store i32 %i, i32* %a\r
+ store i32 %i, i32* %b\r
+ %i.inc = add nsw i32 %i, 1\r
+ %exitcond = icmp eq i32 %i.inc, 4\r
+ br i1 %exitcond, label %exit, label %for.body\r
+\r
+exit:\r
+ ret void\r
+}\r