40 lines · c
1// RUN: %clang_cc1 -ffreestanding -fms-extensions -fms-compatibility -fms-compatibility-version=17.00 \2// RUN: -triple i686--windows -emit-llvm %s -o - \3// RUN: | FileCheck %s4// RUN: %clang_cc1 -ffreestanding -fms-extensions -fms-compatibility -fms-compatibility-version=17.00 \5// RUN: -triple x86_64--windows -emit-llvm %s -o - \6// RUN: | FileCheck %s --check-prefix=CHECK --check-prefix=CHECK-X647 8// intrin.h needs size_t, but -ffreestanding prevents us from getting it from9// stddef.h. Work around it with this typedef.10typedef __SIZE_TYPE__ size_t;11 12#include <intrin.h>13 14void test_ReadWriteBarrier(void) { _ReadWriteBarrier(); }15// CHECK-LABEL: define dso_local void @test_ReadWriteBarrier16// CHECK: fence syncscope("singlethread") seq_cst17// CHECK: ret void18// CHECK: }19 20void test_ReadBarrier(void) { _ReadBarrier(); }21// CHECK-LABEL: define dso_local void @test_ReadBarrier22// CHECK: fence syncscope("singlethread") seq_cst23// CHECK: ret void24// CHECK: }25 26void test_WriteBarrier(void) { _WriteBarrier(); }27// CHECK-LABEL: define dso_local void @test_WriteBarrier28// CHECK: fence syncscope("singlethread") seq_cst29// CHECK: ret void30// CHECK: }31 32#if defined(__x86_64__)33void test__faststorefence(void) { __faststorefence(); }34// CHECK-X64-LABEL: define dso_local void @test__faststorefence35// CHECK-X64: fence seq_cst36// CHECK-X64: ret void37// CHECK-X64: }38#endif39 40