| ; RUN: llc < %s | FileCheck %s |
| |
| ; Phi lowering should check for dependency cycles, including looking through |
| ; bitcasts, and emit extra copies as needed. |
| |
| target datalayout = "e-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-p:32:32:32-v128:32:128-n32-S128" |
| target triple = "asmjs-unknown-emscripten" |
| |
| ; CHECK: while(1) { |
| ; CHECK: $k$phi = $j;$j$phi = $k;$k = $k$phi;$j = $j$phi; |
| ; CHECK: } |
| define void @foo(float* nocapture %p, i32* %j.init, i32* %k.init) { |
| entry: |
| br label %for.body |
| |
| for.body: |
| %j = phi i32* [ %j.init, %entry ], [ %k.cast, %more ] |
| %k = phi i32* [ %k.init, %entry ], [ %j.cast, %more ] |
| br label %more |
| |
| more: |
| %j.cast = bitcast i32* %j to i32* |
| %k.cast = bitcast i32* %k to i32* |
| br label %for.body |
| } |