diff options
author | Dimitry Andric <dim@FreeBSD.org> | 2015-01-18 16:23:48 +0000 |
---|---|---|
committer | Dimitry Andric <dim@FreeBSD.org> | 2015-01-18 16:23:48 +0000 |
commit | 06d4ba388873e6d1cfa9cd715a8935ecc8cd2097 (patch) | |
tree | 3eb853da77d46cc77c4b017525a422f9ddb1385b /test/Frontend | |
parent | 30d791273d07fac9c0c1641a0731191bca6e8606 (diff) |
Notes
Diffstat (limited to 'test/Frontend')
-rw-r--r-- | test/Frontend/Inputs/profile-sample-use-loc-tracking.prof | 2 | ||||
-rw-r--r-- | test/Frontend/exceptions.c | 7 | ||||
-rw-r--r-- | test/Frontend/invalid-o-level.c | 7 | ||||
-rw-r--r-- | test/Frontend/output-failures.c | 2 | ||||
-rw-r--r-- | test/Frontend/print-header-includes.c | 3 | ||||
-rw-r--r-- | test/Frontend/profile-sample-use-loc-tracking.c | 19 | ||||
-rw-r--r-- | test/Frontend/source-col-map.c | 37 | ||||
-rw-r--r-- | test/Frontend/std.cl | 9 | ||||
-rw-r--r-- | test/Frontend/trigraphs.cpp | 17 | ||||
-rw-r--r-- | test/Frontend/verify-unknown-arg.c | 6 | ||||
-rw-r--r-- | test/Frontend/x86-target-cpu.c | 30 |
11 files changed, 133 insertions, 6 deletions
diff --git a/test/Frontend/Inputs/profile-sample-use-loc-tracking.prof b/test/Frontend/Inputs/profile-sample-use-loc-tracking.prof new file mode 100644 index 000000000000..ba9a678a4526 --- /dev/null +++ b/test/Frontend/Inputs/profile-sample-use-loc-tracking.prof @@ -0,0 +1,2 @@ +bar:100:100 +1: 2000 diff --git a/test/Frontend/exceptions.c b/test/Frontend/exceptions.c index 4bbaaa39bfa6..981b5b9045b5 100644 --- a/test/Frontend/exceptions.c +++ b/test/Frontend/exceptions.c @@ -1,6 +1,9 @@ -// RUN: %clang_cc1 -fms-compatibility -fexceptions -fcxx-exceptions -verify %s +// RUN: %clang_cc1 -fms-compatibility -fexceptions -fcxx-exceptions -DMS_MODE -verify %s // expected-no-diagnostics -#if defined(__EXCEPTIONS) +// RUN: %clang_cc1 -fms-compatibility -fexceptions -verify %s +// expected-no-diagnostics + +#if defined(MS_MODE) && defined(__EXCEPTIONS) #error __EXCEPTIONS should not be defined. #endif diff --git a/test/Frontend/invalid-o-level.c b/test/Frontend/invalid-o-level.c index 73be9b1c21ff..0314448b0ff2 100644 --- a/test/Frontend/invalid-o-level.c +++ b/test/Frontend/invalid-o-level.c @@ -1,4 +1,5 @@ -// RUN: %clang_cc1 %s -O900 -o /dev/null 2> %t.log -// RUN: FileCheck %s -input-file=%t.log +// RUN: %clang_cc1 %s -O900 -o /dev/null 2>&1 | FileCheck %s -// CHECK: warning: optimization level '-O900' is not supported; using '-O3' instead +// RUN: %clang_cc1 %s -O8 -o /dev/null 2>&1 | FileCheck %s + +// CHECK: warning: optimization level '-O{{.*}}' is not supported; using '-O3' instead diff --git a/test/Frontend/output-failures.c b/test/Frontend/output-failures.c index e2af7c7ddc90..362deb5e4629 100644 --- a/test/Frontend/output-failures.c +++ b/test/Frontend/output-failures.c @@ -1,4 +1,4 @@ // RUN: not %clang_cc1 -emit-llvm -o %S/doesnotexist/somename %s 2> %t // RUN: FileCheck -check-prefix=OUTPUTFAIL -input-file=%t %s -// OUTPUTFAIL: Error opening output file '{{.*}}doesnotexist{{.*}}' +// OUTPUTFAIL: error: unable to open output file '{{.*}}{{[/\\]}}test{{[/\\]}}Frontend{{[/\\]}}doesnotexist{{[/\\]}}somename': '{{[nN]}}o such file or directory' diff --git a/test/Frontend/print-header-includes.c b/test/Frontend/print-header-includes.c index e248c76f9776..6fde00cbbe5b 100644 --- a/test/Frontend/print-header-includes.c +++ b/test/Frontend/print-header-includes.c @@ -1,3 +1,6 @@ +// REQUIRES: shell + +// RUN: cd %S // RUN: %clang_cc1 -include Inputs/test3.h -E -H -o %t.out %s 2> %t.stderr // RUN: FileCheck < %t.stderr %s diff --git a/test/Frontend/profile-sample-use-loc-tracking.c b/test/Frontend/profile-sample-use-loc-tracking.c new file mode 100644 index 000000000000..31faad68d39e --- /dev/null +++ b/test/Frontend/profile-sample-use-loc-tracking.c @@ -0,0 +1,19 @@ +// This file tests that -fprofile-sample-use enables location tracking +// generation in the same way that -Rpass does. The sample profiler needs +// to associate line locations in the profile to the code, so it needs the +// frontend to emit source location annotations. + +// RUN: %clang_cc1 %s -fprofile-sample-use=%S/Inputs/profile-sample-use-loc-tracking.prof -emit-llvm -o - 2>/dev/null | FileCheck %s + +// -fprofile-sample-use should produce source location annotations, exclusively +// (just like -gmlt). +// CHECK: , !dbg ! +// CHECK-NOT: DW_TAG_base_type + +// But llvm.dbg.cu should be missing (to prevent writing debug info to +// the final output). +// CHECK-NOT: !llvm.dbg.cu = !{ + +int bar(int j) { + return (j + j - 2) * (j - 2) * j; +} diff --git a/test/Frontend/source-col-map.c b/test/Frontend/source-col-map.c new file mode 100644 index 000000000000..a14023bc82a8 --- /dev/null +++ b/test/Frontend/source-col-map.c @@ -0,0 +1,37 @@ +// RUN: not %clang_cc1 %s -fsyntax-only -fmessage-length 75 -o /dev/null 2>&1 | FileCheck %s -strict-whitespace + +// Test case for the text diagnostics source column conversion crash. + +// This test case tries to check the error diagnostic message printer, which is +// responsible to create the code snippet shorter than the message-length (in +// number of columns.) +// +// The error diagnostic message printer should be able to handle the non-ascii +// characters without any segmentation fault or assertion failure. If your +// changes to clang frontend crashes this case, it is likely that you are mixing +// column index with byte index which are two totally different concepts. + +// NOTE: This file is encoded in UTF-8 and intentionally contains some +// non-ASCII characters. + +__attribute__((format(printf, 1, 2))) +extern int printf(const char *fmt, ...); + +void test1(Unknown* b); // αααα αααα αααα αααα αααα αααα αααα αααα αααα αααα αααα +// CHECK: unknown type name 'Unknown' +// CHECK-NEXT: void test1(Unknown* b); // αααα αααα αααα αααα αααα αααα αααα ααα... +// CHECK-NEXT: {{^ \^$}} + +void test2(Unknown* b); // αααα αααα αααα αααα αααα αααα αααα αααα αααα + +// CHECK: unknown type name 'Unknown' +// CHECK-NEXT: void test2(Unknown* b); // αααα αααα αααα αααα αααα αααα αααα αααα αααα +// CHECK-NEXT: {{^ \^$}} + +void test3() { + /* αααα αααα αααα αααα αααα αααα αααα αααα αααα αααα */ printf("%d", "s"); +} +// CHECK: format specifies type 'int' but the argument has type 'char *' +// CHECK-NEXT: ...αααα αααα αααα αααα αααα αααα αααα αααα αααα */ printf("%d", "s"); +// CHECK-NEXT: {{^ ~~ \^~~$}} +// CHECK-NEXT: {{^ %s$}} diff --git a/test/Frontend/std.cl b/test/Frontend/std.cl new file mode 100644 index 000000000000..b811b64dabcb --- /dev/null +++ b/test/Frontend/std.cl @@ -0,0 +1,9 @@ +// RUN: %clang_cc1 %s -fsyntax-only -cl-std=CL +// RUN: %clang_cc1 %s -fsyntax-only -cl-std=CL1.1 +// RUN: %clang_cc1 %s -fsyntax-only -cl-std=CL1.2 +// RUN: %clang_cc1 %s -fsyntax-only -cl-std=CL2.0 +// RUN: not %clang_cc1 %s -fsyntax-only -cl-std=invalid -DINVALID 2>&1 | FileCheck %s + +#ifdef INVALID +// CHECK: invalid value 'invalid' in '-cl-std=invalid' +#endif diff --git a/test/Frontend/trigraphs.cpp b/test/Frontend/trigraphs.cpp new file mode 100644 index 000000000000..552078951aee --- /dev/null +++ b/test/Frontend/trigraphs.cpp @@ -0,0 +1,17 @@ +// RUN: %clang_cc1 -DSTDCPP11 -std=c++11 -verify -fsyntax-only %s +// RUN: %clang_cc1 -DSTDGNU11 -std=gnu++11 -verify -fsyntax-only %s +// RUN: %clang_cc1 -DSTDGNU11TRI -ftrigraphs -std=gnu++11 -verify -fsyntax-only %s +// RUN: %clang_cc1 -DSTDCPP17 -std=c++1z -verify -fsyntax-only %s +// RUN: %clang_cc1 -DSTDCPP17TRI -ftrigraphs -std=c++1z -verify -fsyntax-only %s +// RUN: %clang_cc1 -DMSCOMPAT -fms-compatibility -std=c++11 -verify -fsyntax-only %s + +void foo() { +#if defined(NOFLAGS) || defined(STDCPP11) || defined(STDGNU11TRI) || \ + defined(STDCPP17TRI) + const char c[] = "??/n"; // expected-warning{{trigraph converted to '\' character}} +#elif defined(STDGNU11) || defined(STDCPP17) || defined(MSCOMPAT) + const char c[] = "??/n"; // expected-warning{{trigraph ignored}} +#else +#error Not handled. +#endif +} diff --git a/test/Frontend/verify-unknown-arg.c b/test/Frontend/verify-unknown-arg.c new file mode 100644 index 000000000000..5767daedca3c --- /dev/null +++ b/test/Frontend/verify-unknown-arg.c @@ -0,0 +1,6 @@ +// RUN: not %clang_cc1 -asdf -verify %s 2>&1 | FileCheck %s + +// expected-no-diagnostics + +// CHECK: error: 'error' diagnostics seen but not expected: +// CHECK-NEXT: (frontend): unknown argument: '-asdf' diff --git a/test/Frontend/x86-target-cpu.c b/test/Frontend/x86-target-cpu.c new file mode 100644 index 000000000000..769c40a016e3 --- /dev/null +++ b/test/Frontend/x86-target-cpu.c @@ -0,0 +1,30 @@ +// Ensure we support the various CPU names. +// +// RUN: %clang_cc1 -triple x86_64-unknown-unknown -target-cpu nocona -verify %s +// RUN: %clang_cc1 -triple x86_64-unknown-unknown -target-cpu core2 -verify %s +// RUN: %clang_cc1 -triple x86_64-unknown-unknown -target-cpu penryn -verify %s +// RUN: %clang_cc1 -triple x86_64-unknown-unknown -target-cpu nehalem -verify %s +// RUN: %clang_cc1 -triple x86_64-unknown-unknown -target-cpu westmere -verify %s +// RUN: %clang_cc1 -triple x86_64-unknown-unknown -target-cpu sandybridge -verify %s +// RUN: %clang_cc1 -triple x86_64-unknown-unknown -target-cpu ivybridge -verify %s +// RUN: %clang_cc1 -triple x86_64-unknown-unknown -target-cpu haswell -verify %s +// RUN: %clang_cc1 -triple x86_64-unknown-unknown -target-cpu broadwell -verify %s +// RUN: %clang_cc1 -triple x86_64-unknown-unknown -target-cpu bonnell -verify %s +// RUN: %clang_cc1 -triple x86_64-unknown-unknown -target-cpu silvermont -verify %s +// RUN: %clang_cc1 -triple x86_64-unknown-unknown -target-cpu k8 -verify %s +// RUN: %clang_cc1 -triple x86_64-unknown-unknown -target-cpu opteron -verify %s +// RUN: %clang_cc1 -triple x86_64-unknown-unknown -target-cpu athlon64 -verify %s +// RUN: %clang_cc1 -triple x86_64-unknown-unknown -target-cpu athlon-fx -verify %s +// RUN: %clang_cc1 -triple x86_64-unknown-unknown -target-cpu k8-sse3 -verify %s +// RUN: %clang_cc1 -triple x86_64-unknown-unknown -target-cpu opteron-sse3 -verify %s +// RUN: %clang_cc1 -triple x86_64-unknown-unknown -target-cpu athlon64-sse3 -verify %s +// RUN: %clang_cc1 -triple x86_64-unknown-unknown -target-cpu amdfam10 -verify %s +// RUN: %clang_cc1 -triple x86_64-unknown-unknown -target-cpu barcelona -verify %s +// RUN: %clang_cc1 -triple x86_64-unknown-unknown -target-cpu bdver1 -verify %s +// RUN: %clang_cc1 -triple x86_64-unknown-unknown -target-cpu bdver2 -verify %s +// RUN: %clang_cc1 -triple x86_64-unknown-unknown -target-cpu bdver3 -verify %s +// RUN: %clang_cc1 -triple x86_64-unknown-unknown -target-cpu bdver4 -verify %s +// RUN: %clang_cc1 -triple x86_64-unknown-unknown -target-cpu btver1 -verify %s +// RUN: %clang_cc1 -triple x86_64-unknown-unknown -target-cpu btver2 -verify %s +// +// expected-no-diagnostics |