diff options
| author | Akira Hatanaka <ahatanaka@apple.com> | 2016-04-01 00:34:39 +0000 |
|---|---|---|
| committer | Akira Hatanaka <ahatanaka@apple.com> | 2016-04-01 00:34:39 +0000 |
| commit | e9148dd62f42531703d8d7995549ec4cf4f9e363 (patch) | |
| tree | d2f0960a348bd750c4063f656d71d8198ae4aecf /llvm/test | |
| parent | cb28f15fbc11cd0aede8534615644b9c51807ab3 (diff) | |
| download | bcm5719-llvm-e9148dd62f42531703d8d7995549ec4cf4f9e363.tar.gz bcm5719-llvm-e9148dd62f42531703d8d7995549ec4cf4f9e363.zip | |
[LoopVectorize] Don't unconditionally print vectorization diagnostics
when compiling with LTO.
r244523 a new class DiagnosticInfoOptimizationRemarkAnalysisAliasing for
optimization analysis remarks related to pointer aliasing without
guarding it in isDiagnosticEnabled in LLVMContext.cpp. This caused the
diagnostic message to be printed unconditionally when compiling with
LTO.
This commit cleans up isDiagnosticEnabled and makes sure all the
vectorization optimization remarks are guarded.
rdar://problem/25382153
llvm-svn: 265084
Diffstat (limited to 'llvm/test')
| -rw-r--r-- | llvm/test/LTO/X86/diagnostic-handler-remarks.ll | 52 |
1 files changed, 50 insertions, 2 deletions
diff --git a/llvm/test/LTO/X86/diagnostic-handler-remarks.ll b/llvm/test/LTO/X86/diagnostic-handler-remarks.ll index a368a677b2f..9da11f1ab62 100644 --- a/llvm/test/LTO/X86/diagnostic-handler-remarks.ll +++ b/llvm/test/LTO/X86/diagnostic-handler-remarks.ll @@ -3,31 +3,38 @@ ; Confirm that there are -pass-remarks. ; RUN: llvm-lto -pass-remarks=inline \ +; RUN: -exported-symbol _func2 -pass-remarks-analysis=loop-vectorize \ ; RUN: -exported-symbol _main -o %t.o %t.bc 2>&1 | \ ; RUN: FileCheck %s -allow-empty -check-prefix=REMARKS ; RUN: llvm-nm %t.o | FileCheck %s -check-prefix NM ; RUN: llvm-lto -pass-remarks=inline -use-diagnostic-handler \ +; RUN: -exported-symbol _func2 -pass-remarks-analysis=loop-vectorize \ ; RUN: -exported-symbol _main -o %t.o %t.bc 2>&1 | \ ; RUN: FileCheck %s -allow-empty -check-prefix=REMARKS_DH ; RUN: llvm-nm %t.o | FileCheck %s -check-prefix NM ; Confirm that -pass-remarks are not printed by default. ; RUN: llvm-lto \ +; RUN: -exported-symbol _func2 \ ; RUN: -exported-symbol _main -o %t.o %t.bc 2>&1 | \ ; RUN: FileCheck %s -allow-empty ; RUN: llvm-nm %t.o | FileCheck %s -check-prefix NM ; RUN: llvm-lto -use-diagnostic-handler \ +; RUN: -exported-symbol _func2 \ ; RUN: -exported-symbol _main -o %t.o %t.bc 2>&1 | \ ; RUN: FileCheck %s -allow-empty ; RUN: llvm-nm %t.o | FileCheck %s -check-prefix NM -; REMARKS: remark: -; REMARKS_DH: llvm-lto: remark: +; REMARKS: remark: {{.*}} foo inlined into main +; REMARKS: remark: {{.*}} loop not vectorized: cannot prove it is safe to reorder memory operations +; REMARKS_DH: llvm-lto: remark: {{.*}} foo inlined into main +; REMARKS_DH: llvm-lto: remark: {{.*}} loop not vectorized: cannot prove it is safe to reorder memory operations ; CHECK-NOT: remark: ; CHECK-NOT: llvm-lto: ; NM-NOT: foo +; NM: func2 ; NM: main target triple = "x86_64-apple-darwin" @@ -43,3 +50,44 @@ define i32 @main() { %i = call i32 @foo() ret i32 %i } + +define i32 @func2(i32* %out, i32* %out2, i32* %A, i32* %B, i32* %C, i32* %D, i32* %E, i32* %F) { +entry: + br label %for.body + +for.body: ; preds = %for.body, %entry + %i.037 = phi i64 [ 0, %entry ], [ %inc, %for.body ] + %arrayidx = getelementptr inbounds i32, i32* %A, i64 %i.037 + %0 = load i32, i32* %arrayidx, align 4 + %arrayidx1 = getelementptr inbounds i32, i32* %B, i64 %i.037 + %1 = load i32, i32* %arrayidx1, align 4 + %add = add nsw i32 %1, %0 + %arrayidx2 = getelementptr inbounds i32, i32* %C, i64 %i.037 + %2 = load i32, i32* %arrayidx2, align 4 + %add3 = add nsw i32 %add, %2 + %arrayidx4 = getelementptr inbounds i32, i32* %E, i64 %i.037 + %3 = load i32, i32* %arrayidx4, align 4 + %add5 = add nsw i32 %add3, %3 + %arrayidx6 = getelementptr inbounds i32, i32* %F, i64 %i.037 + %4 = load i32, i32* %arrayidx6, align 4 + %add7 = add nsw i32 %add5, %4 + %arrayidx8 = getelementptr inbounds i32, i32* %out, i64 %i.037 + store i32 %add7, i32* %arrayidx8, align 4 + %5 = load i32, i32* %arrayidx, align 4 + %6 = load i32, i32* %arrayidx1, align 4 + %add11 = add nsw i32 %6, %5 + %7 = load i32, i32* %arrayidx2, align 4 + %add13 = add nsw i32 %add11, %7 + %8 = load i32, i32* %arrayidx4, align 4 + %add15 = add nsw i32 %add13, %8 + %9 = load i32, i32* %arrayidx6, align 4 + %add17 = add nsw i32 %add15, %9 + %arrayidx18 = getelementptr inbounds i32, i32* %out2, i64 %i.037 + store i32 %add17, i32* %arrayidx18, align 4 + %inc = add i64 %i.037, 1 + %exitcond = icmp eq i64 %inc, 256 + br i1 %exitcond, label %for.end, label %for.body + +for.end: ; preds = %for.body + ret i32 undef +} |

