From 061da546b983eb767bad15e67af1174fb0bcf31c Mon Sep 17 00:00:00 2001 From: patrick Date: Mon, 3 Aug 2020 14:33:06 +0000 Subject: Import LLVM 10.0.0 release including clang, lld and lldb. ok hackroom tested by plenty --- .../non-overlapping-index-variable-i/Makefile | 3 ++ .../TestIndexVariable.py | 47 ++++++++++++++++++++++ .../non-overlapping-index-variable-i/main.cpp | 45 +++++++++++++++++++++ 3 files changed, 95 insertions(+) create mode 100644 gnu/llvm/lldb/packages/Python/lldbsuite/test/functionalities/non-overlapping-index-variable-i/Makefile create mode 100644 gnu/llvm/lldb/packages/Python/lldbsuite/test/functionalities/non-overlapping-index-variable-i/TestIndexVariable.py create mode 100644 gnu/llvm/lldb/packages/Python/lldbsuite/test/functionalities/non-overlapping-index-variable-i/main.cpp (limited to 'gnu/llvm/lldb/packages/Python/lldbsuite/test/functionalities/non-overlapping-index-variable-i') diff --git a/gnu/llvm/lldb/packages/Python/lldbsuite/test/functionalities/non-overlapping-index-variable-i/Makefile b/gnu/llvm/lldb/packages/Python/lldbsuite/test/functionalities/non-overlapping-index-variable-i/Makefile new file mode 100644 index 00000000000..99998b20bcb --- /dev/null +++ b/gnu/llvm/lldb/packages/Python/lldbsuite/test/functionalities/non-overlapping-index-variable-i/Makefile @@ -0,0 +1,3 @@ +CXX_SOURCES := main.cpp + +include Makefile.rules diff --git a/gnu/llvm/lldb/packages/Python/lldbsuite/test/functionalities/non-overlapping-index-variable-i/TestIndexVariable.py b/gnu/llvm/lldb/packages/Python/lldbsuite/test/functionalities/non-overlapping-index-variable-i/TestIndexVariable.py new file mode 100644 index 00000000000..d5424c0bb40 --- /dev/null +++ b/gnu/llvm/lldb/packages/Python/lldbsuite/test/functionalities/non-overlapping-index-variable-i/TestIndexVariable.py @@ -0,0 +1,47 @@ +"""Test evaluating expressions which ref. index variable 'i' which just goes +from out of scope to in scope when stopped at the breakpoint.""" + + + +import lldb +from lldbsuite.test.lldbtest import * +import lldbsuite.test.lldbutil as lldbutil + + +class NonOverlappingIndexVariableCase(TestBase): + + mydir = TestBase.compute_mydir(__file__) + + def setUp(self): + TestBase.setUp(self) + self.source = 'main.cpp' + self.line_to_break = line_number( + self.source, '// Set breakpoint here.') + + # rdar://problem/9890530 + def test_eval_index_variable(self): + """Test expressions of variable 'i' which appears in two for loops.""" + self.build() + self.runCmd("file " + self.getBuildArtifact("a.out"), + CURRENT_EXECUTABLE_SET) + + lldbutil.run_break_set_by_file_and_line( + self, + self.source, + self.line_to_break, + num_expected_locations=1, + loc_exact=True) + + self.runCmd("run", RUN_SUCCEEDED) + + # The stop reason of the thread should be breakpoint. + self.expect("thread list", STOPPED_DUE_TO_BREAKPOINT, + substrs=['stopped', + 'stop reason = breakpoint']) + + self.runCmd('frame variable i') + self.runCmd('expr i') + self.runCmd('expr ptr[0]->point.x') + self.runCmd('expr ptr[0]->point.y') + self.runCmd('expr ptr[i]->point.x') + self.runCmd('expr ptr[i]->point.y') diff --git a/gnu/llvm/lldb/packages/Python/lldbsuite/test/functionalities/non-overlapping-index-variable-i/main.cpp b/gnu/llvm/lldb/packages/Python/lldbsuite/test/functionalities/non-overlapping-index-variable-i/main.cpp new file mode 100644 index 00000000000..2b8406a631b --- /dev/null +++ b/gnu/llvm/lldb/packages/Python/lldbsuite/test/functionalities/non-overlapping-index-variable-i/main.cpp @@ -0,0 +1,45 @@ +//===-- main.cpp ------------------------------------------------*- C++ -*-===// +// +// 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 +// +//===----------------------------------------------------------------------===// + +class Point { +public: + int x; + int y; + Point(int a, int b): + x(a), + y(b) + {} +}; + +class Data { +public: + int id; + Point point; + Data(int i): + id(i), + point(0, 0) + {} +}; + +int main(int argc, char const *argv[]) { + Data *data[1000]; + Data **ptr = data; + for (int i = 0; i < 1000; ++i) { + ptr[i] = new Data(i); + ptr[i]->point.x = i; + ptr[i]->point.y = i+1; + } + + for (int i = 0; i < 1000; ++i) { + bool dump = argc > 1; // Set breakpoint here. + // Evaluate a couple of expressions (2*1000 = 2000 exprs): + // expr ptr[i]->point.x + // expr ptr[i]->point.y + } + return 0; +} -- cgit v1.2.3-59-g8ed1b