forked from OSchip/llvm-project
Fix several accidental DOS line endings in source files
Summary: There are a number of files in the tree which have been accidentally checked in with DOS line endings. Convert these to native line endings. There are also a few files which have DOS line endings on purpose, and I have set the svn:eol-style property to 'CRLF' on those. Reviewers: joerg, aaron.ballman Subscribers: aaron.ballman, cfe-commits Differential Revision: http://reviews.llvm.org/D15849 llvm-svn: 256704
This commit is contained in:
parent
4ceea0a505
commit
b1aa87e120
|
@ -1,17 +1,17 @@
|
|||
// RUN: %clang_cc1 -fsyntax-only -std=c++11 -verify %s
|
||||
// expected-no-diagnostics
|
||||
|
||||
// NOTE: This file intentionally uses DOS-style line endings to test
|
||||
// that we don't propagate them into string literals as per [lex.string]p4.
|
||||
|
||||
constexpr const char* p = R"(a\
|
||||
b
|
||||
c)";
|
||||
|
||||
static_assert(p[0] == 'a', "");
|
||||
static_assert(p[1] == '\\', "");
|
||||
static_assert(p[2] == '\n', "");
|
||||
static_assert(p[3] == 'b', "");
|
||||
static_assert(p[4] == '\n', "");
|
||||
static_assert(p[5] == 'c', "");
|
||||
static_assert(p[6] == '\0', "");
|
||||
// RUN: %clang_cc1 -fsyntax-only -std=c++11 -verify %s
|
||||
// expected-no-diagnostics
|
||||
|
||||
// NOTE: This file intentionally uses DOS-style line endings to test
|
||||
// that we don't propagate them into string literals as per [lex.string]p4.
|
||||
|
||||
constexpr const char* p = R"(a\
|
||||
b
|
||||
c)";
|
||||
|
||||
static_assert(p[0] == 'a', "");
|
||||
static_assert(p[1] == '\\', "");
|
||||
static_assert(p[2] == '\n', "");
|
||||
static_assert(p[3] == 'b', "");
|
||||
static_assert(p[4] == '\n', "");
|
||||
static_assert(p[5] == 'c', "");
|
||||
static_assert(p[6] == '\0', "");
|
||||
|
|
|
@ -1,67 +1,67 @@
|
|||
// RUN: %clang_cc1 %s -triple=x86_64-apple-darwin -target-feature +avx512cd -emit-llvm -o - -Werror | FileCheck %s
|
||||
|
||||
// Don't include mm_malloc.h, it's system specific.
|
||||
#define __MM_MALLOC_H
|
||||
|
||||
#include <immintrin.h>
|
||||
|
||||
__m512i test_mm512_conflict_epi64(__m512i __A) {
|
||||
// CHECK-LABEL: @test_mm512_conflict_epi64
|
||||
// CHECK: @llvm.x86.avx512.mask.conflict.q.512
|
||||
return _mm512_conflict_epi64(__A);
|
||||
}
|
||||
__m512i test_mm512_mask_conflict_epi64(__m512i __W, __mmask8 __U, __m512i __A) {
|
||||
// CHECK-LABEL: @test_mm512_mask_conflict_epi64
|
||||
// CHECK: @llvm.x86.avx512.mask.conflict.q.512
|
||||
return _mm512_mask_conflict_epi64(__W,__U,__A);
|
||||
}
|
||||
__m512i test_mm512_maskz_conflict_epi64(__mmask8 __U, __m512i __A) {
|
||||
// CHECK-LABEL: @test_mm512_maskz_conflict_epi64
|
||||
// CHECK: @llvm.x86.avx512.mask.conflict.q.512
|
||||
return _mm512_maskz_conflict_epi64(__U,__A);
|
||||
}
|
||||
__m512i test_mm512_conflict_epi32(__m512i __A) {
|
||||
// CHECK-LABEL: @test_mm512_conflict_epi32
|
||||
// CHECK: @llvm.x86.avx512.mask.conflict.d.512
|
||||
return _mm512_conflict_epi32(__A);
|
||||
}
|
||||
__m512i test_mm512_mask_conflict_epi32(__m512i __W, __mmask16 __U, __m512i __A) {
|
||||
// CHECK-LABEL: @test_mm512_mask_conflict_epi32
|
||||
// CHECK: @llvm.x86.avx512.mask.conflict.d.512
|
||||
return _mm512_mask_conflict_epi32(__W,__U,__A);
|
||||
}
|
||||
__m512i test_mm512_maskz_conflict_epi32(__mmask16 __U, __m512i __A) {
|
||||
// CHECK-LABEL: @test_mm512_maskz_conflict_epi32
|
||||
// CHECK: @llvm.x86.avx512.mask.conflict.d.512
|
||||
return _mm512_maskz_conflict_epi32(__U,__A);
|
||||
}
|
||||
__m512i test_mm512_lzcnt_epi32(__m512i __A) {
|
||||
// CHECK-LABEL: @test_mm512_lzcnt_epi32
|
||||
// CHECK: @llvm.x86.avx512.mask.lzcnt.d.512
|
||||
return _mm512_lzcnt_epi32(__A);
|
||||
}
|
||||
__m512i test_mm512_mask_lzcnt_epi32(__m512i __W, __mmask16 __U, __m512i __A) {
|
||||
// CHECK-LABEL: @test_mm512_mask_lzcnt_epi32
|
||||
// CHECK: @llvm.x86.avx512.mask.lzcnt.d.512
|
||||
return _mm512_mask_lzcnt_epi32(__W,__U,__A);
|
||||
}
|
||||
__m512i test_mm512_maskz_lzcnt_epi32(__mmask16 __U, __m512i __A) {
|
||||
// CHECK-LABEL: @test_mm512_maskz_lzcnt_epi32
|
||||
// CHECK: @llvm.x86.avx512.mask.lzcnt.d.512
|
||||
return _mm512_maskz_lzcnt_epi32(__U,__A);
|
||||
}
|
||||
__m512i test_mm512_lzcnt_epi64(__m512i __A) {
|
||||
// CHECK-LABEL: @test_mm512_lzcnt_epi64
|
||||
// CHECK: @llvm.x86.avx512.mask.lzcnt.q.512
|
||||
return _mm512_lzcnt_epi64(__A);
|
||||
}
|
||||
__m512i test_mm512_mask_lzcnt_epi64(__m512i __W, __mmask8 __U, __m512i __A) {
|
||||
// CHECK-LABEL: @test_mm512_mask_lzcnt_epi64
|
||||
// CHECK: @llvm.x86.avx512.mask.lzcnt.q.512
|
||||
return _mm512_mask_lzcnt_epi64(__W,__U,__A);
|
||||
}
|
||||
__m512i test_mm512_maskz_lzcnt_epi64(__mmask8 __U, __m512i __A) {
|
||||
// CHECK-LABEL: @test_mm512_maskz_lzcnt_epi64
|
||||
// CHECK: @llvm.x86.avx512.mask.lzcnt.q.512
|
||||
return _mm512_maskz_lzcnt_epi64(__U,__A);
|
||||
}
|
||||
// RUN: %clang_cc1 %s -triple=x86_64-apple-darwin -target-feature +avx512cd -emit-llvm -o - -Werror | FileCheck %s
|
||||
|
||||
// Don't include mm_malloc.h, it's system specific.
|
||||
#define __MM_MALLOC_H
|
||||
|
||||
#include <immintrin.h>
|
||||
|
||||
__m512i test_mm512_conflict_epi64(__m512i __A) {
|
||||
// CHECK-LABEL: @test_mm512_conflict_epi64
|
||||
// CHECK: @llvm.x86.avx512.mask.conflict.q.512
|
||||
return _mm512_conflict_epi64(__A);
|
||||
}
|
||||
__m512i test_mm512_mask_conflict_epi64(__m512i __W, __mmask8 __U, __m512i __A) {
|
||||
// CHECK-LABEL: @test_mm512_mask_conflict_epi64
|
||||
// CHECK: @llvm.x86.avx512.mask.conflict.q.512
|
||||
return _mm512_mask_conflict_epi64(__W,__U,__A);
|
||||
}
|
||||
__m512i test_mm512_maskz_conflict_epi64(__mmask8 __U, __m512i __A) {
|
||||
// CHECK-LABEL: @test_mm512_maskz_conflict_epi64
|
||||
// CHECK: @llvm.x86.avx512.mask.conflict.q.512
|
||||
return _mm512_maskz_conflict_epi64(__U,__A);
|
||||
}
|
||||
__m512i test_mm512_conflict_epi32(__m512i __A) {
|
||||
// CHECK-LABEL: @test_mm512_conflict_epi32
|
||||
// CHECK: @llvm.x86.avx512.mask.conflict.d.512
|
||||
return _mm512_conflict_epi32(__A);
|
||||
}
|
||||
__m512i test_mm512_mask_conflict_epi32(__m512i __W, __mmask16 __U, __m512i __A) {
|
||||
// CHECK-LABEL: @test_mm512_mask_conflict_epi32
|
||||
// CHECK: @llvm.x86.avx512.mask.conflict.d.512
|
||||
return _mm512_mask_conflict_epi32(__W,__U,__A);
|
||||
}
|
||||
__m512i test_mm512_maskz_conflict_epi32(__mmask16 __U, __m512i __A) {
|
||||
// CHECK-LABEL: @test_mm512_maskz_conflict_epi32
|
||||
// CHECK: @llvm.x86.avx512.mask.conflict.d.512
|
||||
return _mm512_maskz_conflict_epi32(__U,__A);
|
||||
}
|
||||
__m512i test_mm512_lzcnt_epi32(__m512i __A) {
|
||||
// CHECK-LABEL: @test_mm512_lzcnt_epi32
|
||||
// CHECK: @llvm.x86.avx512.mask.lzcnt.d.512
|
||||
return _mm512_lzcnt_epi32(__A);
|
||||
}
|
||||
__m512i test_mm512_mask_lzcnt_epi32(__m512i __W, __mmask16 __U, __m512i __A) {
|
||||
// CHECK-LABEL: @test_mm512_mask_lzcnt_epi32
|
||||
// CHECK: @llvm.x86.avx512.mask.lzcnt.d.512
|
||||
return _mm512_mask_lzcnt_epi32(__W,__U,__A);
|
||||
}
|
||||
__m512i test_mm512_maskz_lzcnt_epi32(__mmask16 __U, __m512i __A) {
|
||||
// CHECK-LABEL: @test_mm512_maskz_lzcnt_epi32
|
||||
// CHECK: @llvm.x86.avx512.mask.lzcnt.d.512
|
||||
return _mm512_maskz_lzcnt_epi32(__U,__A);
|
||||
}
|
||||
__m512i test_mm512_lzcnt_epi64(__m512i __A) {
|
||||
// CHECK-LABEL: @test_mm512_lzcnt_epi64
|
||||
// CHECK: @llvm.x86.avx512.mask.lzcnt.q.512
|
||||
return _mm512_lzcnt_epi64(__A);
|
||||
}
|
||||
__m512i test_mm512_mask_lzcnt_epi64(__m512i __W, __mmask8 __U, __m512i __A) {
|
||||
// CHECK-LABEL: @test_mm512_mask_lzcnt_epi64
|
||||
// CHECK: @llvm.x86.avx512.mask.lzcnt.q.512
|
||||
return _mm512_mask_lzcnt_epi64(__W,__U,__A);
|
||||
}
|
||||
__m512i test_mm512_maskz_lzcnt_epi64(__mmask8 __U, __m512i __A) {
|
||||
// CHECK-LABEL: @test_mm512_maskz_lzcnt_epi64
|
||||
// CHECK: @llvm.x86.avx512.mask.lzcnt.q.512
|
||||
return _mm512_maskz_lzcnt_epi64(__U,__A);
|
||||
}
|
||||
|
|
|
@ -1,18 +1,18 @@
|
|||
// RUN: %clang_cc1 %s -triple=x86_64-apple-darwin -target-feature +pku -emit-llvm -o - -Werror | FileCheck %s
|
||||
|
||||
// Don't include mm_malloc.h, it's system specific.
|
||||
#define __MM_MALLOC_H
|
||||
|
||||
#include <immintrin.h>
|
||||
|
||||
unsigned int test_rdpkru_u32() {
|
||||
// CHECK-LABEL: @test_rdpkru_u32
|
||||
// CHECK: @llvm.x86.rdpkru
|
||||
return _rdpkru_u32();
|
||||
}
|
||||
void test_wrpkru(unsigned int __A) {
|
||||
// CHECK-LABEL: @test_wrpkru
|
||||
// CHECK: @llvm.x86.wrpkru
|
||||
_wrpkru(__A);
|
||||
return ;
|
||||
}
|
||||
// RUN: %clang_cc1 %s -triple=x86_64-apple-darwin -target-feature +pku -emit-llvm -o - -Werror | FileCheck %s
|
||||
|
||||
// Don't include mm_malloc.h, it's system specific.
|
||||
#define __MM_MALLOC_H
|
||||
|
||||
#include <immintrin.h>
|
||||
|
||||
unsigned int test_rdpkru_u32() {
|
||||
// CHECK-LABEL: @test_rdpkru_u32
|
||||
// CHECK: @llvm.x86.rdpkru
|
||||
return _rdpkru_u32();
|
||||
}
|
||||
void test_wrpkru(unsigned int __A) {
|
||||
// CHECK-LABEL: @test_wrpkru
|
||||
// CHECK: @llvm.x86.wrpkru
|
||||
_wrpkru(__A);
|
||||
return ;
|
||||
}
|
||||
|
|
|
@ -1,72 +1,72 @@
|
|||
// RUN: %clang_cc1 %s -DTEST_XSAVE -O0 -triple=i686-unknown-unknown -target-feature +xsave -emit-llvm -o - -Werror | FileCheck %s --check-prefix=XSAVE
|
||||
// RUN: %clang_cc1 %s -DTEST_XSAVE -O0 -triple=i686-unknown-unknown -target-feature +xsave -fno-signed-char -emit-llvm -o - -Werror | FileCheck %s --check-prefix=XSAVE
|
||||
|
||||
// RUN: %clang_cc1 %s -DTEST_XSAVEOPT -O0 -triple=i686-unknown-unknown -target-feature +xsave -target-feature +xsaveopt -emit-llvm -o - -Werror | FileCheck %s --check-prefix=XSAVEOPT
|
||||
// RUN: %clang_cc1 %s -DTEST_XSAVEOPT -O0 -triple=i686-unknown-unknown -target-feature +xsave -target-feature +xsaveopt -fno-signed-char -emit-llvm -o - -Werror | FileCheck %s --check-prefix=XSAVEOPT
|
||||
|
||||
// RUN: %clang_cc1 %s -DTEST_XSAVEC -O0 -triple=i686-unknown-unknown -target-feature +xsave -target-feature +xsavec -emit-llvm -o - -Werror | FileCheck %s --check-prefix=XSAVEC
|
||||
// RUN: %clang_cc1 %s -DTEST_XSAVEC -O0 -triple=i686-unknown-unknown -target-feature +xsave -target-feature +xsavec -fno-signed-char -emit-llvm -o - -Werror | FileCheck %s --check-prefix=XSAVEC
|
||||
|
||||
// RUN: %clang_cc1 %s -DTEST_XSAVES -O0 -triple=i686-unknown-unknown -target-feature +xsave -target-feature +xsaves -emit-llvm -o - -Werror | FileCheck %s --check-prefix=XSAVES
|
||||
// RUN: %clang_cc1 %s -DTEST_XSAVES -O0 -triple=i686-unknown-unknown -target-feature +xsave -target-feature +xsaves -fno-signed-char -emit-llvm -o - -Werror | FileCheck %s --check-prefix=XSAVES
|
||||
|
||||
void test() {
|
||||
unsigned long long tmp_ULLi;
|
||||
void* tmp_vp;
|
||||
|
||||
#ifdef TEST_XSAVE
|
||||
// XSAVE: [[tmp_vp_1:%[0-9a-zA-z]+]] = load i8*, i8** %tmp_vp, align 4
|
||||
// XSAVE: [[tmp_ULLi_1:%[0-9a-zA-z]+]] = load i64, i64* %tmp_ULLi, align 8
|
||||
// XSAVE: [[high64_1:%[0-9a-zA-z]+]] = lshr i64 [[tmp_ULLi_1]], 32
|
||||
// XSAVE: [[high32_1:%[0-9a-zA-z]+]] = trunc i64 [[high64_1]] to i32
|
||||
// XSAVE: [[low32_1:%[0-9a-zA-z]+]] = trunc i64 [[tmp_ULLi_1]] to i32
|
||||
// XSAVE: call void @llvm.x86.xsave(i8* [[tmp_vp_1]], i32 [[high32_1]], i32 [[low32_1]])
|
||||
(void)__builtin_ia32_xsave(tmp_vp, tmp_ULLi);
|
||||
|
||||
// XSAVE: [[tmp_vp_3:%[0-9a-zA-z]+]] = load i8*, i8** %tmp_vp, align 4
|
||||
// XSAVE: [[tmp_ULLi_3:%[0-9a-zA-z]+]] = load i64, i64* %tmp_ULLi, align 8
|
||||
// XSAVE: [[high64_3:%[0-9a-zA-z]+]] = lshr i64 [[tmp_ULLi_3]], 32
|
||||
// XSAVE: [[high32_3:%[0-9a-zA-z]+]] = trunc i64 [[high64_3]] to i32
|
||||
// XSAVE: [[low32_3:%[0-9a-zA-z]+]] = trunc i64 [[tmp_ULLi_3]] to i32
|
||||
// XSAVE: call void @llvm.x86.xrstor(i8* [[tmp_vp_3]], i32 [[high32_3]], i32 [[low32_3]])
|
||||
(void)__builtin_ia32_xrstor(tmp_vp, tmp_ULLi);
|
||||
#endif
|
||||
|
||||
#ifdef TEST_XSAVEOPT
|
||||
// XSAVEOPT: [[tmp_vp_1:%[0-9a-zA-z]+]] = load i8*, i8** %tmp_vp, align 4
|
||||
// XSAVEOPT: [[tmp_ULLi_1:%[0-9a-zA-z]+]] = load i64, i64* %tmp_ULLi, align 8
|
||||
// XSAVEOPT: [[high64_1:%[0-9a-zA-z]+]] = lshr i64 [[tmp_ULLi_1]], 32
|
||||
// XSAVEOPT: [[high32_1:%[0-9a-zA-z]+]] = trunc i64 [[high64_1]] to i32
|
||||
// XSAVEOPT: [[low32_1:%[0-9a-zA-z]+]] = trunc i64 [[tmp_ULLi_1]] to i32
|
||||
// XSAVEOPT: call void @llvm.x86.xsaveopt(i8* [[tmp_vp_1]], i32 [[high32_1]], i32 [[low32_1]])
|
||||
(void)__builtin_ia32_xsaveopt(tmp_vp, tmp_ULLi);
|
||||
#endif
|
||||
|
||||
#ifdef TEST_XSAVEC
|
||||
// XSAVEC: [[tmp_vp_1:%[0-9a-zA-z]+]] = load i8*, i8** %tmp_vp, align 4
|
||||
// XSAVEC: [[tmp_ULLi_1:%[0-9a-zA-z]+]] = load i64, i64* %tmp_ULLi, align 8
|
||||
// XSAVEC: [[high64_1:%[0-9a-zA-z]+]] = lshr i64 [[tmp_ULLi_1]], 32
|
||||
// XSAVEC: [[high32_1:%[0-9a-zA-z]+]] = trunc i64 [[high64_1]] to i32
|
||||
// XSAVEC: [[low32_1:%[0-9a-zA-z]+]] = trunc i64 [[tmp_ULLi_1]] to i32
|
||||
// XSAVEC: call void @llvm.x86.xsavec(i8* [[tmp_vp_1]], i32 [[high32_1]], i32 [[low32_1]])
|
||||
(void)__builtin_ia32_xsavec(tmp_vp, tmp_ULLi);
|
||||
#endif
|
||||
|
||||
#ifdef TEST_XSAVES
|
||||
// XSAVES: [[tmp_vp_1:%[0-9a-zA-z]+]] = load i8*, i8** %tmp_vp, align 4
|
||||
// XSAVES: [[tmp_ULLi_1:%[0-9a-zA-z]+]] = load i64, i64* %tmp_ULLi, align 8
|
||||
// XSAVES: [[high64_1:%[0-9a-zA-z]+]] = lshr i64 [[tmp_ULLi_1]], 32
|
||||
// XSAVES: [[high32_1:%[0-9a-zA-z]+]] = trunc i64 [[high64_1]] to i32
|
||||
// XSAVES: [[low32_1:%[0-9a-zA-z]+]] = trunc i64 [[tmp_ULLi_1]] to i32
|
||||
// XSAVES: call void @llvm.x86.xsaves(i8* [[tmp_vp_1]], i32 [[high32_1]], i32 [[low32_1]])
|
||||
(void)__builtin_ia32_xsaves(tmp_vp, tmp_ULLi);
|
||||
|
||||
// XSAVES: [[tmp_vp_3:%[0-9a-zA-z]+]] = load i8*, i8** %tmp_vp, align 4
|
||||
// XSAVES: [[tmp_ULLi_3:%[0-9a-zA-z]+]] = load i64, i64* %tmp_ULLi, align 8
|
||||
// XSAVES: [[high64_3:%[0-9a-zA-z]+]] = lshr i64 [[tmp_ULLi_3]], 32
|
||||
// XSAVES: [[high32_3:%[0-9a-zA-z]+]] = trunc i64 [[high64_3]] to i32
|
||||
// XSAVES: [[low32_3:%[0-9a-zA-z]+]] = trunc i64 [[tmp_ULLi_3]] to i32
|
||||
// XSAVES: call void @llvm.x86.xrstors(i8* [[tmp_vp_3]], i32 [[high32_3]], i32 [[low32_3]])
|
||||
(void)__builtin_ia32_xrstors(tmp_vp, tmp_ULLi);
|
||||
#endif
|
||||
}
|
||||
// RUN: %clang_cc1 %s -DTEST_XSAVE -O0 -triple=i686-unknown-unknown -target-feature +xsave -emit-llvm -o - -Werror | FileCheck %s --check-prefix=XSAVE
|
||||
// RUN: %clang_cc1 %s -DTEST_XSAVE -O0 -triple=i686-unknown-unknown -target-feature +xsave -fno-signed-char -emit-llvm -o - -Werror | FileCheck %s --check-prefix=XSAVE
|
||||
|
||||
// RUN: %clang_cc1 %s -DTEST_XSAVEOPT -O0 -triple=i686-unknown-unknown -target-feature +xsave -target-feature +xsaveopt -emit-llvm -o - -Werror | FileCheck %s --check-prefix=XSAVEOPT
|
||||
// RUN: %clang_cc1 %s -DTEST_XSAVEOPT -O0 -triple=i686-unknown-unknown -target-feature +xsave -target-feature +xsaveopt -fno-signed-char -emit-llvm -o - -Werror | FileCheck %s --check-prefix=XSAVEOPT
|
||||
|
||||
// RUN: %clang_cc1 %s -DTEST_XSAVEC -O0 -triple=i686-unknown-unknown -target-feature +xsave -target-feature +xsavec -emit-llvm -o - -Werror | FileCheck %s --check-prefix=XSAVEC
|
||||
// RUN: %clang_cc1 %s -DTEST_XSAVEC -O0 -triple=i686-unknown-unknown -target-feature +xsave -target-feature +xsavec -fno-signed-char -emit-llvm -o - -Werror | FileCheck %s --check-prefix=XSAVEC
|
||||
|
||||
// RUN: %clang_cc1 %s -DTEST_XSAVES -O0 -triple=i686-unknown-unknown -target-feature +xsave -target-feature +xsaves -emit-llvm -o - -Werror | FileCheck %s --check-prefix=XSAVES
|
||||
// RUN: %clang_cc1 %s -DTEST_XSAVES -O0 -triple=i686-unknown-unknown -target-feature +xsave -target-feature +xsaves -fno-signed-char -emit-llvm -o - -Werror | FileCheck %s --check-prefix=XSAVES
|
||||
|
||||
void test() {
|
||||
unsigned long long tmp_ULLi;
|
||||
void* tmp_vp;
|
||||
|
||||
#ifdef TEST_XSAVE
|
||||
// XSAVE: [[tmp_vp_1:%[0-9a-zA-z]+]] = load i8*, i8** %tmp_vp, align 4
|
||||
// XSAVE: [[tmp_ULLi_1:%[0-9a-zA-z]+]] = load i64, i64* %tmp_ULLi, align 8
|
||||
// XSAVE: [[high64_1:%[0-9a-zA-z]+]] = lshr i64 [[tmp_ULLi_1]], 32
|
||||
// XSAVE: [[high32_1:%[0-9a-zA-z]+]] = trunc i64 [[high64_1]] to i32
|
||||
// XSAVE: [[low32_1:%[0-9a-zA-z]+]] = trunc i64 [[tmp_ULLi_1]] to i32
|
||||
// XSAVE: call void @llvm.x86.xsave(i8* [[tmp_vp_1]], i32 [[high32_1]], i32 [[low32_1]])
|
||||
(void)__builtin_ia32_xsave(tmp_vp, tmp_ULLi);
|
||||
|
||||
// XSAVE: [[tmp_vp_3:%[0-9a-zA-z]+]] = load i8*, i8** %tmp_vp, align 4
|
||||
// XSAVE: [[tmp_ULLi_3:%[0-9a-zA-z]+]] = load i64, i64* %tmp_ULLi, align 8
|
||||
// XSAVE: [[high64_3:%[0-9a-zA-z]+]] = lshr i64 [[tmp_ULLi_3]], 32
|
||||
// XSAVE: [[high32_3:%[0-9a-zA-z]+]] = trunc i64 [[high64_3]] to i32
|
||||
// XSAVE: [[low32_3:%[0-9a-zA-z]+]] = trunc i64 [[tmp_ULLi_3]] to i32
|
||||
// XSAVE: call void @llvm.x86.xrstor(i8* [[tmp_vp_3]], i32 [[high32_3]], i32 [[low32_3]])
|
||||
(void)__builtin_ia32_xrstor(tmp_vp, tmp_ULLi);
|
||||
#endif
|
||||
|
||||
#ifdef TEST_XSAVEOPT
|
||||
// XSAVEOPT: [[tmp_vp_1:%[0-9a-zA-z]+]] = load i8*, i8** %tmp_vp, align 4
|
||||
// XSAVEOPT: [[tmp_ULLi_1:%[0-9a-zA-z]+]] = load i64, i64* %tmp_ULLi, align 8
|
||||
// XSAVEOPT: [[high64_1:%[0-9a-zA-z]+]] = lshr i64 [[tmp_ULLi_1]], 32
|
||||
// XSAVEOPT: [[high32_1:%[0-9a-zA-z]+]] = trunc i64 [[high64_1]] to i32
|
||||
// XSAVEOPT: [[low32_1:%[0-9a-zA-z]+]] = trunc i64 [[tmp_ULLi_1]] to i32
|
||||
// XSAVEOPT: call void @llvm.x86.xsaveopt(i8* [[tmp_vp_1]], i32 [[high32_1]], i32 [[low32_1]])
|
||||
(void)__builtin_ia32_xsaveopt(tmp_vp, tmp_ULLi);
|
||||
#endif
|
||||
|
||||
#ifdef TEST_XSAVEC
|
||||
// XSAVEC: [[tmp_vp_1:%[0-9a-zA-z]+]] = load i8*, i8** %tmp_vp, align 4
|
||||
// XSAVEC: [[tmp_ULLi_1:%[0-9a-zA-z]+]] = load i64, i64* %tmp_ULLi, align 8
|
||||
// XSAVEC: [[high64_1:%[0-9a-zA-z]+]] = lshr i64 [[tmp_ULLi_1]], 32
|
||||
// XSAVEC: [[high32_1:%[0-9a-zA-z]+]] = trunc i64 [[high64_1]] to i32
|
||||
// XSAVEC: [[low32_1:%[0-9a-zA-z]+]] = trunc i64 [[tmp_ULLi_1]] to i32
|
||||
// XSAVEC: call void @llvm.x86.xsavec(i8* [[tmp_vp_1]], i32 [[high32_1]], i32 [[low32_1]])
|
||||
(void)__builtin_ia32_xsavec(tmp_vp, tmp_ULLi);
|
||||
#endif
|
||||
|
||||
#ifdef TEST_XSAVES
|
||||
// XSAVES: [[tmp_vp_1:%[0-9a-zA-z]+]] = load i8*, i8** %tmp_vp, align 4
|
||||
// XSAVES: [[tmp_ULLi_1:%[0-9a-zA-z]+]] = load i64, i64* %tmp_ULLi, align 8
|
||||
// XSAVES: [[high64_1:%[0-9a-zA-z]+]] = lshr i64 [[tmp_ULLi_1]], 32
|
||||
// XSAVES: [[high32_1:%[0-9a-zA-z]+]] = trunc i64 [[high64_1]] to i32
|
||||
// XSAVES: [[low32_1:%[0-9a-zA-z]+]] = trunc i64 [[tmp_ULLi_1]] to i32
|
||||
// XSAVES: call void @llvm.x86.xsaves(i8* [[tmp_vp_1]], i32 [[high32_1]], i32 [[low32_1]])
|
||||
(void)__builtin_ia32_xsaves(tmp_vp, tmp_ULLi);
|
||||
|
||||
// XSAVES: [[tmp_vp_3:%[0-9a-zA-z]+]] = load i8*, i8** %tmp_vp, align 4
|
||||
// XSAVES: [[tmp_ULLi_3:%[0-9a-zA-z]+]] = load i64, i64* %tmp_ULLi, align 8
|
||||
// XSAVES: [[high64_3:%[0-9a-zA-z]+]] = lshr i64 [[tmp_ULLi_3]], 32
|
||||
// XSAVES: [[high32_3:%[0-9a-zA-z]+]] = trunc i64 [[high64_3]] to i32
|
||||
// XSAVES: [[low32_3:%[0-9a-zA-z]+]] = trunc i64 [[tmp_ULLi_3]] to i32
|
||||
// XSAVES: call void @llvm.x86.xrstors(i8* [[tmp_vp_3]], i32 [[high32_3]], i32 [[low32_3]])
|
||||
(void)__builtin_ia32_xrstors(tmp_vp, tmp_ULLi);
|
||||
#endif
|
||||
}
|
||||
|
|
|
@ -1,120 +1,120 @@
|
|||
// RUN: %clang_cc1 %s -DTEST_XSAVE -O0 -triple=x86_64-unknown-unknown -target-feature +xsave -emit-llvm -o - -Werror | FileCheck %s --check-prefix=XSAVE
|
||||
// RUN: %clang_cc1 %s -DTEST_XSAVE -O0 -triple=x86_64-unknown-unknown -target-feature +xsave -fno-signed-char -emit-llvm -o - -Werror | FileCheck %s --check-prefix=XSAVE
|
||||
|
||||
// RUN: %clang_cc1 %s -DTEST_XSAVEOPT -O0 -triple=x86_64-unknown-unknown -target-feature +xsave -target-feature +xsaveopt -emit-llvm -o - -Werror | FileCheck %s --check-prefix=XSAVEOPT
|
||||
// RUN: %clang_cc1 %s -DTEST_XSAVEOPT -O0 -triple=x86_64-unknown-unknown -target-feature +xsave -target-feature +xsaveopt -fno-signed-char -emit-llvm -o - -Werror | FileCheck %s --check-prefix=XSAVEOPT
|
||||
|
||||
// RUN: %clang_cc1 %s -DTEST_XSAVEC -O0 -triple=x86_64-unknown-unknown -target-feature +xsave -target-feature +xsavec -emit-llvm -o - -Werror | FileCheck %s --check-prefix=XSAVEC
|
||||
// RUN: %clang_cc1 %s -DTEST_XSAVEC -O0 -triple=x86_64-unknown-unknown -target-feature +xsave -target-feature +xsavec -fno-signed-char -emit-llvm -o - -Werror | FileCheck %s --check-prefix=XSAVEC
|
||||
|
||||
// RUN: %clang_cc1 %s -DTEST_XSAVES -O0 -triple=x86_64-unknown-unknown -target-feature +xsave -target-feature +xsaves -emit-llvm -o - -Werror | FileCheck %s --check-prefix=XSAVES
|
||||
// RUN: %clang_cc1 %s -DTEST_XSAVES -O0 -triple=x86_64-unknown-unknown -target-feature +xsave -target-feature +xsaves -fno-signed-char -emit-llvm -o - -Werror | FileCheck %s --check-prefix=XSAVES
|
||||
|
||||
void test() {
|
||||
unsigned long long tmp_ULLi;
|
||||
void* tmp_vp;
|
||||
|
||||
#ifdef TEST_XSAVE
|
||||
// XSAVE: [[tmp_vp_1:%[0-9a-zA-z]+]] = load i8*, i8** %tmp_vp, align 8
|
||||
// XSAVE: [[tmp_ULLi_1:%[0-9a-zA-z]+]] = load i64, i64* %tmp_ULLi, align 8
|
||||
// XSAVE: [[high64_1:%[0-9a-zA-z]+]] = lshr i64 [[tmp_ULLi_1]], 32
|
||||
// XSAVE: [[high32_1:%[0-9a-zA-z]+]] = trunc i64 [[high64_1]] to i32
|
||||
// XSAVE: [[low32_1:%[0-9a-zA-z]+]] = trunc i64 [[tmp_ULLi_1]] to i32
|
||||
// XSAVE: call void @llvm.x86.xsave(i8* [[tmp_vp_1]], i32 [[high32_1]], i32 [[low32_1]])
|
||||
(void)__builtin_ia32_xsave(tmp_vp, tmp_ULLi);
|
||||
|
||||
// XSAVE: [[tmp_vp_2:%[0-9a-zA-z]+]] = load i8*, i8** %tmp_vp, align 8
|
||||
// XSAVE: [[tmp_ULLi_2:%[0-9a-zA-z]+]] = load i64, i64* %tmp_ULLi, align 8
|
||||
// XSAVE: [[high64_2:%[0-9a-zA-z]+]] = lshr i64 [[tmp_ULLi_2]], 32
|
||||
// XSAVE: [[high32_2:%[0-9a-zA-z]+]] = trunc i64 [[high64_2]] to i32
|
||||
// XSAVE: [[low32_2:%[0-9a-zA-z]+]] = trunc i64 [[tmp_ULLi_2]] to i32
|
||||
// XSAVE: call void @llvm.x86.xsave64(i8* [[tmp_vp_2]], i32 [[high32_2]], i32 [[low32_2]])
|
||||
(void)__builtin_ia32_xsave64(tmp_vp, tmp_ULLi);
|
||||
|
||||
// XSAVE: [[tmp_vp_3:%[0-9a-zA-z]+]] = load i8*, i8** %tmp_vp, align 8
|
||||
// XSAVE: [[tmp_ULLi_3:%[0-9a-zA-z]+]] = load i64, i64* %tmp_ULLi, align 8
|
||||
// XSAVE: [[high64_3:%[0-9a-zA-z]+]] = lshr i64 [[tmp_ULLi_3]], 32
|
||||
// XSAVE: [[high32_3:%[0-9a-zA-z]+]] = trunc i64 [[high64_3]] to i32
|
||||
// XSAVE: [[low32_3:%[0-9a-zA-z]+]] = trunc i64 [[tmp_ULLi_3]] to i32
|
||||
// XSAVE: call void @llvm.x86.xrstor(i8* [[tmp_vp_3]], i32 [[high32_3]], i32 [[low32_3]])
|
||||
(void)__builtin_ia32_xrstor(tmp_vp, tmp_ULLi);
|
||||
|
||||
// XSAVE: [[tmp_vp_4:%[0-9a-zA-z]+]] = load i8*, i8** %tmp_vp, align 8
|
||||
// XSAVE: [[tmp_ULLi_4:%[0-9a-zA-z]+]] = load i64, i64* %tmp_ULLi, align 8
|
||||
// XSAVE: [[high64_4:%[0-9a-zA-z]+]] = lshr i64 [[tmp_ULLi_4]], 32
|
||||
// XSAVE: [[high32_4:%[0-9a-zA-z]+]] = trunc i64 [[high64_4]] to i32
|
||||
// XSAVE: [[low32_4:%[0-9a-zA-z]+]] = trunc i64 [[tmp_ULLi_4]] to i32
|
||||
// XSAVE: call void @llvm.x86.xrstor64(i8* [[tmp_vp_4]], i32 [[high32_4]], i32 [[low32_4]])
|
||||
(void)__builtin_ia32_xrstor64(tmp_vp, tmp_ULLi);
|
||||
#endif
|
||||
|
||||
#ifdef TEST_XSAVEOPT
|
||||
// XSAVEOPT: [[tmp_vp_1:%[0-9a-zA-z]+]] = load i8*, i8** %tmp_vp, align 8
|
||||
// XSAVEOPT: [[tmp_ULLi_1:%[0-9a-zA-z]+]] = load i64, i64* %tmp_ULLi, align 8
|
||||
// XSAVEOPT: [[high64_1:%[0-9a-zA-z]+]] = lshr i64 [[tmp_ULLi_1]], 32
|
||||
// XSAVEOPT: [[high32_1:%[0-9a-zA-z]+]] = trunc i64 [[high64_1]] to i32
|
||||
// XSAVEOPT: [[low32_1:%[0-9a-zA-z]+]] = trunc i64 [[tmp_ULLi_1]] to i32
|
||||
// XSAVEOPT: call void @llvm.x86.xsaveopt(i8* [[tmp_vp_1]], i32 [[high32_1]], i32 [[low32_1]])
|
||||
(void)__builtin_ia32_xsaveopt(tmp_vp, tmp_ULLi);
|
||||
|
||||
// XSAVEOPT: [[tmp_vp_2:%[0-9a-zA-z]+]] = load i8*, i8** %tmp_vp, align 8
|
||||
// XSAVEOPT: [[tmp_ULLi_2:%[0-9a-zA-z]+]] = load i64, i64* %tmp_ULLi, align 8
|
||||
// XSAVEOPT: [[high64_2:%[0-9a-zA-z]+]] = lshr i64 [[tmp_ULLi_2]], 32
|
||||
// XSAVEOPT: [[high32_2:%[0-9a-zA-z]+]] = trunc i64 [[high64_2]] to i32
|
||||
// XSAVEOPT: [[low32_2:%[0-9a-zA-z]+]] = trunc i64 [[tmp_ULLi_2]] to i32
|
||||
// XSAVEOPT: call void @llvm.x86.xsaveopt64(i8* [[tmp_vp_2]], i32 [[high32_2]], i32 [[low32_2]])
|
||||
(void)__builtin_ia32_xsaveopt64(tmp_vp, tmp_ULLi);
|
||||
#endif
|
||||
|
||||
#ifdef TEST_XSAVEC
|
||||
// XSAVEC: [[tmp_vp_1:%[0-9a-zA-z]+]] = load i8*, i8** %tmp_vp, align 8
|
||||
// XSAVEC: [[tmp_ULLi_1:%[0-9a-zA-z]+]] = load i64, i64* %tmp_ULLi, align 8
|
||||
// XSAVEC: [[high64_1:%[0-9a-zA-z]+]] = lshr i64 [[tmp_ULLi_1]], 32
|
||||
// XSAVEC: [[high32_1:%[0-9a-zA-z]+]] = trunc i64 [[high64_1]] to i32
|
||||
// XSAVEC: [[low32_1:%[0-9a-zA-z]+]] = trunc i64 [[tmp_ULLi_1]] to i32
|
||||
// XSAVEC: call void @llvm.x86.xsavec(i8* [[tmp_vp_1]], i32 [[high32_1]], i32 [[low32_1]])
|
||||
(void)__builtin_ia32_xsavec(tmp_vp, tmp_ULLi);
|
||||
|
||||
// XSAVEC: [[tmp_vp_2:%[0-9a-zA-z]+]] = load i8*, i8** %tmp_vp, align 8
|
||||
// XSAVEC: [[tmp_ULLi_2:%[0-9a-zA-z]+]] = load i64, i64* %tmp_ULLi, align 8
|
||||
// XSAVEC: [[high64_2:%[0-9a-zA-z]+]] = lshr i64 [[tmp_ULLi_2]], 32
|
||||
// XSAVEC: [[high32_2:%[0-9a-zA-z]+]] = trunc i64 [[high64_2]] to i32
|
||||
// XSAVEC: [[low32_2:%[0-9a-zA-z]+]] = trunc i64 [[tmp_ULLi_2]] to i32
|
||||
// XSAVEC: call void @llvm.x86.xsavec64(i8* [[tmp_vp_2]], i32 [[high32_2]], i32 [[low32_2]])
|
||||
(void)__builtin_ia32_xsavec64(tmp_vp, tmp_ULLi);
|
||||
#endif
|
||||
|
||||
#ifdef TEST_XSAVES
|
||||
// XSAVES: [[tmp_vp_1:%[0-9a-zA-z]+]] = load i8*, i8** %tmp_vp, align 8
|
||||
// XSAVES: [[tmp_ULLi_1:%[0-9a-zA-z]+]] = load i64, i64* %tmp_ULLi, align 8
|
||||
// XSAVES: [[high64_1:%[0-9a-zA-z]+]] = lshr i64 [[tmp_ULLi_1]], 32
|
||||
// XSAVES: [[high32_1:%[0-9a-zA-z]+]] = trunc i64 [[high64_1]] to i32
|
||||
// XSAVES: [[low32_1:%[0-9a-zA-z]+]] = trunc i64 [[tmp_ULLi_1]] to i32
|
||||
// XSAVES: call void @llvm.x86.xsaves(i8* [[tmp_vp_1]], i32 [[high32_1]], i32 [[low32_1]])
|
||||
(void)__builtin_ia32_xsaves(tmp_vp, tmp_ULLi);
|
||||
|
||||
// XSAVES: [[tmp_vp_2:%[0-9a-zA-z]+]] = load i8*, i8** %tmp_vp, align 8
|
||||
// XSAVES: [[tmp_ULLi_2:%[0-9a-zA-z]+]] = load i64, i64* %tmp_ULLi, align 8
|
||||
// XSAVES: [[high64_2:%[0-9a-zA-z]+]] = lshr i64 [[tmp_ULLi_2]], 32
|
||||
// XSAVES: [[high32_2:%[0-9a-zA-z]+]] = trunc i64 [[high64_2]] to i32
|
||||
// XSAVES: [[low32_2:%[0-9a-zA-z]+]] = trunc i64 [[tmp_ULLi_2]] to i32
|
||||
// XSAVES: call void @llvm.x86.xsaves64(i8* [[tmp_vp_2]], i32 [[high32_2]], i32 [[low32_2]])
|
||||
(void)__builtin_ia32_xsaves64(tmp_vp, tmp_ULLi);
|
||||
|
||||
// XSAVES: [[tmp_vp_3:%[0-9a-zA-z]+]] = load i8*, i8** %tmp_vp, align 8
|
||||
// XSAVES: [[tmp_ULLi_3:%[0-9a-zA-z]+]] = load i64, i64* %tmp_ULLi, align 8
|
||||
// XSAVES: [[high64_3:%[0-9a-zA-z]+]] = lshr i64 [[tmp_ULLi_3]], 32
|
||||
// XSAVES: [[high32_3:%[0-9a-zA-z]+]] = trunc i64 [[high64_3]] to i32
|
||||
// XSAVES: [[low32_3:%[0-9a-zA-z]+]] = trunc i64 [[tmp_ULLi_3]] to i32
|
||||
// XSAVES: call void @llvm.x86.xrstors(i8* [[tmp_vp_3]], i32 [[high32_3]], i32 [[low32_3]])
|
||||
(void)__builtin_ia32_xrstors(tmp_vp, tmp_ULLi);
|
||||
|
||||
// XSAVES: [[tmp_vp_4:%[0-9a-zA-z]+]] = load i8*, i8** %tmp_vp, align 8
|
||||
// XSAVES: [[tmp_ULLi_4:%[0-9a-zA-z]+]] = load i64, i64* %tmp_ULLi, align 8
|
||||
// XSAVES: [[high64_4:%[0-9a-zA-z]+]] = lshr i64 [[tmp_ULLi_4]], 32
|
||||
// XSAVES: [[high32_4:%[0-9a-zA-z]+]] = trunc i64 [[high64_4]] to i32
|
||||
// XSAVES: [[low32_4:%[0-9a-zA-z]+]] = trunc i64 [[tmp_ULLi_4]] to i32
|
||||
// XSAVES: call void @llvm.x86.xrstors64(i8* [[tmp_vp_4]], i32 [[high32_4]], i32 [[low32_4]])
|
||||
(void)__builtin_ia32_xrstors64(tmp_vp, tmp_ULLi);
|
||||
#endif
|
||||
}
|
||||
// RUN: %clang_cc1 %s -DTEST_XSAVE -O0 -triple=x86_64-unknown-unknown -target-feature +xsave -emit-llvm -o - -Werror | FileCheck %s --check-prefix=XSAVE
|
||||
// RUN: %clang_cc1 %s -DTEST_XSAVE -O0 -triple=x86_64-unknown-unknown -target-feature +xsave -fno-signed-char -emit-llvm -o - -Werror | FileCheck %s --check-prefix=XSAVE
|
||||
|
||||
// RUN: %clang_cc1 %s -DTEST_XSAVEOPT -O0 -triple=x86_64-unknown-unknown -target-feature +xsave -target-feature +xsaveopt -emit-llvm -o - -Werror | FileCheck %s --check-prefix=XSAVEOPT
|
||||
// RUN: %clang_cc1 %s -DTEST_XSAVEOPT -O0 -triple=x86_64-unknown-unknown -target-feature +xsave -target-feature +xsaveopt -fno-signed-char -emit-llvm -o - -Werror | FileCheck %s --check-prefix=XSAVEOPT
|
||||
|
||||
// RUN: %clang_cc1 %s -DTEST_XSAVEC -O0 -triple=x86_64-unknown-unknown -target-feature +xsave -target-feature +xsavec -emit-llvm -o - -Werror | FileCheck %s --check-prefix=XSAVEC
|
||||
// RUN: %clang_cc1 %s -DTEST_XSAVEC -O0 -triple=x86_64-unknown-unknown -target-feature +xsave -target-feature +xsavec -fno-signed-char -emit-llvm -o - -Werror | FileCheck %s --check-prefix=XSAVEC
|
||||
|
||||
// RUN: %clang_cc1 %s -DTEST_XSAVES -O0 -triple=x86_64-unknown-unknown -target-feature +xsave -target-feature +xsaves -emit-llvm -o - -Werror | FileCheck %s --check-prefix=XSAVES
|
||||
// RUN: %clang_cc1 %s -DTEST_XSAVES -O0 -triple=x86_64-unknown-unknown -target-feature +xsave -target-feature +xsaves -fno-signed-char -emit-llvm -o - -Werror | FileCheck %s --check-prefix=XSAVES
|
||||
|
||||
void test() {
|
||||
unsigned long long tmp_ULLi;
|
||||
void* tmp_vp;
|
||||
|
||||
#ifdef TEST_XSAVE
|
||||
// XSAVE: [[tmp_vp_1:%[0-9a-zA-z]+]] = load i8*, i8** %tmp_vp, align 8
|
||||
// XSAVE: [[tmp_ULLi_1:%[0-9a-zA-z]+]] = load i64, i64* %tmp_ULLi, align 8
|
||||
// XSAVE: [[high64_1:%[0-9a-zA-z]+]] = lshr i64 [[tmp_ULLi_1]], 32
|
||||
// XSAVE: [[high32_1:%[0-9a-zA-z]+]] = trunc i64 [[high64_1]] to i32
|
||||
// XSAVE: [[low32_1:%[0-9a-zA-z]+]] = trunc i64 [[tmp_ULLi_1]] to i32
|
||||
// XSAVE: call void @llvm.x86.xsave(i8* [[tmp_vp_1]], i32 [[high32_1]], i32 [[low32_1]])
|
||||
(void)__builtin_ia32_xsave(tmp_vp, tmp_ULLi);
|
||||
|
||||
// XSAVE: [[tmp_vp_2:%[0-9a-zA-z]+]] = load i8*, i8** %tmp_vp, align 8
|
||||
// XSAVE: [[tmp_ULLi_2:%[0-9a-zA-z]+]] = load i64, i64* %tmp_ULLi, align 8
|
||||
// XSAVE: [[high64_2:%[0-9a-zA-z]+]] = lshr i64 [[tmp_ULLi_2]], 32
|
||||
// XSAVE: [[high32_2:%[0-9a-zA-z]+]] = trunc i64 [[high64_2]] to i32
|
||||
// XSAVE: [[low32_2:%[0-9a-zA-z]+]] = trunc i64 [[tmp_ULLi_2]] to i32
|
||||
// XSAVE: call void @llvm.x86.xsave64(i8* [[tmp_vp_2]], i32 [[high32_2]], i32 [[low32_2]])
|
||||
(void)__builtin_ia32_xsave64(tmp_vp, tmp_ULLi);
|
||||
|
||||
// XSAVE: [[tmp_vp_3:%[0-9a-zA-z]+]] = load i8*, i8** %tmp_vp, align 8
|
||||
// XSAVE: [[tmp_ULLi_3:%[0-9a-zA-z]+]] = load i64, i64* %tmp_ULLi, align 8
|
||||
// XSAVE: [[high64_3:%[0-9a-zA-z]+]] = lshr i64 [[tmp_ULLi_3]], 32
|
||||
// XSAVE: [[high32_3:%[0-9a-zA-z]+]] = trunc i64 [[high64_3]] to i32
|
||||
// XSAVE: [[low32_3:%[0-9a-zA-z]+]] = trunc i64 [[tmp_ULLi_3]] to i32
|
||||
// XSAVE: call void @llvm.x86.xrstor(i8* [[tmp_vp_3]], i32 [[high32_3]], i32 [[low32_3]])
|
||||
(void)__builtin_ia32_xrstor(tmp_vp, tmp_ULLi);
|
||||
|
||||
// XSAVE: [[tmp_vp_4:%[0-9a-zA-z]+]] = load i8*, i8** %tmp_vp, align 8
|
||||
// XSAVE: [[tmp_ULLi_4:%[0-9a-zA-z]+]] = load i64, i64* %tmp_ULLi, align 8
|
||||
// XSAVE: [[high64_4:%[0-9a-zA-z]+]] = lshr i64 [[tmp_ULLi_4]], 32
|
||||
// XSAVE: [[high32_4:%[0-9a-zA-z]+]] = trunc i64 [[high64_4]] to i32
|
||||
// XSAVE: [[low32_4:%[0-9a-zA-z]+]] = trunc i64 [[tmp_ULLi_4]] to i32
|
||||
// XSAVE: call void @llvm.x86.xrstor64(i8* [[tmp_vp_4]], i32 [[high32_4]], i32 [[low32_4]])
|
||||
(void)__builtin_ia32_xrstor64(tmp_vp, tmp_ULLi);
|
||||
#endif
|
||||
|
||||
#ifdef TEST_XSAVEOPT
|
||||
// XSAVEOPT: [[tmp_vp_1:%[0-9a-zA-z]+]] = load i8*, i8** %tmp_vp, align 8
|
||||
// XSAVEOPT: [[tmp_ULLi_1:%[0-9a-zA-z]+]] = load i64, i64* %tmp_ULLi, align 8
|
||||
// XSAVEOPT: [[high64_1:%[0-9a-zA-z]+]] = lshr i64 [[tmp_ULLi_1]], 32
|
||||
// XSAVEOPT: [[high32_1:%[0-9a-zA-z]+]] = trunc i64 [[high64_1]] to i32
|
||||
// XSAVEOPT: [[low32_1:%[0-9a-zA-z]+]] = trunc i64 [[tmp_ULLi_1]] to i32
|
||||
// XSAVEOPT: call void @llvm.x86.xsaveopt(i8* [[tmp_vp_1]], i32 [[high32_1]], i32 [[low32_1]])
|
||||
(void)__builtin_ia32_xsaveopt(tmp_vp, tmp_ULLi);
|
||||
|
||||
// XSAVEOPT: [[tmp_vp_2:%[0-9a-zA-z]+]] = load i8*, i8** %tmp_vp, align 8
|
||||
// XSAVEOPT: [[tmp_ULLi_2:%[0-9a-zA-z]+]] = load i64, i64* %tmp_ULLi, align 8
|
||||
// XSAVEOPT: [[high64_2:%[0-9a-zA-z]+]] = lshr i64 [[tmp_ULLi_2]], 32
|
||||
// XSAVEOPT: [[high32_2:%[0-9a-zA-z]+]] = trunc i64 [[high64_2]] to i32
|
||||
// XSAVEOPT: [[low32_2:%[0-9a-zA-z]+]] = trunc i64 [[tmp_ULLi_2]] to i32
|
||||
// XSAVEOPT: call void @llvm.x86.xsaveopt64(i8* [[tmp_vp_2]], i32 [[high32_2]], i32 [[low32_2]])
|
||||
(void)__builtin_ia32_xsaveopt64(tmp_vp, tmp_ULLi);
|
||||
#endif
|
||||
|
||||
#ifdef TEST_XSAVEC
|
||||
// XSAVEC: [[tmp_vp_1:%[0-9a-zA-z]+]] = load i8*, i8** %tmp_vp, align 8
|
||||
// XSAVEC: [[tmp_ULLi_1:%[0-9a-zA-z]+]] = load i64, i64* %tmp_ULLi, align 8
|
||||
// XSAVEC: [[high64_1:%[0-9a-zA-z]+]] = lshr i64 [[tmp_ULLi_1]], 32
|
||||
// XSAVEC: [[high32_1:%[0-9a-zA-z]+]] = trunc i64 [[high64_1]] to i32
|
||||
// XSAVEC: [[low32_1:%[0-9a-zA-z]+]] = trunc i64 [[tmp_ULLi_1]] to i32
|
||||
// XSAVEC: call void @llvm.x86.xsavec(i8* [[tmp_vp_1]], i32 [[high32_1]], i32 [[low32_1]])
|
||||
(void)__builtin_ia32_xsavec(tmp_vp, tmp_ULLi);
|
||||
|
||||
// XSAVEC: [[tmp_vp_2:%[0-9a-zA-z]+]] = load i8*, i8** %tmp_vp, align 8
|
||||
// XSAVEC: [[tmp_ULLi_2:%[0-9a-zA-z]+]] = load i64, i64* %tmp_ULLi, align 8
|
||||
// XSAVEC: [[high64_2:%[0-9a-zA-z]+]] = lshr i64 [[tmp_ULLi_2]], 32
|
||||
// XSAVEC: [[high32_2:%[0-9a-zA-z]+]] = trunc i64 [[high64_2]] to i32
|
||||
// XSAVEC: [[low32_2:%[0-9a-zA-z]+]] = trunc i64 [[tmp_ULLi_2]] to i32
|
||||
// XSAVEC: call void @llvm.x86.xsavec64(i8* [[tmp_vp_2]], i32 [[high32_2]], i32 [[low32_2]])
|
||||
(void)__builtin_ia32_xsavec64(tmp_vp, tmp_ULLi);
|
||||
#endif
|
||||
|
||||
#ifdef TEST_XSAVES
|
||||
// XSAVES: [[tmp_vp_1:%[0-9a-zA-z]+]] = load i8*, i8** %tmp_vp, align 8
|
||||
// XSAVES: [[tmp_ULLi_1:%[0-9a-zA-z]+]] = load i64, i64* %tmp_ULLi, align 8
|
||||
// XSAVES: [[high64_1:%[0-9a-zA-z]+]] = lshr i64 [[tmp_ULLi_1]], 32
|
||||
// XSAVES: [[high32_1:%[0-9a-zA-z]+]] = trunc i64 [[high64_1]] to i32
|
||||
// XSAVES: [[low32_1:%[0-9a-zA-z]+]] = trunc i64 [[tmp_ULLi_1]] to i32
|
||||
// XSAVES: call void @llvm.x86.xsaves(i8* [[tmp_vp_1]], i32 [[high32_1]], i32 [[low32_1]])
|
||||
(void)__builtin_ia32_xsaves(tmp_vp, tmp_ULLi);
|
||||
|
||||
// XSAVES: [[tmp_vp_2:%[0-9a-zA-z]+]] = load i8*, i8** %tmp_vp, align 8
|
||||
// XSAVES: [[tmp_ULLi_2:%[0-9a-zA-z]+]] = load i64, i64* %tmp_ULLi, align 8
|
||||
// XSAVES: [[high64_2:%[0-9a-zA-z]+]] = lshr i64 [[tmp_ULLi_2]], 32
|
||||
// XSAVES: [[high32_2:%[0-9a-zA-z]+]] = trunc i64 [[high64_2]] to i32
|
||||
// XSAVES: [[low32_2:%[0-9a-zA-z]+]] = trunc i64 [[tmp_ULLi_2]] to i32
|
||||
// XSAVES: call void @llvm.x86.xsaves64(i8* [[tmp_vp_2]], i32 [[high32_2]], i32 [[low32_2]])
|
||||
(void)__builtin_ia32_xsaves64(tmp_vp, tmp_ULLi);
|
||||
|
||||
// XSAVES: [[tmp_vp_3:%[0-9a-zA-z]+]] = load i8*, i8** %tmp_vp, align 8
|
||||
// XSAVES: [[tmp_ULLi_3:%[0-9a-zA-z]+]] = load i64, i64* %tmp_ULLi, align 8
|
||||
// XSAVES: [[high64_3:%[0-9a-zA-z]+]] = lshr i64 [[tmp_ULLi_3]], 32
|
||||
// XSAVES: [[high32_3:%[0-9a-zA-z]+]] = trunc i64 [[high64_3]] to i32
|
||||
// XSAVES: [[low32_3:%[0-9a-zA-z]+]] = trunc i64 [[tmp_ULLi_3]] to i32
|
||||
// XSAVES: call void @llvm.x86.xrstors(i8* [[tmp_vp_3]], i32 [[high32_3]], i32 [[low32_3]])
|
||||
(void)__builtin_ia32_xrstors(tmp_vp, tmp_ULLi);
|
||||
|
||||
// XSAVES: [[tmp_vp_4:%[0-9a-zA-z]+]] = load i8*, i8** %tmp_vp, align 8
|
||||
// XSAVES: [[tmp_ULLi_4:%[0-9a-zA-z]+]] = load i64, i64* %tmp_ULLi, align 8
|
||||
// XSAVES: [[high64_4:%[0-9a-zA-z]+]] = lshr i64 [[tmp_ULLi_4]], 32
|
||||
// XSAVES: [[high32_4:%[0-9a-zA-z]+]] = trunc i64 [[high64_4]] to i32
|
||||
// XSAVES: [[low32_4:%[0-9a-zA-z]+]] = trunc i64 [[tmp_ULLi_4]] to i32
|
||||
// XSAVES: call void @llvm.x86.xrstors64(i8* [[tmp_vp_4]], i32 [[high32_4]], i32 [[low32_4]])
|
||||
(void)__builtin_ia32_xrstors64(tmp_vp, tmp_ULLi);
|
||||
#endif
|
||||
}
|
||||
|
|
|
@ -1,25 +1,25 @@
|
|||
// Test if mingw toolchain driver emits static linking (-lgcc -lgcc_eh) or dynamic linking (-lgcc_s -lgcc).
|
||||
// Verified with gcc version 5.1.0 (i686-posix-dwarf-rev0, Built by MinGW-W64 project).
|
||||
|
||||
// gcc, static
|
||||
// RUN: %clang -v -target i686-pc-windows-gnu -### %s 2>&1 | FileCheck -check-prefix=CHECK_STATIC %s
|
||||
// RUN: %clang -static -v -target i686-pc-windows-gnu -### %s 2>&1 | FileCheck -check-prefix=CHECK_STATIC %s
|
||||
// RUN: %clang -static-libgcc -v -target i686-pc-windows-gnu -### %s 2>&1 | FileCheck -check-prefix=CHECK_STATIC %s
|
||||
// RUN: %clang -static -shared -v -target i686-pc-windows-gnu -### %s 2>&1 | FileCheck -check-prefix=CHECK_STATIC %s
|
||||
// RUN: %clang -static-libgcc -shared -v -target i686-pc-windows-gnu -### %s 2>&1 | FileCheck -check-prefix=CHECK_STATIC %s
|
||||
|
||||
// gcc, dynamic
|
||||
// RUN: %clang -shared -v -target i686-pc-windows-gnu -### %s 2>&1 | FileCheck -check-prefix=CHECK_DYNAMIC %s
|
||||
|
||||
// g++, static
|
||||
// RUN: %clang -static --driver-mode=g++ -v -target i686-pc-windows-gnu -### %s 2>&1 | FileCheck -check-prefix=CHECK_STATIC %s
|
||||
// RUN: %clang -static-libgcc --driver-mode=g++ -v -target i686-pc-windows-gnu -### %s 2>&1 | FileCheck -check-prefix=CHECK_STATIC %s
|
||||
// RUN: %clang -static -shared --driver-mode=g++ -v -target i686-pc-windows-gnu -### %s 2>&1 | FileCheck -check-prefix=CHECK_STATIC %s
|
||||
// RUN: %clang -static-libgcc -shared --driver-mode=g++ -v -target i686-pc-windows-gnu -### %s 2>&1 | FileCheck -check-prefix=CHECK_STATIC %s
|
||||
|
||||
// g++, dynamic
|
||||
// RUN: %clang --driver-mode=g++ -v -target i686-pc-windows-gnu -### %s 2>&1 | FileCheck -check-prefix=CHECK_DYNAMIC %s
|
||||
// RUN: %clang -shared --driver-mode=g++ -v -target i686-pc-windows-gnu -### %s 2>&1 | FileCheck -check-prefix=CHECK_DYNAMIC %s
|
||||
|
||||
// CHECK_STATIC: "-lgcc" "-lgcc_eh"
|
||||
// CHECK_DYNAMIC: "-lgcc_s" "-lgcc"
|
||||
// Test if mingw toolchain driver emits static linking (-lgcc -lgcc_eh) or dynamic linking (-lgcc_s -lgcc).
|
||||
// Verified with gcc version 5.1.0 (i686-posix-dwarf-rev0, Built by MinGW-W64 project).
|
||||
|
||||
// gcc, static
|
||||
// RUN: %clang -v -target i686-pc-windows-gnu -### %s 2>&1 | FileCheck -check-prefix=CHECK_STATIC %s
|
||||
// RUN: %clang -static -v -target i686-pc-windows-gnu -### %s 2>&1 | FileCheck -check-prefix=CHECK_STATIC %s
|
||||
// RUN: %clang -static-libgcc -v -target i686-pc-windows-gnu -### %s 2>&1 | FileCheck -check-prefix=CHECK_STATIC %s
|
||||
// RUN: %clang -static -shared -v -target i686-pc-windows-gnu -### %s 2>&1 | FileCheck -check-prefix=CHECK_STATIC %s
|
||||
// RUN: %clang -static-libgcc -shared -v -target i686-pc-windows-gnu -### %s 2>&1 | FileCheck -check-prefix=CHECK_STATIC %s
|
||||
|
||||
// gcc, dynamic
|
||||
// RUN: %clang -shared -v -target i686-pc-windows-gnu -### %s 2>&1 | FileCheck -check-prefix=CHECK_DYNAMIC %s
|
||||
|
||||
// g++, static
|
||||
// RUN: %clang -static --driver-mode=g++ -v -target i686-pc-windows-gnu -### %s 2>&1 | FileCheck -check-prefix=CHECK_STATIC %s
|
||||
// RUN: %clang -static-libgcc --driver-mode=g++ -v -target i686-pc-windows-gnu -### %s 2>&1 | FileCheck -check-prefix=CHECK_STATIC %s
|
||||
// RUN: %clang -static -shared --driver-mode=g++ -v -target i686-pc-windows-gnu -### %s 2>&1 | FileCheck -check-prefix=CHECK_STATIC %s
|
||||
// RUN: %clang -static-libgcc -shared --driver-mode=g++ -v -target i686-pc-windows-gnu -### %s 2>&1 | FileCheck -check-prefix=CHECK_STATIC %s
|
||||
|
||||
// g++, dynamic
|
||||
// RUN: %clang --driver-mode=g++ -v -target i686-pc-windows-gnu -### %s 2>&1 | FileCheck -check-prefix=CHECK_DYNAMIC %s
|
||||
// RUN: %clang -shared --driver-mode=g++ -v -target i686-pc-windows-gnu -### %s 2>&1 | FileCheck -check-prefix=CHECK_DYNAMIC %s
|
||||
|
||||
// CHECK_STATIC: "-lgcc" "-lgcc_eh"
|
||||
// CHECK_DYNAMIC: "-lgcc_s" "-lgcc"
|
||||
|
|
|
@ -1,59 +1,59 @@
|
|||
// RUN: %clang -target i686-windows-gnu -c -### --sysroot=%S/Inputs/mingw_clang_tree/mingw32 %s 2>&1 | FileCheck -check-prefix=CHECK_MINGW_CLANG_TREE %s
|
||||
// CHECK_MINGW_CLANG_TREE: "{{.*}}/Inputs/mingw_clang_tree/mingw32{{/|\\\\}}i686-w64-mingw32{{/|\\\\}}include"
|
||||
// CHECK_MINGW_CLANG_TREE: "{{.*}}/Inputs/mingw_clang_tree/mingw32{{/|\\\\}}include"
|
||||
|
||||
|
||||
// RUN: %clang -target i686-pc-windows-gnu -stdlib=libstdc++ -c -### --sysroot=%S/Inputs/mingw_mingw_org_tree/mingw %s 2>&1 | FileCheck -check-prefix=CHECK_MINGW_ORG_TREE %s
|
||||
// CHECK_MINGW_ORG_TREE: "{{.*}}/Inputs/mingw_mingw_org_tree/mingw{{/|\\\\}}lib{{/|\\\\}}gcc{{/|\\\\}}mingw32{{/|\\\\}}4.8.1{{/|\\\\}}include{{/|\\\\}}c++"
|
||||
// CHECK_MINGW_ORG_TREE: "{{.*}}/Inputs/mingw_mingw_org_tree/mingw{{/|\\\\}}lib{{/|\\\\}}gcc{{/|\\\\}}mingw32{{/|\\\\}}4.8.1{{/|\\\\}}include{{/|\\\\}}c++{{/|\\\\}}mingw32"
|
||||
// CHECK_MINGW_ORG_TREE: "{{.*}}{{/|\\\\}}Inputs/mingw_mingw_org_tree/mingw{{/|\\\\}}lib{{/|\\\\}}gcc{{/|\\\\}}mingw32{{/|\\\\}}4.8.1{{/|\\\\}}include{{/|\\\\}}c++{{/|\\\\}}backward"
|
||||
// CHECK_MINGW_ORG_TREE: "{{.*}}/Inputs/mingw_mingw_org_tree/mingw{{/|\\\\}}lib{{/|\\\\}}gcc{{/|\\\\}}mingw32{{/|\\\\}}4.8.1{{/|\\\\}}include"
|
||||
// CHECK_MINGW_ORG_TREE: "{{.*}}/Inputs/mingw_mingw_org_tree/mingw{{/|\\\\}}lib{{/|\\\\}}gcc{{/|\\\\}}mingw32{{/|\\\\}}4.8.1{{/|\\\\}}include-fixed"
|
||||
// CHECK_MINGW_ORG_TREE: "{{.*}}/Inputs/mingw_mingw_org_tree/mingw{{/|\\\\}}mingw32{{/|\\\\}}include"
|
||||
// CHECK_MINGW_ORG_TREE: {{.*}}/Inputs/mingw_mingw_org_tree/mingw{{/|\\\\}}include
|
||||
|
||||
|
||||
// RUN: %clang -target i686-pc-windows-gnu -stdlib=libstdc++ -c -### --sysroot=%S/Inputs/mingw_mingw_builds_tree/mingw32 %s 2>&1 | FileCheck -check-prefix=CHECK_MINGW_BUILDS_TREE %s
|
||||
// CHECK_MINGW_BUILDS_TREE: "{{.*}}/Inputs/mingw_mingw_builds_tree/mingw32{{/|\\\\}}i686-w64-mingw32{{/|\\\\}}include{{/|\\\\}}c++"
|
||||
// CHECK_MINGW_BUILDS_TREE: "{{.*}}/Inputs/mingw_mingw_builds_tree/mingw32{{/|\\\\}}i686-w64-mingw32{{/|\\\\}}include{{/|\\\\}}c++{{/|\\\\}}i686-w64-mingw32"
|
||||
// CHECK_MINGW_BUILDS_TREE: "{{.*}}/Inputs/mingw_mingw_builds_tree/mingw32{{/|\\\\}}i686-w64-mingw32{{/|\\\\}}include{{/|\\\\}}c++{{/|\\\\}}backward"
|
||||
// CHECK_MINGW_BUILDS_TREE: "{{.*}}/Inputs/mingw_mingw_builds_tree/mingw32{{/|\\\\}}lib{{/|\\\\}}gcc{{/|\\\\}}i686-w64-mingw32{{/|\\\\}}4.9.1{{/|\\\\}}include"
|
||||
// CHECK_MINGW_BUILDS_TREE: "{{.*}}/Inputs/mingw_mingw_builds_tree/mingw32{{/|\\\\}}lib{{/|\\\\}}gcc{{/|\\\\}}i686-w64-mingw32{{/|\\\\}}4.9.1{{/|\\\\}}include-fixed"
|
||||
// CHECK_MINGW_BUILDS_TREE: "{{.*}}/Inputs/mingw_mingw_builds_tree/mingw32{{/|\\\\}}i686-w64-mingw32{{/|\\\\}}include"
|
||||
|
||||
|
||||
// RUN: %clang -target i686-pc-windows-gnu -stdlib=libstdc++ -c -### --sysroot=%S/Inputs/mingw_msys2_tree/msys64/mingw32 %s 2>&1 | FileCheck -check-prefix=CHECK_MINGW_MSYS_TREE %s
|
||||
// CHECK_MINGW_MSYS_TREE: "{{.*}}/Inputs/mingw_msys2_tree/msys64{{/|\\\\}}mingw32{{/|\\\\}}include{{/|\\\\}}c++{{/|\\\\}}4.9.2"
|
||||
// CHECK_MINGW_MSYS_TREE: "{{.*}}/Inputs/mingw_msys2_tree/msys64/mingw32{{/|\\\\}}include{{/|\\\\}}c++{{/|\\\\}}4.9.2{{/|\\\\}}i686-w64-mingw32"
|
||||
// CHECK_MINGW_MSYS_TREE: "{{.*}}/Inputs/mingw_msys2_tree/msys64/mingw32{{/|\\\\}}include{{/|\\\\}}c++{{/|\\\\}}4.9.2{{/|\\\\}}backward"
|
||||
// CHECK_MINGW_MSYS_TREE: "{{.*}}/Inputs/mingw_msys2_tree/msys64/mingw32{{/|\\\\}}lib{{/|\\\\}}gcc{{/|\\\\}}i686-w64-mingw32{{/|\\\\}}4.9.2{{/|\\\\}}include"
|
||||
// CHECK_MINGW_MSYS_TREE: "{{.*}}/Inputs/mingw_msys2_tree/msys64/mingw32{{/|\\\\}}lib{{/|\\\\}}gcc{{/|\\\\}}i686-w64-mingw32{{/|\\\\}}4.9.2{{/|\\\\}}include-fixed"
|
||||
// CHECK_MINGW_MSYS_TREE: "{{.*}}/Inputs/mingw_msys2_tree/msys64/mingw32{{/|\\\\}}i686-w64-mingw32{{/|\\\\}}include"
|
||||
// CHECK_MINGW_MSYS_TREE: "{{.*}}/Inputs/mingw_msys2_tree/msys64/mingw32{{/|\\\\}}include"
|
||||
|
||||
|
||||
// RUN: %clang -target x86_64-pc-windows-gnu -stdlib=libstdc++ -c -### --sysroot=%S/Inputs/mingw_opensuse_tree/usr %s 2>&1 | FileCheck -check-prefix=CHECK_MINGW_OPENSUSE_TREE %s
|
||||
// CHECK_MINGW_OPENSUSE_TREE: "{{.*}}/Inputs/mingw_opensuse_tree/usr{{/|\\\\}}lib64{{/|\\\\}}gcc{{/|\\\\}}x86_64-w64-mingw32{{/|\\\\}}5.1.0{{/|\\\\}}include{{/|\\\\}}c++"
|
||||
// CHECK_MINGW_OPENSUSE_TREE: "{{.*}}/Inputs/mingw_opensuse_tree/usr{{/|\\\\}}lib64{{/|\\\\}}gcc{{/|\\\\}}x86_64-w64-mingw32{{/|\\\\}}5.1.0{{/|\\\\}}include{{/|\\\\}}c++{{/|\\\\}}x86_64-w64-mingw32"
|
||||
// CHECK_MINGW_OPENSUSE_TREE: "{{.*}}/Inputs/mingw_opensuse_tree/usr{{/|\\\\}}lib64{{/|\\\\}}gcc{{/|\\\\}}x86_64-w64-mingw32{{/|\\\\}}5.1.0{{/|\\\\}}include{{/|\\\\}}c++{{/|\\\\}}backward"
|
||||
// CHECK_MINGW_OPENSUSE_TREE: "{{.*}}/Inputs/mingw_opensuse_tree/usr{{/|\\\\}}lib64{{/|\\\\}}gcc{{/|\\\\}}x86_64-w64-mingw32{{/|\\\\}}5.1.0{{/|\\\\}}include"
|
||||
// CHECK_MINGW_OPENSUSE_TREE: "{{.*}}/Inputs/mingw_opensuse_tree/usr{{/|\\\\}}x86_64-w64-mingw32/sys-root/mingw/include"
|
||||
// CHECK_MINGW_OPENSUSE_TREE: "{{.*}}/Inputs/mingw_opensuse_tree/usr{{/|\\\\}}lib64{{/|\\\\}}gcc{{/|\\\\}}x86_64-w64-mingw32{{/|\\\\}}5.1.0{{/|\\\\}}include-fixed"
|
||||
|
||||
|
||||
// RUN: %clang -target i686-pc-windows-gnu -stdlib=libstdc++ -c -### --sysroot=%S/Inputs/mingw_arch_tree/usr %s 2>&1 | FileCheck -check-prefix=CHECK_MINGW_ARCH_TREE %s
|
||||
// CHECK_MINGW_ARCH_TREE: "{{.*}}/Inputs/mingw_arch_tree/usr{{/|\\\\}}i686-w64-mingw32{{/|\\\\}}include{{/|\\\\}}c++{{/|\\\\}}5.1.0"
|
||||
// CHECK_MINGW_ARCH_TREE: "{{.*}}/Inputs/mingw_arch_tree/usr{{/|\\\\}}i686-w64-mingw32{{/|\\\\}}include{{/|\\\\}}c++{{/|\\\\}}5.1.0{{/|\\\\}}i686-w64-mingw32"
|
||||
// CHECK_MINGW_ARCH_TREE: "{{.*}}/Inputs/mingw_arch_tree/usr{{/|\\\\}}i686-w64-mingw32{{/|\\\\}}include{{/|\\\\}}c++{{/|\\\\}}5.1.0{{/|\\\\}}backward"
|
||||
// CHECK_MINGW_ARCH_TREE: "{{.*}}/Inputs/mingw_arch_tree/usr{{/|\\\\}}lib{{/|\\\\}}gcc{{/|\\\\}}i686-w64-mingw32{{/|\\\\}}5.1.0{{/|\\\\}}include"
|
||||
// CHECK_MINGW_ARCH_TREE: "{{.*}}/Inputs/mingw_arch_tree/usr{{/|\\\\}}lib{{/|\\\\}}gcc{{/|\\\\}}i686-w64-mingw32{{/|\\\\}}5.1.0{{/|\\\\}}include-fixed"
|
||||
// CHECK_MINGW_ARCH_TREE: "{{.*}}/Inputs/mingw_arch_tree/usr{{/|\\\\}}i686-w64-mingw32{{/|\\\\}}include"
|
||||
|
||||
|
||||
// RUN: %clang -target x86_64-pc-windows-gnu -stdlib=libstdc++ -c -### --sysroot=%S/Inputs/mingw_ubuntu_tree/usr %s 2>&1 | FileCheck -check-prefix=CHECK_MINGW_UBUNTU_TREE %s
|
||||
// CHECK_MINGW_UBUNTU_TREE: "{{.*}}/Inputs/mingw_ubuntu_tree/usr{{/|\\\\}}include{{/|\\\\}}c++{{/|\\\\}}4.8"
|
||||
// CHECK_MINGW_UBUNTU_TREE: "{{.*}}/Inputs/mingw_ubuntu_tree/usr{{/|\\\\}}include{{/|\\\\}}c++{{/|\\\\}}4.8{{/|\\\\}}x86_64-w64-mingw32"
|
||||
// CHECK_MINGW_UBUNTU_TREE: "{{.*}}/Inputs/mingw_ubuntu_tree/usr{{/|\\\\}}include{{/|\\\\}}c++{{/|\\\\}}4.8{{/|\\\\}}backward"
|
||||
// CHECK_MINGW_UBUNTU_TREE: "{{.*}}/Inputs/mingw_ubuntu_tree/usr{{/|\\\\}}lib{{/|\\\\}}gcc{{/|\\\\}}x86_64-w64-mingw32{{/|\\\\}}4.8{{/|\\\\}}include"
|
||||
// CHECK_MINGW_UBUNTU_TREE: "{{.*}}/Inputs/mingw_ubuntu_tree/usr{{/|\\\\}}lib{{/|\\\\}}gcc{{/|\\\\}}x86_64-w64-mingw32{{/|\\\\}}4.8{{/|\\\\}}include-fixed"
|
||||
// CHECK_MINGW_UBUNTU_TREE: "{{.*}}/Inputs/mingw_ubuntu_tree/usr{{/|\\\\}}x86_64-w64-mingw32{{/|\\\\}}include"
|
||||
// RUN: %clang -target i686-windows-gnu -c -### --sysroot=%S/Inputs/mingw_clang_tree/mingw32 %s 2>&1 | FileCheck -check-prefix=CHECK_MINGW_CLANG_TREE %s
|
||||
// CHECK_MINGW_CLANG_TREE: "{{.*}}/Inputs/mingw_clang_tree/mingw32{{/|\\\\}}i686-w64-mingw32{{/|\\\\}}include"
|
||||
// CHECK_MINGW_CLANG_TREE: "{{.*}}/Inputs/mingw_clang_tree/mingw32{{/|\\\\}}include"
|
||||
|
||||
|
||||
// RUN: %clang -target i686-pc-windows-gnu -stdlib=libstdc++ -c -### --sysroot=%S/Inputs/mingw_mingw_org_tree/mingw %s 2>&1 | FileCheck -check-prefix=CHECK_MINGW_ORG_TREE %s
|
||||
// CHECK_MINGW_ORG_TREE: "{{.*}}/Inputs/mingw_mingw_org_tree/mingw{{/|\\\\}}lib{{/|\\\\}}gcc{{/|\\\\}}mingw32{{/|\\\\}}4.8.1{{/|\\\\}}include{{/|\\\\}}c++"
|
||||
// CHECK_MINGW_ORG_TREE: "{{.*}}/Inputs/mingw_mingw_org_tree/mingw{{/|\\\\}}lib{{/|\\\\}}gcc{{/|\\\\}}mingw32{{/|\\\\}}4.8.1{{/|\\\\}}include{{/|\\\\}}c++{{/|\\\\}}mingw32"
|
||||
// CHECK_MINGW_ORG_TREE: "{{.*}}{{/|\\\\}}Inputs/mingw_mingw_org_tree/mingw{{/|\\\\}}lib{{/|\\\\}}gcc{{/|\\\\}}mingw32{{/|\\\\}}4.8.1{{/|\\\\}}include{{/|\\\\}}c++{{/|\\\\}}backward"
|
||||
// CHECK_MINGW_ORG_TREE: "{{.*}}/Inputs/mingw_mingw_org_tree/mingw{{/|\\\\}}lib{{/|\\\\}}gcc{{/|\\\\}}mingw32{{/|\\\\}}4.8.1{{/|\\\\}}include"
|
||||
// CHECK_MINGW_ORG_TREE: "{{.*}}/Inputs/mingw_mingw_org_tree/mingw{{/|\\\\}}lib{{/|\\\\}}gcc{{/|\\\\}}mingw32{{/|\\\\}}4.8.1{{/|\\\\}}include-fixed"
|
||||
// CHECK_MINGW_ORG_TREE: "{{.*}}/Inputs/mingw_mingw_org_tree/mingw{{/|\\\\}}mingw32{{/|\\\\}}include"
|
||||
// CHECK_MINGW_ORG_TREE: {{.*}}/Inputs/mingw_mingw_org_tree/mingw{{/|\\\\}}include
|
||||
|
||||
|
||||
// RUN: %clang -target i686-pc-windows-gnu -stdlib=libstdc++ -c -### --sysroot=%S/Inputs/mingw_mingw_builds_tree/mingw32 %s 2>&1 | FileCheck -check-prefix=CHECK_MINGW_BUILDS_TREE %s
|
||||
// CHECK_MINGW_BUILDS_TREE: "{{.*}}/Inputs/mingw_mingw_builds_tree/mingw32{{/|\\\\}}i686-w64-mingw32{{/|\\\\}}include{{/|\\\\}}c++"
|
||||
// CHECK_MINGW_BUILDS_TREE: "{{.*}}/Inputs/mingw_mingw_builds_tree/mingw32{{/|\\\\}}i686-w64-mingw32{{/|\\\\}}include{{/|\\\\}}c++{{/|\\\\}}i686-w64-mingw32"
|
||||
// CHECK_MINGW_BUILDS_TREE: "{{.*}}/Inputs/mingw_mingw_builds_tree/mingw32{{/|\\\\}}i686-w64-mingw32{{/|\\\\}}include{{/|\\\\}}c++{{/|\\\\}}backward"
|
||||
// CHECK_MINGW_BUILDS_TREE: "{{.*}}/Inputs/mingw_mingw_builds_tree/mingw32{{/|\\\\}}lib{{/|\\\\}}gcc{{/|\\\\}}i686-w64-mingw32{{/|\\\\}}4.9.1{{/|\\\\}}include"
|
||||
// CHECK_MINGW_BUILDS_TREE: "{{.*}}/Inputs/mingw_mingw_builds_tree/mingw32{{/|\\\\}}lib{{/|\\\\}}gcc{{/|\\\\}}i686-w64-mingw32{{/|\\\\}}4.9.1{{/|\\\\}}include-fixed"
|
||||
// CHECK_MINGW_BUILDS_TREE: "{{.*}}/Inputs/mingw_mingw_builds_tree/mingw32{{/|\\\\}}i686-w64-mingw32{{/|\\\\}}include"
|
||||
|
||||
|
||||
// RUN: %clang -target i686-pc-windows-gnu -stdlib=libstdc++ -c -### --sysroot=%S/Inputs/mingw_msys2_tree/msys64/mingw32 %s 2>&1 | FileCheck -check-prefix=CHECK_MINGW_MSYS_TREE %s
|
||||
// CHECK_MINGW_MSYS_TREE: "{{.*}}/Inputs/mingw_msys2_tree/msys64{{/|\\\\}}mingw32{{/|\\\\}}include{{/|\\\\}}c++{{/|\\\\}}4.9.2"
|
||||
// CHECK_MINGW_MSYS_TREE: "{{.*}}/Inputs/mingw_msys2_tree/msys64/mingw32{{/|\\\\}}include{{/|\\\\}}c++{{/|\\\\}}4.9.2{{/|\\\\}}i686-w64-mingw32"
|
||||
// CHECK_MINGW_MSYS_TREE: "{{.*}}/Inputs/mingw_msys2_tree/msys64/mingw32{{/|\\\\}}include{{/|\\\\}}c++{{/|\\\\}}4.9.2{{/|\\\\}}backward"
|
||||
// CHECK_MINGW_MSYS_TREE: "{{.*}}/Inputs/mingw_msys2_tree/msys64/mingw32{{/|\\\\}}lib{{/|\\\\}}gcc{{/|\\\\}}i686-w64-mingw32{{/|\\\\}}4.9.2{{/|\\\\}}include"
|
||||
// CHECK_MINGW_MSYS_TREE: "{{.*}}/Inputs/mingw_msys2_tree/msys64/mingw32{{/|\\\\}}lib{{/|\\\\}}gcc{{/|\\\\}}i686-w64-mingw32{{/|\\\\}}4.9.2{{/|\\\\}}include-fixed"
|
||||
// CHECK_MINGW_MSYS_TREE: "{{.*}}/Inputs/mingw_msys2_tree/msys64/mingw32{{/|\\\\}}i686-w64-mingw32{{/|\\\\}}include"
|
||||
// CHECK_MINGW_MSYS_TREE: "{{.*}}/Inputs/mingw_msys2_tree/msys64/mingw32{{/|\\\\}}include"
|
||||
|
||||
|
||||
// RUN: %clang -target x86_64-pc-windows-gnu -stdlib=libstdc++ -c -### --sysroot=%S/Inputs/mingw_opensuse_tree/usr %s 2>&1 | FileCheck -check-prefix=CHECK_MINGW_OPENSUSE_TREE %s
|
||||
// CHECK_MINGW_OPENSUSE_TREE: "{{.*}}/Inputs/mingw_opensuse_tree/usr{{/|\\\\}}lib64{{/|\\\\}}gcc{{/|\\\\}}x86_64-w64-mingw32{{/|\\\\}}5.1.0{{/|\\\\}}include{{/|\\\\}}c++"
|
||||
// CHECK_MINGW_OPENSUSE_TREE: "{{.*}}/Inputs/mingw_opensuse_tree/usr{{/|\\\\}}lib64{{/|\\\\}}gcc{{/|\\\\}}x86_64-w64-mingw32{{/|\\\\}}5.1.0{{/|\\\\}}include{{/|\\\\}}c++{{/|\\\\}}x86_64-w64-mingw32"
|
||||
// CHECK_MINGW_OPENSUSE_TREE: "{{.*}}/Inputs/mingw_opensuse_tree/usr{{/|\\\\}}lib64{{/|\\\\}}gcc{{/|\\\\}}x86_64-w64-mingw32{{/|\\\\}}5.1.0{{/|\\\\}}include{{/|\\\\}}c++{{/|\\\\}}backward"
|
||||
// CHECK_MINGW_OPENSUSE_TREE: "{{.*}}/Inputs/mingw_opensuse_tree/usr{{/|\\\\}}lib64{{/|\\\\}}gcc{{/|\\\\}}x86_64-w64-mingw32{{/|\\\\}}5.1.0{{/|\\\\}}include"
|
||||
// CHECK_MINGW_OPENSUSE_TREE: "{{.*}}/Inputs/mingw_opensuse_tree/usr{{/|\\\\}}x86_64-w64-mingw32/sys-root/mingw/include"
|
||||
// CHECK_MINGW_OPENSUSE_TREE: "{{.*}}/Inputs/mingw_opensuse_tree/usr{{/|\\\\}}lib64{{/|\\\\}}gcc{{/|\\\\}}x86_64-w64-mingw32{{/|\\\\}}5.1.0{{/|\\\\}}include-fixed"
|
||||
|
||||
|
||||
// RUN: %clang -target i686-pc-windows-gnu -stdlib=libstdc++ -c -### --sysroot=%S/Inputs/mingw_arch_tree/usr %s 2>&1 | FileCheck -check-prefix=CHECK_MINGW_ARCH_TREE %s
|
||||
// CHECK_MINGW_ARCH_TREE: "{{.*}}/Inputs/mingw_arch_tree/usr{{/|\\\\}}i686-w64-mingw32{{/|\\\\}}include{{/|\\\\}}c++{{/|\\\\}}5.1.0"
|
||||
// CHECK_MINGW_ARCH_TREE: "{{.*}}/Inputs/mingw_arch_tree/usr{{/|\\\\}}i686-w64-mingw32{{/|\\\\}}include{{/|\\\\}}c++{{/|\\\\}}5.1.0{{/|\\\\}}i686-w64-mingw32"
|
||||
// CHECK_MINGW_ARCH_TREE: "{{.*}}/Inputs/mingw_arch_tree/usr{{/|\\\\}}i686-w64-mingw32{{/|\\\\}}include{{/|\\\\}}c++{{/|\\\\}}5.1.0{{/|\\\\}}backward"
|
||||
// CHECK_MINGW_ARCH_TREE: "{{.*}}/Inputs/mingw_arch_tree/usr{{/|\\\\}}lib{{/|\\\\}}gcc{{/|\\\\}}i686-w64-mingw32{{/|\\\\}}5.1.0{{/|\\\\}}include"
|
||||
// CHECK_MINGW_ARCH_TREE: "{{.*}}/Inputs/mingw_arch_tree/usr{{/|\\\\}}lib{{/|\\\\}}gcc{{/|\\\\}}i686-w64-mingw32{{/|\\\\}}5.1.0{{/|\\\\}}include-fixed"
|
||||
// CHECK_MINGW_ARCH_TREE: "{{.*}}/Inputs/mingw_arch_tree/usr{{/|\\\\}}i686-w64-mingw32{{/|\\\\}}include"
|
||||
|
||||
|
||||
// RUN: %clang -target x86_64-pc-windows-gnu -stdlib=libstdc++ -c -### --sysroot=%S/Inputs/mingw_ubuntu_tree/usr %s 2>&1 | FileCheck -check-prefix=CHECK_MINGW_UBUNTU_TREE %s
|
||||
// CHECK_MINGW_UBUNTU_TREE: "{{.*}}/Inputs/mingw_ubuntu_tree/usr{{/|\\\\}}include{{/|\\\\}}c++{{/|\\\\}}4.8"
|
||||
// CHECK_MINGW_UBUNTU_TREE: "{{.*}}/Inputs/mingw_ubuntu_tree/usr{{/|\\\\}}include{{/|\\\\}}c++{{/|\\\\}}4.8{{/|\\\\}}x86_64-w64-mingw32"
|
||||
// CHECK_MINGW_UBUNTU_TREE: "{{.*}}/Inputs/mingw_ubuntu_tree/usr{{/|\\\\}}include{{/|\\\\}}c++{{/|\\\\}}4.8{{/|\\\\}}backward"
|
||||
// CHECK_MINGW_UBUNTU_TREE: "{{.*}}/Inputs/mingw_ubuntu_tree/usr{{/|\\\\}}lib{{/|\\\\}}gcc{{/|\\\\}}x86_64-w64-mingw32{{/|\\\\}}4.8{{/|\\\\}}include"
|
||||
// CHECK_MINGW_UBUNTU_TREE: "{{.*}}/Inputs/mingw_ubuntu_tree/usr{{/|\\\\}}lib{{/|\\\\}}gcc{{/|\\\\}}x86_64-w64-mingw32{{/|\\\\}}4.8{{/|\\\\}}include-fixed"
|
||||
// CHECK_MINGW_UBUNTU_TREE: "{{.*}}/Inputs/mingw_ubuntu_tree/usr{{/|\\\\}}x86_64-w64-mingw32{{/|\\\\}}include"
|
||||
|
|
|
@ -1,14 +1,14 @@
|
|||
// RUN: %clang_cc1 -fsyntax-only -verify -std=c++1z %s
|
||||
|
||||
namespace [[]] foo {}
|
||||
namespace [[]] {}
|
||||
namespace [[]] bad = foo; // expected-error {{attributes cannot be specified on namespace alias}}
|
||||
|
||||
namespace [[]] A::B {} // expected-error {{attributes cannot be specified on a nested namespace definition}}
|
||||
|
||||
enum test {
|
||||
bing [[]],
|
||||
bar [[]] = 1,
|
||||
baz [[]][[]],
|
||||
quux [[]][[]] = 4
|
||||
};
|
||||
// RUN: %clang_cc1 -fsyntax-only -verify -std=c++1z %s
|
||||
|
||||
namespace [[]] foo {}
|
||||
namespace [[]] {}
|
||||
namespace [[]] bad = foo; // expected-error {{attributes cannot be specified on namespace alias}}
|
||||
|
||||
namespace [[]] A::B {} // expected-error {{attributes cannot be specified on a nested namespace definition}}
|
||||
|
||||
enum test {
|
||||
bing [[]],
|
||||
bar [[]] = 1,
|
||||
baz [[]][[]],
|
||||
quux [[]][[]] = 4
|
||||
};
|
||||
|
|
|
@ -9,7 +9,7 @@ void f6(void) __attribute__((ownership_holds(foo, 1, 2, 3))); // expected-error
|
|||
void f7(void) __attribute__((ownership_takes(foo))); // expected-error {{'ownership_takes' attribute takes at least 2 arguments}}
|
||||
void f8(int *i, int *j, int k) __attribute__((ownership_holds(foo, 1, 2, 4))); // expected-error {{'ownership_holds' attribute parameter 3 is out of bounds}}
|
||||
|
||||
int f9 __attribute__((ownership_takes(foo, 1))); // expected-warning {{'ownership_takes' attribute only applies to non-K&R-style functions}}
|
||||
int f9 __attribute__((ownership_takes(foo, 1))); // expected-warning {{'ownership_takes' attribute only applies to non-K&R-style functions}}
|
||||
|
||||
void f10(int i) __attribute__((ownership_holds(foo, 1))); // expected-error {{'ownership_holds' attribute only applies to pointer arguments}}
|
||||
void *f11(float i) __attribute__((ownership_returns(foo, 1))); // expected-error {{'ownership_returns' attribute only applies to integer arguments}}
|
||||
|
@ -19,8 +19,8 @@ void f13(int *i, int *j) __attribute__((ownership_holds(foo, 1))) __attribute__(
|
|||
void f14(int i, int j, int *k) __attribute__((ownership_holds(foo, 3))) __attribute__((ownership_takes(foo, 3))); // expected-error {{'ownership_holds' and 'ownership_takes' attributes are not compatible}}
|
||||
|
||||
void f15(int, int)
|
||||
__attribute__((ownership_returns(foo, 1))) // expected-note {{declared with index 1 here}}
|
||||
__attribute__((ownership_returns(foo, 2))); // expected-error {{'ownership_returns' attribute index does not match; here it is 2}}
|
||||
void f16(int *i, int *j) __attribute__((ownership_holds(foo, 1))) __attribute__((ownership_holds(foo, 1))); // OK, same index
|
||||
void f17(void*) __attribute__((ownership_takes(__, 1)));
|
||||
void f18() __attribute__((ownership_takes(foo, 1))); // expected-warning {{'ownership_takes' attribute only applies to non-K&R-style functions}}
|
||||
__attribute__((ownership_returns(foo, 1))) // expected-note {{declared with index 1 here}}
|
||||
__attribute__((ownership_returns(foo, 2))); // expected-error {{'ownership_returns' attribute index does not match; here it is 2}}
|
||||
void f16(int *i, int *j) __attribute__((ownership_holds(foo, 1))) __attribute__((ownership_holds(foo, 1))); // OK, same index
|
||||
void f17(void*) __attribute__((ownership_takes(__, 1)));
|
||||
void f18() __attribute__((ownership_takes(foo, 1))); // expected-warning {{'ownership_takes' attribute only applies to non-K&R-style functions}}
|
||||
|
|
|
@ -1,13 +1,13 @@
|
|||
// RUN: %clang_cc1 -fsyntax-only -Wdocumentation %s
|
||||
// The run line does not have '-verify' because we were crashing while printing
|
||||
// the diagnostic.
|
||||
|
||||
// This file has DOS-style line endings (CR LF). Please don't change it to
|
||||
// Unix-style LF!
|
||||
|
||||
// PR14591. Check that we don't crash on this.
|
||||
/**
|
||||
* @param abc
|
||||
*/
|
||||
void nocrash1(int qwerty);
|
||||
|
||||
// RUN: %clang_cc1 -fsyntax-only -Wdocumentation %s
|
||||
// The run line does not have '-verify' because we were crashing while printing
|
||||
// the diagnostic.
|
||||
|
||||
// This file has DOS-style line endings (CR LF). Please don't change it to
|
||||
// Unix-style LF!
|
||||
|
||||
// PR14591. Check that we don't crash on this.
|
||||
/**
|
||||
* @param abc
|
||||
*/
|
||||
void nocrash1(int qwerty);
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
// RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s
|
||||
// RUN: not %clang_cc1 -fsyntax-only -fdiagnostics-parseable-fixits -std=c++11 %s 2>&1 | FileCheck %s
|
||||
|
||||
[[noreturn()]] void f(); // expected-error {{attribute 'noreturn' cannot have an argument list}} \
|
||||
// CHECK: fix-it:"{{.*}}":{4:11-4:13}:""
|
||||
// RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s
|
||||
// RUN: not %clang_cc1 -fsyntax-only -fdiagnostics-parseable-fixits -std=c++11 %s 2>&1 | FileCheck %s
|
||||
|
||||
[[noreturn()]] void f(); // expected-error {{attribute 'noreturn' cannot have an argument list}} \
|
||||
// CHECK: fix-it:"{{.*}}":{4:11-4:13}:""
|
||||
|
|
|
@ -5,14 +5,14 @@
|
|||
#if !__has_attribute(no_sanitize_address)
|
||||
#error "Should support no_sanitize_address"
|
||||
#endif
|
||||
|
||||
void noanal_fun() NO_SANITIZE_ADDRESS;
|
||||
|
||||
void noanal_fun_alt() __attribute__((__no_sanitize_address__));
|
||||
|
||||
void noanal_fun_args() __attribute__((no_sanitize_address(1))); // \
|
||||
// expected-error {{'no_sanitize_address' attribute takes no arguments}}
|
||||
|
||||
|
||||
void noanal_fun() NO_SANITIZE_ADDRESS;
|
||||
|
||||
void noanal_fun_alt() __attribute__((__no_sanitize_address__));
|
||||
|
||||
void noanal_fun_args() __attribute__((no_sanitize_address(1))); // \
|
||||
// expected-error {{'no_sanitize_address' attribute takes no arguments}}
|
||||
|
||||
int noanal_testfn(int y) NO_SANITIZE_ADDRESS;
|
||||
|
||||
int noanal_testfn(int y) {
|
||||
|
|
|
@ -5,14 +5,14 @@
|
|||
#if !__has_attribute(no_sanitize_memory)
|
||||
#error "Should support no_sanitize_memory"
|
||||
#endif
|
||||
|
||||
void noanal_fun() NO_SANITIZE_MEMORY;
|
||||
|
||||
void noanal_fun_alt() __attribute__((__no_sanitize_memory__));
|
||||
|
||||
void noanal_fun_args() __attribute__((no_sanitize_memory(1))); // \
|
||||
// expected-error {{'no_sanitize_memory' attribute takes no arguments}}
|
||||
|
||||
|
||||
void noanal_fun() NO_SANITIZE_MEMORY;
|
||||
|
||||
void noanal_fun_alt() __attribute__((__no_sanitize_memory__));
|
||||
|
||||
void noanal_fun_args() __attribute__((no_sanitize_memory(1))); // \
|
||||
// expected-error {{'no_sanitize_memory' attribute takes no arguments}}
|
||||
|
||||
int noanal_testfn(int y) NO_SANITIZE_MEMORY;
|
||||
|
||||
int noanal_testfn(int y) {
|
||||
|
|
|
@ -5,14 +5,14 @@
|
|||
#if !__has_attribute(no_sanitize_thread)
|
||||
#error "Should support no_sanitize_thread"
|
||||
#endif
|
||||
|
||||
void noanal_fun() NO_SANITIZE_THREAD;
|
||||
|
||||
void noanal_fun_alt() __attribute__((__no_sanitize_thread__));
|
||||
|
||||
void noanal_fun_args() __attribute__((no_sanitize_thread(1))); // \
|
||||
// expected-error {{'no_sanitize_thread' attribute takes no arguments}}
|
||||
|
||||
|
||||
void noanal_fun() NO_SANITIZE_THREAD;
|
||||
|
||||
void noanal_fun_alt() __attribute__((__no_sanitize_thread__));
|
||||
|
||||
void noanal_fun_args() __attribute__((no_sanitize_thread(1))); // \
|
||||
// expected-error {{'no_sanitize_thread' attribute takes no arguments}}
|
||||
|
||||
int noanal_testfn(int y) NO_SANITIZE_THREAD;
|
||||
|
||||
int noanal_testfn(int y) {
|
||||
|
|
|
@ -1,97 +1,97 @@
|
|||
// RUN: %clang_cc1 -fsyntax-only -fcxx-exceptions -verify %s -std=c++14
|
||||
|
||||
int FileScope;
|
||||
|
||||
struct A {
|
||||
int I;
|
||||
void f();
|
||||
A() try {
|
||||
} catch (...) {
|
||||
I = 12; // expected-warning {{cannot refer to a non-static member from the handler of a constructor function try block}}
|
||||
f(); // expected-warning {{cannot refer to a non-static member from the handler of a constructor function try block}}
|
||||
|
||||
FileScope = 12; // ok
|
||||
A a;
|
||||
a.I = 12; // ok
|
||||
}
|
||||
};
|
||||
|
||||
struct B {
|
||||
int I;
|
||||
void f();
|
||||
};
|
||||
|
||||
struct C : B {
|
||||
C() try {
|
||||
} catch (...) {
|
||||
I = 12; // expected-warning {{cannot refer to a non-static member from the handler of a constructor function try block}}
|
||||
f(); // expected-warning {{cannot refer to a non-static member from the handler of a constructor function try block}}
|
||||
}
|
||||
};
|
||||
|
||||
struct D {
|
||||
static int I;
|
||||
static void f();
|
||||
|
||||
D() try {
|
||||
} catch (...) {
|
||||
I = 12; // ok
|
||||
f(); // ok
|
||||
}
|
||||
};
|
||||
int D::I;
|
||||
|
||||
struct E {
|
||||
int I;
|
||||
void f();
|
||||
static int J;
|
||||
static void g();
|
||||
|
||||
~E() try {
|
||||
} catch (...) {
|
||||
I = 12; // expected-warning {{cannot refer to a non-static member from the handler of a destructor function try block}}
|
||||
f(); // expected-warning {{cannot refer to a non-static member from the handler of a destructor function try block}}
|
||||
|
||||
J = 12; // ok
|
||||
g(); // ok
|
||||
}
|
||||
};
|
||||
int E::J;
|
||||
|
||||
struct F {
|
||||
static int I;
|
||||
static void f();
|
||||
};
|
||||
int F::I;
|
||||
|
||||
struct G : F {
|
||||
G() try {
|
||||
} catch (...) {
|
||||
I = 12; // ok
|
||||
f(); // ok
|
||||
}
|
||||
};
|
||||
|
||||
struct H {
|
||||
struct A {};
|
||||
enum {
|
||||
E
|
||||
};
|
||||
|
||||
H() try {
|
||||
} catch (...) {
|
||||
H::A a; // ok
|
||||
int I = E; // ok
|
||||
}
|
||||
};
|
||||
|
||||
struct I {
|
||||
int J;
|
||||
|
||||
I() {
|
||||
try { // not a function-try-block
|
||||
} catch (...) {
|
||||
J = 12; // ok
|
||||
}
|
||||
}
|
||||
// RUN: %clang_cc1 -fsyntax-only -fcxx-exceptions -verify %s -std=c++14
|
||||
|
||||
int FileScope;
|
||||
|
||||
struct A {
|
||||
int I;
|
||||
void f();
|
||||
A() try {
|
||||
} catch (...) {
|
||||
I = 12; // expected-warning {{cannot refer to a non-static member from the handler of a constructor function try block}}
|
||||
f(); // expected-warning {{cannot refer to a non-static member from the handler of a constructor function try block}}
|
||||
|
||||
FileScope = 12; // ok
|
||||
A a;
|
||||
a.I = 12; // ok
|
||||
}
|
||||
};
|
||||
|
||||
struct B {
|
||||
int I;
|
||||
void f();
|
||||
};
|
||||
|
||||
struct C : B {
|
||||
C() try {
|
||||
} catch (...) {
|
||||
I = 12; // expected-warning {{cannot refer to a non-static member from the handler of a constructor function try block}}
|
||||
f(); // expected-warning {{cannot refer to a non-static member from the handler of a constructor function try block}}
|
||||
}
|
||||
};
|
||||
|
||||
struct D {
|
||||
static int I;
|
||||
static void f();
|
||||
|
||||
D() try {
|
||||
} catch (...) {
|
||||
I = 12; // ok
|
||||
f(); // ok
|
||||
}
|
||||
};
|
||||
int D::I;
|
||||
|
||||
struct E {
|
||||
int I;
|
||||
void f();
|
||||
static int J;
|
||||
static void g();
|
||||
|
||||
~E() try {
|
||||
} catch (...) {
|
||||
I = 12; // expected-warning {{cannot refer to a non-static member from the handler of a destructor function try block}}
|
||||
f(); // expected-warning {{cannot refer to a non-static member from the handler of a destructor function try block}}
|
||||
|
||||
J = 12; // ok
|
||||
g(); // ok
|
||||
}
|
||||
};
|
||||
int E::J;
|
||||
|
||||
struct F {
|
||||
static int I;
|
||||
static void f();
|
||||
};
|
||||
int F::I;
|
||||
|
||||
struct G : F {
|
||||
G() try {
|
||||
} catch (...) {
|
||||
I = 12; // ok
|
||||
f(); // ok
|
||||
}
|
||||
};
|
||||
|
||||
struct H {
|
||||
struct A {};
|
||||
enum {
|
||||
E
|
||||
};
|
||||
|
||||
H() try {
|
||||
} catch (...) {
|
||||
H::A a; // ok
|
||||
int I = E; // ok
|
||||
}
|
||||
};
|
||||
|
||||
struct I {
|
||||
int J;
|
||||
|
||||
I() {
|
||||
try { // not a function-try-block
|
||||
} catch (...) {
|
||||
J = 12; // ok
|
||||
}
|
||||
}
|
||||
};
|
|
@ -1,19 +1,19 @@
|
|||
// RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s
|
||||
|
||||
void f(); // expected-note {{possible target for call}}
|
||||
void f(int); // expected-note {{possible target for call}}
|
||||
|
||||
void g() {
|
||||
bool b = noexcept(f); // expected-error {{reference to overloaded function could not be resolved; did you mean to call it with no arguments?}}
|
||||
bool b2 = noexcept(f(0));
|
||||
}
|
||||
|
||||
struct S {
|
||||
void g(); // expected-note {{possible target for call}}
|
||||
void g(int); // expected-note {{possible target for call}}
|
||||
|
||||
void h() {
|
||||
bool b = noexcept(this->g); // expected-error {{reference to non-static member function must be called; did you mean to call it with no arguments?}}
|
||||
bool b2 = noexcept(this->g(0));
|
||||
}
|
||||
};
|
||||
// RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s
|
||||
|
||||
void f(); // expected-note {{possible target for call}}
|
||||
void f(int); // expected-note {{possible target for call}}
|
||||
|
||||
void g() {
|
||||
bool b = noexcept(f); // expected-error {{reference to overloaded function could not be resolved; did you mean to call it with no arguments?}}
|
||||
bool b2 = noexcept(f(0));
|
||||
}
|
||||
|
||||
struct S {
|
||||
void g(); // expected-note {{possible target for call}}
|
||||
void g(int); // expected-note {{possible target for call}}
|
||||
|
||||
void h() {
|
||||
bool b = noexcept(this->g); // expected-error {{reference to non-static member function must be called; did you mean to call it with no arguments?}}
|
||||
bool b2 = noexcept(this->g(0));
|
||||
}
|
||||
};
|
||||
|
|
Loading…
Reference in New Issue