31 lines · plain
1; RUN: opt -passes=gvn-hoist -S < %s | FileCheck %s2target datalayout = "e-i64:64-f80:128-n8:16:32:64-S128"3target triple = "x86_64-unknown-linux-gnu"4 5; Check that all "sub" expressions are hoisted.6; CHECK-LABEL: @fun7; CHECK: sub i648; CHECK-NOT: sub i649 10define i64 @fun(ptr %out, ptr %end) {11 %1 = icmp ult ptr %out, %end12 br i1 %1, label %2, label %613 14; <label>:2 ; preds = %015 %3 = ptrtoint ptr %end to i6416 %4 = ptrtoint ptr %out to i6417 %5 = sub i64 %3, %418 br label %1019 20; <label>:6 ; preds = %021 %7 = ptrtoint ptr %out to i6422 %8 = ptrtoint ptr %end to i6423 %9 = sub i64 %8, %724 br label %1025 26; <label>:10 ; preds = %6, %227 %.in = phi i64 [ %5, %2 ], [ %9, %6 ]28 %11 = add i64 %.in, 25729 ret i64 %1130}31