llvm-capstone/clang/test/Headers/ms-arm64-intrin.cpp
Tom Tan 42b2424e4f [COFF, ARM64] Remove definitions for _byteswap library functions
_byteswap_* functions are are implemented in below file as normal function
from libucrt.lib and declared in stdlib.h. Define them in intrin.h triggers
lld error "conflicting comdat type" and "duplicate symbols" which was just
added to LLD (https://reviews.llvm.org/D57324).

C:\Program Files (x86)\Windows Kits\10\Source\10.0.17763.0\ucrt\stdlib\byteswap.cpp

Differential Revision: https://reviews.llvm.org/D57915

llvm-svn: 353740
2019-02-11 20:04:02 +00:00

30 lines
775 B
C++

// REQUIRES: aarch64-registered-target
// RUN: %clang_cc1 -triple arm64-windows -O1 \
// RUN: -fms-compatibility -fms-compatibility-version=17.00 \
// RUN: -ffreestanding -fsyntax-only -Werror \
// RUN: -isystem %S/Inputs/include %s -S -o - -emit-llvm 2>&1 \
// RUN: | FileCheck %s
#include <intrin.h>
void check_nop() {
// CHECK: "nop"
__nop();
}
unsigned short check_byteswap_ushort(unsigned short val) {
// CHECK: call i16 @_byteswap_ushort(i16 %val)
return _byteswap_ushort(val);
}
unsigned long check_byteswap_ulong(unsigned long val) {
// CHECK: call i32 @_byteswap_ulong(i32 %val)
return _byteswap_ulong(val);
}
unsigned __int64 check_byteswap_uint64(unsigned __int64 val) {
// CHECK: call i64 @_byteswap_uint64(i64 %val)
return _byteswap_uint64(val);
}