summaryrefslogtreecommitdiffstats
path: root/src/test/ui/mir/mir_codegen_critical_edge.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/ui/mir/mir_codegen_critical_edge.rs')
-rw-r--r--src/test/ui/mir/mir_codegen_critical_edge.rs44
1 files changed, 0 insertions, 44 deletions
diff --git a/src/test/ui/mir/mir_codegen_critical_edge.rs b/src/test/ui/mir/mir_codegen_critical_edge.rs
deleted file mode 100644
index 5c1f1c3b7..000000000
--- a/src/test/ui/mir/mir_codegen_critical_edge.rs
+++ /dev/null
@@ -1,44 +0,0 @@
-// run-pass
-#![allow(dead_code)]
-// This code produces a CFG with critical edges that, if we don't
-// handle properly, will cause invalid codegen.
-
-#![feature(rustc_attrs)]
-
-enum State {
- Both,
- Front,
- Back
-}
-
-pub struct Foo<A: Iterator, B: Iterator> {
- state: State,
- a: A,
- b: B
-}
-
-impl<A, B> Foo<A, B>
-where A: Iterator, B: Iterator<Item=A::Item>
-{
- // This is the function we care about
- fn next(&mut self) -> Option<A::Item> {
- match self.state {
- State::Both => match self.a.next() {
- elt @ Some(..) => elt,
- None => {
- self.state = State::Back;
- self.b.next()
- }
- },
- State::Front => self.a.next(),
- State::Back => self.b.next(),
- }
- }
-}
-
-// Make sure we actually codegen a version of the function
-pub fn do_stuff(mut f: Foo<Box<dyn Iterator<Item=u32>>, Box<dyn Iterator<Item=u32>>>) {
- let _x = f.next();
-}
-
-fn main() {}