forked from GPUOpen-Drivers/llvm-project
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merged master:ab6779bbd8f into amd-gfx:3e53220dbf6
Local branch amd-gfx 3e53220 Merged master:116e38fd8b8 into amd-gfx:ac9866a082e Remote branch master ab6779b [Statepoint] Remove last of old ImmutableStatepoint code
- Loading branch information
Showing
82 changed files
with
2,587 additions
and
1,528 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,43 @@ | ||
// RUN: %clang_cc1 -std=c++14 %s -emit-llvm -o - -triple nvptx \ | ||
// RUN: -fcuda-is-device | FileCheck --check-prefixes=CXX14 %s | ||
// RUN: %clang_cc1 -std=c++17 %s -emit-llvm -o - -triple nvptx \ | ||
// RUN: -fcuda-is-device | FileCheck --check-prefixes=CXX17 %s | ||
|
||
#include "Inputs/cuda.h" | ||
|
||
// COM: @_ZL1a = internal {{.*}}constant i32 7 | ||
constexpr int a = 7; | ||
__constant__ const int &use_a = a; | ||
|
||
namespace B { | ||
// COM: @_ZN1BL1bE = internal {{.*}}constant i32 9 | ||
constexpr int b = 9; | ||
} | ||
__constant__ const int &use_B_b = B::b; | ||
|
||
struct Q { | ||
// CXX14: @_ZN1Q2k2E = {{.*}}externally_initialized constant i32 6 | ||
// CXX17: @_ZN1Q2k2E = internal {{.*}}constant i32 6 | ||
// CXX14: @_ZN1Q2k1E = available_externally {{.*}}constant i32 5 | ||
// CXX17: @_ZN1Q2k1E = linkonce_odr {{.*}}constant i32 5 | ||
static constexpr int k1 = 5; | ||
static constexpr int k2 = 6; | ||
}; | ||
constexpr int Q::k2; | ||
|
||
__constant__ const int &use_Q_k1 = Q::k1; | ||
__constant__ const int &use_Q_k2 = Q::k2; | ||
|
||
template<typename T> struct X { | ||
// CXX14: @_ZN1XIiE1aE = available_externally {{.*}}constant i32 123 | ||
// CXX17: @_ZN1XIiE1aE = linkonce_odr {{.*}}constant i32 123 | ||
static constexpr int a = 123; | ||
}; | ||
__constant__ const int &use_X_a = X<int>::a; | ||
|
||
template <typename T, T a, T b> struct A { | ||
// CXX14: @_ZN1AIiLi1ELi2EE1xE = available_externally {{.*}}constant i32 2 | ||
// CXX17: @_ZN1AIiLi1ELi2EE1xE = linkonce_odr {{.*}}constant i32 2 | ||
constexpr static T x = a * b; | ||
}; | ||
__constant__ const int &y = A<int, 1, 2>::x; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,80 @@ | ||
// RUN: %clang_cc1 -std=c++14 %s -emit-llvm -o - -triple nvptx64-nvidia-cuda \ | ||
// RUN: -fcuda-is-device -verify -fsyntax-only | ||
// RUN: %clang_cc1 -std=c++17 %s -emit-llvm -o - -triple nvptx64-nvidia-cuda \ | ||
// RUN: -fcuda-is-device -verify -fsyntax-only | ||
// RUN: %clang_cc1 -std=c++14 %s -emit-llvm -o - \ | ||
// RUN: -triple x86_64-unknown-linux-gnu -verify -fsyntax-only | ||
// RUN: %clang_cc1 -std=c++17 %s -emit-llvm -o - \ | ||
// RUN: -triple x86_64-unknown-linux-gnu -verify -fsyntax-only | ||
#include "Inputs/cuda.h" | ||
|
||
template<typename T> | ||
__host__ __device__ void foo(const T **a) { | ||
// expected-note@-1 {{declared here}} | ||
static const T b = sizeof(a); | ||
static constexpr T c = sizeof(a); | ||
const T d = sizeof(a); | ||
constexpr T e = sizeof(a); | ||
constexpr T f = **a; | ||
// expected-error@-1 {{constexpr variable 'f' must be initialized by a constant expression}} | ||
// expected-note@-2 {{read of non-constexpr variable 'a' is not allowed in a constant expression}} | ||
a[0] = &b; | ||
a[1] = &c; | ||
a[2] = &d; | ||
a[3] = &e; | ||
} | ||
|
||
__device__ void device_fun(const int **a) { | ||
// expected-note@-1 {{declared here}} | ||
constexpr int b = sizeof(a); | ||
static constexpr int c = sizeof(a); | ||
constexpr int d = **a; | ||
// expected-error@-1 {{constexpr variable 'd' must be initialized by a constant expression}} | ||
// expected-note@-2 {{read of non-constexpr variable 'a' is not allowed in a constant expression}} | ||
a[0] = &b; | ||
a[1] = &c; | ||
foo(a); | ||
// expected-note@-1 {{in instantiation of function template specialization 'foo<int>' requested here}} | ||
} | ||
|
||
void host_fun(const int **a) { | ||
// expected-note@-1 {{declared here}} | ||
constexpr int b = sizeof(a); | ||
static constexpr int c = sizeof(a); | ||
constexpr int d = **a; | ||
// expected-error@-1 {{constexpr variable 'd' must be initialized by a constant expression}} | ||
// expected-note@-2 {{read of non-constexpr variable 'a' is not allowed in a constant expression}} | ||
a[0] = &b; | ||
a[1] = &c; | ||
foo(a); | ||
} | ||
|
||
__host__ __device__ void host_device_fun(const int **a) { | ||
// expected-note@-1 {{declared here}} | ||
constexpr int b = sizeof(a); | ||
static constexpr int c = sizeof(a); | ||
constexpr int d = **a; | ||
// expected-error@-1 {{constexpr variable 'd' must be initialized by a constant expression}} | ||
// expected-note@-2 {{read of non-constexpr variable 'a' is not allowed in a constant expression}} | ||
a[0] = &b; | ||
a[1] = &c; | ||
foo(a); | ||
} | ||
|
||
template <class T> | ||
struct A { | ||
explicit A() = default; | ||
}; | ||
template <class T> | ||
constexpr A<T> a{}; | ||
|
||
struct B { | ||
static constexpr bool value = true; | ||
}; | ||
|
||
template<typename T> | ||
struct C { | ||
static constexpr bool value = T::value; | ||
}; | ||
|
||
__constant__ const bool &x = C<B>::value; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
58 changes: 58 additions & 0 deletions
58
compiler-rt/lib/sanitizer_common/tests/sanitizer_mac_test.cpp
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,58 @@ | ||
//===-- sanitizer_mac_test.cpp --------------------------------------------===// | ||
// | ||
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. | ||
// See https://llvm.org/LICENSE.txt for license information. | ||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception | ||
// | ||
//===----------------------------------------------------------------------===// | ||
// | ||
// Tests for sanitizer_mac.{h,cpp} | ||
// | ||
//===----------------------------------------------------------------------===// | ||
|
||
#include "sanitizer_common/sanitizer_platform.h" | ||
#if SANITIZER_MAC | ||
|
||
#include "sanitizer_common/sanitizer_mac.h" | ||
|
||
#include "gtest/gtest.h" | ||
|
||
#include <sys/sysctl.h> // sysctlbyname | ||
#include <mach/kern_return.h> // KERN_SUCCESS | ||
|
||
namespace __sanitizer { | ||
|
||
TEST(SanitizerMac, GetMacosAlignedVersion) { | ||
MacosVersion vers = GetMacosAlignedVersion(); | ||
EXPECT_EQ(vers.major, 10); | ||
EXPECT_EQ(vers.minor, GetDarwinKernelVersion().major - 4); | ||
} | ||
|
||
void ParseVersion(const char *vers, u16 *major, u16 *minor); | ||
|
||
TEST(SanitizerMac, ParseVersion) { | ||
u16 major, minor; | ||
ParseVersion("11.22.33", &major, &minor); | ||
EXPECT_EQ(major, 11); | ||
EXPECT_EQ(minor, 22); | ||
} | ||
|
||
TEST(SanitizerMac, GetDarwinKernelVersion) { | ||
DarwinKernelVersion vers = GetDarwinKernelVersion(); | ||
std::ostringstream oss; | ||
oss << vers.major << '.' << vers.minor; | ||
std::string actual = oss.str(); | ||
|
||
char buf[100]; | ||
size_t len = sizeof(buf); | ||
int res = sysctlbyname("kern.osrelease", buf, &len, nullptr, 0); | ||
ASSERT_EQ(res, KERN_SUCCESS); | ||
std::string expected(buf); | ||
|
||
// Prefix match | ||
ASSERT_TRUE(expected.compare(0, actual.size(), actual) == 0); | ||
} | ||
|
||
} // namespace __sanitizer | ||
|
||
#endif // SANITIZER_MAC |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.