You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
[Flang][Driver] Add regex support for R_Group options
Add regex handling for all variations of OPT_R_Joined, i.e.
`-Rpass`, `-Rpass-analysis`, `-Rpass-missed`.
Depends on D158174. That patch implements backend support for
R_Group options.
Reviewed By: awarzynski
Differential Revision: https://reviews.llvm.org/D158436
! With plain -Rpass, -Rpass-missed or -Rpass-analysis, we expect remarks related to 2 opportunities (loop vectorisation / loop delete and load hoisting).
41
+
! Once we start filtering, this is reduced to 1 one of the loop passes.
42
+
43
+
! PASS-REGEX-LOOP-ONLY-NOT: remark: hoisting load
44
+
! PASS-REGEX-LOOP-ONLY: remark: Loop deleted because it is invariant
45
+
46
+
! MISSED-REGEX-LOOP-ONLY-NOT: remark: failed to hoist load with loop-invariant address because load is conditionally executed
47
+
! MISSED-REGEX-LOOP-ONLY: remark: loop not vectorized
48
+
49
+
50
+
! ANALYSIS-REGEX-LOOP-ONLY: remark: loop not vectorized: unsafe dependent memory operations in loop. Use #pragma loop distribute(enable) to allow loop distribution to attempt to isolate the offending operations into a separate loop
51
+
! ANALYSIS-REGEX-LOOP-ONLY: Unknown data dependence.
52
+
! ANALYSIS-REGEX-LOOP-ONLY-NOT: remark:{{.*}}: IR instruction count changed from {{[0-9]+}} to {{[0-9]+}}; Delta: {{-?[0-9]+}}
53
+
54
+
! PASS: remark: hoisting load
55
+
! PASS: remark: Loop deleted because it is invariant
56
+
57
+
! MISSED: remark: failed to hoist load with loop-invariant address because load is conditionally executed
58
+
! MISSED: remark: loop not vectorized
59
+
! MISSED-NOT: remark: loop not vectorized: unsafe dependent memory operations in loop. Use #pragma loop distribute(enable) to allow loop distribution to attempt to isolate the offending operations into a separate loop
60
+
! MISSED-NOT: Unknown data dependence.
61
+
62
+
! ANALYSIS: remark: loop not vectorized: unsafe dependent memory operations in loop. Use #pragma loop distribute(enable) to allow loop distribution to attempt to isolate the offending operations into a separate loop
63
+
! ANALYSIS: Unknown data dependence.
64
+
! ANALYSIS: remark: {{.*}}: IR instruction count changed from {{[0-9]+}} to {{[0-9]+}}; Delta: {{-?[0-9]+}}
65
+
! ANALYSIS-NOT: remark: failed to hoist load with loop-invariant address because load is conditionally executed
66
+
67
+
subroutineswap_real(a1, a2)
68
+
implicit none
69
+
70
+
real, dimension(1:2) :: aR1
71
+
integer:: i, n
72
+
real, intent(inout) :: a1(:), a2(:)
73
+
real:: a
74
+
75
+
! Swap
76
+
do i =1, min(size(a1), size(a2))
77
+
a = a1(i)
78
+
a1(i) = a2(i)
79
+
a2(i) = a
80
+
end do
44
81
45
-
do n =1,50
82
+
! Do a random loop to generate a successful loop-delete pass
0 commit comments