• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
2; RUN: opt < %s -slp-vectorizer -mtriple=x86_64-apple-macosx10.9.0 -S -o - | FileCheck %s
3
4target datalayout = "f64:64:64-v64:64:64"
5
6define void @test_phi_in_landingpad() personality i8*
7; CHECK-LABEL: @test_phi_in_landingpad(
8; CHECK-NEXT:  entry:
9; CHECK-NEXT:    invoke void @foo()
10; CHECK-NEXT:    to label [[INNER:%.*]] unwind label [[LPAD:%.*]]
11; CHECK:       inner:
12; CHECK-NEXT:    invoke void @foo()
13; CHECK-NEXT:    to label [[DONE:%.*]] unwind label [[LPAD]]
14; CHECK:       lpad:
15; CHECK-NEXT:    [[TMP0:%.*]] = phi <2 x double> [ undef, [[ENTRY:%.*]] ], [ undef, [[INNER]] ]
16; CHECK-NEXT:    [[TMP1:%.*]] = landingpad { i8*, i32 }
17; CHECK-NEXT:    catch i8* null
18; CHECK-NEXT:    br label [[DONE]]
19; CHECK:       done:
20; CHECK-NEXT:    [[TMP2:%.*]] = phi <2 x double> [ undef, [[INNER]] ], [ [[TMP0]], [[LPAD]] ]
21; CHECK-NEXT:    ret void
22;
23  bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
24entry:
25  invoke void @foo()
26  to label %inner unwind label %lpad
27
28inner:
29  %x0 = fsub double undef, undef
30  %y0 = fsub double undef, undef
31  invoke void @foo()
32  to label %done unwind label %lpad
33
34lpad:
35  %x1 = phi double [ undef, %entry ], [ undef, %inner ]
36  %y1 = phi double [ undef, %entry ], [ undef, %inner ]
37  landingpad { i8*, i32 } catch i8* null
38  br label %done
39
40done:
41  phi double [ %x0, %inner ], [ %x1, %lpad ]
42  phi double [ %y0, %inner ], [ %y1, %lpad ]
43  ret void
44}
45
46declare void @foo()
47
48declare i32 @__gxx_personality_v0(...)
49