; NOTE: Assertions have been autogenerated by utils/update_test_checks.py ; RUN: opt < %s -passes=vector-combine -S -mtriple=x86_64-- | FileCheck %s target datalayout = "e-p:64:64-i64:64-f80:128-n8:16:32:64-S128" ; This would insert before a phi instruction which is invalid IR. define <4 x double> @PR60649() { ; CHECK-LABEL: @PR60649( ; CHECK-NEXT: entry: ; CHECK-NEXT: br label [[END:%.*]] ; CHECK: unreachable: ; CHECK-NEXT: br label [[END]] ; CHECK: end: ; CHECK-NEXT: [[T0:%.*]] = phi <4 x double> [ zeroinitializer, [[ENTRY:%.*]] ], [ zeroinitializer, [[UNREACHABLE:%.*]] ] ; CHECK-NEXT: [[T1:%.*]] = phi <4 x double> [ zeroinitializer, [[ENTRY]] ], [ zeroinitializer, [[UNREACHABLE]] ] ; CHECK-NEXT: [[TMP0:%.*]] = shufflevector <4 x double> [[T0]], <4 x double> [[T0]], <4 x i32> ; CHECK-NEXT: [[TMP1:%.*]] = shufflevector <4 x double> [[T0]], <4 x double> [[T0]], <4 x i32> ; CHECK-NEXT: [[TMP2:%.*]] = fdiv <4 x double> [[TMP1]], ; CHECK-NEXT: [[TMP3:%.*]] = fmul <4 x double> [[TMP0]], ; CHECK-NEXT: [[T5:%.*]] = shufflevector <4 x double> [[TMP2]], <4 x double> [[TMP3]], <4 x i32> ; CHECK-NEXT: ret <4 x double> [[T5]] ; entry: br label %end unreachable: br label %end end: %t0 = phi <4 x double> [ zeroinitializer, %entry ], [ zeroinitializer, %unreachable ] %t1 = phi <4 x double> [ zeroinitializer, %entry ], [ zeroinitializer, %unreachable ] %t2 = shufflevector <4 x double> zeroinitializer, <4 x double> zeroinitializer, <4 x i32> %t3 = fdiv <4 x double> %t0, %t2 %t4 = fmul <4 x double> %t0, %t2 %t5 = shufflevector <4 x double> %t3, <4 x double> %t4, <4 x i32> ret <4 x double> %t5 }