diff options
-rw-r--r-- | lldb/source/Core/Scalar.cpp | 2 | ||||
-rw-r--r-- | lldb/unittests/CMakeLists.txt | 1 | ||||
-rw-r--r-- | lldb/unittests/Core/CMakeLists.txt | 3 | ||||
-rw-r--r-- | lldb/unittests/Core/ScalarTest.cpp | 32 |
4 files changed, 37 insertions, 1 deletions
diff --git a/lldb/source/Core/Scalar.cpp b/lldb/source/Core/Scalar.cpp index 586969b2d50..4120d3263be 100644 --- a/lldb/source/Core/Scalar.cpp +++ b/lldb/source/Core/Scalar.cpp @@ -1875,7 +1875,7 @@ Scalar::operator>>= (const Scalar& rhs) case e_sint128: case e_uint128: { - m_integer >> *rhs.m_integer.getRawData(); + m_integer = m_integer.ashr(*(const uint_t *)rhs.m_integer.getRawData()); break; } } diff --git a/lldb/unittests/CMakeLists.txt b/lldb/unittests/CMakeLists.txt index 94031accfec..664cef76761 100644 --- a/lldb/unittests/CMakeLists.txt +++ b/lldb/unittests/CMakeLists.txt @@ -23,6 +23,7 @@ function(add_lldb_unittest test_name) llvm_config(${test_name} ${LLVM_LINK_COMPONENTS}) endfunction() +add_subdirectory(Core) add_subdirectory(Editline) add_subdirectory(Expression) add_subdirectory(Host) diff --git a/lldb/unittests/Core/CMakeLists.txt b/lldb/unittests/Core/CMakeLists.txt new file mode 100644 index 00000000000..4ddcfa1bb79 --- /dev/null +++ b/lldb/unittests/Core/CMakeLists.txt @@ -0,0 +1,3 @@ +add_lldb_unittest(CoreTests + ScalarTest.cpp + ) diff --git a/lldb/unittests/Core/ScalarTest.cpp b/lldb/unittests/Core/ScalarTest.cpp new file mode 100644 index 00000000000..63c0daa424e --- /dev/null +++ b/lldb/unittests/Core/ScalarTest.cpp @@ -0,0 +1,32 @@ +//===-- ScalarTest.cpp ------------------------------------------*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +#if defined(_MSC_VER) && (_HAS_EXCEPTIONS == 0) +// Workaround for MSVC standard library bug, which fails to include <thread> when +// exceptions are disabled. +#include <eh.h> +#endif + +#include "gtest/gtest.h" + +#include "lldb/Core/Scalar.h" + +using namespace lldb_private; + +TEST(ScalarTest, RightShiftOperator) +{ + int a = 0x00001000; + int b = 0xFFFFFFFF; + int c = 4; + Scalar a_scalar(a); + Scalar b_scalar(b); + Scalar c_scalar(c); + ASSERT_EQ(a >> c, a_scalar >> c_scalar); + ASSERT_EQ(b >> c, b_scalar >> c_scalar); +} |