Fix uninitialized values and bad enum conversions found by UBSAN.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@237738 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Eric Fiselier 2015-05-19 23:03:57 +00:00
parent 5486fac53c
commit d539803d4b
4 changed files with 17 additions and 17 deletions

View File

@ -57,7 +57,7 @@ void check_enum_types()
}
enum enum1 {};
enum enum1 { zero = 0, one = 1 };
enum enum2 {
value = std::numeric_limits<unsigned long>::max()
};

View File

@ -22,13 +22,13 @@
int main()
{
{
std::atomic_flag f;
std::atomic_flag f = ATOMIC_FLAG_INIT;
f.test_and_set();
atomic_flag_clear(&f);
assert(f.test_and_set() == 0);
}
{
volatile std::atomic_flag f;
volatile std::atomic_flag f = ATOMIC_FLAG_INIT;
f.test_and_set();
atomic_flag_clear(&f);
assert(f.test_and_set() == 0);

View File

@ -22,37 +22,37 @@
int main()
{
{
std::atomic_flag f;
std::atomic_flag f = ATOMIC_FLAG_INIT;
f.test_and_set();
atomic_flag_clear_explicit(&f, std::memory_order_relaxed);
assert(f.test_and_set() == 0);
}
{
std::atomic_flag f;
std::atomic_flag f = ATOMIC_FLAG_INIT;
f.test_and_set();
atomic_flag_clear_explicit(&f, std::memory_order_release);
assert(f.test_and_set() == 0);
}
{
std::atomic_flag f;
std::atomic_flag f = ATOMIC_FLAG_INIT;
f.test_and_set();
atomic_flag_clear_explicit(&f, std::memory_order_seq_cst);
assert(f.test_and_set() == 0);
}
{
volatile std::atomic_flag f;
volatile std::atomic_flag f = ATOMIC_FLAG_INIT;
f.test_and_set();
atomic_flag_clear_explicit(&f, std::memory_order_relaxed);
assert(f.test_and_set() == 0);
}
{
volatile std::atomic_flag f;
volatile std::atomic_flag f = ATOMIC_FLAG_INIT;
f.test_and_set();
atomic_flag_clear_explicit(&f, std::memory_order_release);
assert(f.test_and_set() == 0);
}
{
volatile std::atomic_flag f;
volatile std::atomic_flag f = ATOMIC_FLAG_INIT;
f.test_and_set();
atomic_flag_clear_explicit(&f, std::memory_order_seq_cst);
assert(f.test_and_set() == 0);

View File

@ -22,49 +22,49 @@
int main()
{
{
std::atomic_flag f;
std::atomic_flag f = ATOMIC_FLAG_INIT;
f.test_and_set();
f.clear();
assert(f.test_and_set() == 0);
}
{
std::atomic_flag f;
std::atomic_flag f = ATOMIC_FLAG_INIT;
f.test_and_set();
f.clear(std::memory_order_relaxed);
assert(f.test_and_set() == 0);
}
{
std::atomic_flag f;
std::atomic_flag f = ATOMIC_FLAG_INIT;
f.test_and_set();
f.clear(std::memory_order_release);
assert(f.test_and_set() == 0);
}
{
std::atomic_flag f;
std::atomic_flag f = ATOMIC_FLAG_INIT;
f.test_and_set();
f.clear(std::memory_order_seq_cst);
assert(f.test_and_set() == 0);
}
{
volatile std::atomic_flag f;
volatile std::atomic_flag f = ATOMIC_FLAG_INIT;
f.test_and_set();
f.clear();
assert(f.test_and_set() == 0);
}
{
volatile std::atomic_flag f;
volatile std::atomic_flag f = ATOMIC_FLAG_INIT;
f.test_and_set();
f.clear(std::memory_order_relaxed);
assert(f.test_and_set() == 0);
}
{
volatile std::atomic_flag f;
volatile std::atomic_flag f = ATOMIC_FLAG_INIT;
f.test_and_set();
f.clear(std::memory_order_release);
assert(f.test_and_set() == 0);
}
{
volatile std::atomic_flag f;
volatile std::atomic_flag f = ATOMIC_FLAG_INIT;
f.test_and_set();
f.clear(std::memory_order_seq_cst);
assert(f.test_and_set() == 0);