mirror of
https://github.com/Gericom/teak-llvm.git
synced 2025-06-20 03:55:48 -04:00

Re-commit of r258950 after fixing layering violation. The related LLVM patch adds a backend diagnostic type for reporting unsupported features, this adds a printer for them to clang. In the case where debug location information is not available, I've changed the printer to report the location as the first line of the function, rather than the closing brace, as the latter does not give the user any information. This also affects optimisation remarks. llvm-svn: 259499
22 lines
702 B
C
22 lines
702 B
C
// RUN: %clang -O1 -fvectorize -target x86_64-unknown-unknown -emit-llvm -Rpass-analysis -S %s -o - 2>&1 | FileCheck %s --check-prefix=RPASS
|
|
// RUN: %clang -O1 -fvectorize -target x86_64-unknown-unknown -emit-llvm -S %s -o - 2>&1 | FileCheck %s
|
|
|
|
// RPASS: {{.*}}:7:8: remark: loop not vectorized: loop contains a switch statement
|
|
// CHECK-NOT: {{.*}}:7:8: remark: loop not vectorized: loop contains a switch statement
|
|
|
|
double foo(int N, int *Array) {
|
|
double v = 0.0;
|
|
|
|
#pragma clang loop vectorize(enable)
|
|
for (int i = 0; i < N; i++) {
|
|
switch(Array[i]) {
|
|
case 0: v += 1.0f; break;
|
|
case 1: v -= 0.5f; break;
|
|
case 2: v *= 2.0f; break;
|
|
default: v = 0.0f;
|
|
}
|
|
}
|
|
|
|
return v;
|
|
}
|