[debuginfo-tests] r318435 - Resubmit "Refactor debuginfo-tests"

Zachary Turner via llvm-commits llvm-commits at lists.llvm.org
Thu Nov 16 15:37:16 PST 2017


Can we disable these two tests for now until we can look into this?  I'd
like to fix it, but this isn't something that I have the ability to
diagnose on my end and I'm going to be blocked again if we end up having to
revert.  :-/

On Thu, Nov 16, 2017 at 3:34 PM Zachary Turner <zturner at google.com> wrote:

> We can try a clobber.  Another possibility is that in an effort to make it
> so you can run it using both workflows, it now ends up running it twice.
> Once the old way (by descending into it from the clang tree) and once the
> new way (.
>
> Does this not reproduce for you locally when running ninja check-clang?
>
> I don't think the directory mismatch is a problem.  In debuginfo-tests/
> lit.cfg.py I explicitly set the output directory to that location.  I
> don't think it should matter that it's Output instead of Output/tests
>
> On Thu, Nov 16, 2017 at 3:29 PM Adrian Prantl <aprantl at apple.com> wrote:
>
>> It looks like it is actually running the test twice:
>> FAIL: debuginfo-tests :: foreach.m (34967 of 40843)
>> ...
>> PASS: debuginfo-tests :: foreach.m (34972 of 40843)
>>
>> does that help to narrow it down?
>>
>> On Nov 16, 2017, at 3:21 PM, Adrian Prantl via llvm-commits <
>> llvm-commits at lists.llvm.org> wrote:
>>
>> Debugger output was: imported lldb from:
>> "/Applications/Xcode.app/Contents/SharedFrameworks/LLDB.framework/Versions/A/Resources/Python"
>> error: vla.c.tmp.out debug map object file
>> '/Users/buildslave/jenkins/workspace/clang-stage1-configure-RA/clang-build/tools/clang/test/debuginfo-tests/Output/vla.c.tmp.o'
>> has changed (actual time is 0x5a0de4bc, debug map time is 0x5a0de4bb) since
>> this executable was linked, file will be ignored
>>
>>
>> These are different errors than last time. Could it be that there is a
>> directory mismatch? You moved the tests to tests/ but this path is in
>> Output/ instead of Output/tests?
>>
>> It looks like it is finding a file from the build before the big rename.
>> But this is just speculation.
>>
>> -- adrian
>>
>> On Nov 16, 2017, at 3:13 PM, Zachary Turner <zturner at google.com> wrote:
>>
>> Uhh, well that's weird.  a because I didn't get an email (or maybe it got
>> filtered somehow), and b) because I made the fix that we thought was going
>> to work.
>>
>> Can you think of a way to diagnose this?
>>
>> (One option is disabling these two tests until we figure it out.  It's
>> not ideal but the code churn from repeated reverts and resubmits is pretty
>> unfortunate)
>>
>> On Thu, Nov 16, 2017 at 3:01 PM Adrian Prantl <aprantl at apple.com> wrote:
>> Looks like this broke the Darwin bots again:
>>
>> http://green.lab.llvm.org/green/job/clang-stage1-configure-RA/40578/
>>
>> -- adrian
>>
>>
>> On Nov 16, 2017, at 10:26 AM, Zachary Turner via llvm-commits <
>> llvm-commits at lists.llvm.org> wrote:
>>
>> Author: zturner
>> Date: Thu Nov 16 10:26:20 2017
>> New Revision: 318435
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=318435&view=rev
>> Log:
>> Resubmit "Refactor debuginfo-tests"
>>
>> This was reverted due to some failures on specific darwin buildbots,
>> the issue being that the new lit configuration was not setting the
>> SDKROOT environment variable.  We've tested a fix locally and confirmed
>> that it works, so this patch resubmits everything with the fix
>> applied.
>>
>> Added:
>>   debuginfo-tests/trunk/CMakeLists.txt
>>   debuginfo-tests/trunk/lit.cfg.py
>>   debuginfo-tests/trunk/lit.site.cfg.py.in
>>   debuginfo-tests/trunk/tests/
>>   debuginfo-tests/trunk/tests/aggregate-indirect-arg.cpp
>>   debuginfo-tests/trunk/tests/asan-blocks.c
>>   debuginfo-tests/trunk/tests/asan.c
>>   debuginfo-tests/trunk/tests/block_var.m
>>   debuginfo-tests/trunk/tests/blocks.m
>>   debuginfo-tests/trunk/tests/ctor.cpp
>>   debuginfo-tests/trunk/tests/dbg-arg.c
>>   debuginfo-tests/trunk/tests/foreach.m
>>   debuginfo-tests/trunk/tests/forward-declare-class.cpp
>>   debuginfo-tests/trunk/tests/lit.local.cfg
>>   debuginfo-tests/trunk/tests/llgdb.py
>>   debuginfo-tests/trunk/tests/nested-struct.cpp
>>   debuginfo-tests/trunk/tests/nrvo-string.cpp
>>   debuginfo-tests/trunk/tests/safestack.c
>>   debuginfo-tests/trunk/tests/sret.cpp
>>   debuginfo-tests/trunk/tests/stack-var.c
>>   debuginfo-tests/trunk/tests/static-member-2.cpp
>>   debuginfo-tests/trunk/tests/static-member.cpp
>>   debuginfo-tests/trunk/tests/vla.c
>> Removed:
>>   debuginfo-tests/trunk/aggregate-indirect-arg.cpp
>>   debuginfo-tests/trunk/asan-blocks.c
>>   debuginfo-tests/trunk/asan.c
>>   debuginfo-tests/trunk/block_var.m
>>   debuginfo-tests/trunk/blocks.m
>>   debuginfo-tests/trunk/ctor.cpp
>>   debuginfo-tests/trunk/dbg-arg.c
>>   debuginfo-tests/trunk/foreach.m
>>   debuginfo-tests/trunk/forward-declare-class.cpp
>>   debuginfo-tests/trunk/lit.local.cfg
>>   debuginfo-tests/trunk/llgdb.py
>>   debuginfo-tests/trunk/nested-struct.cpp
>>   debuginfo-tests/trunk/nrvo-string.cpp
>>   debuginfo-tests/trunk/safestack.c
>>   debuginfo-tests/trunk/sret.cpp
>>   debuginfo-tests/trunk/stack-var.c
>>   debuginfo-tests/trunk/static-member-2.cpp
>>   debuginfo-tests/trunk/static-member.cpp
>>   debuginfo-tests/trunk/vla.c
>>
>> Added: debuginfo-tests/trunk/CMakeLists.txt
>> URL:
>> http://llvm.org/viewvc/llvm-project/debuginfo-tests/trunk/CMakeLists.txt?rev=318435&view=auto
>>
>> ==============================================================================
>> --- debuginfo-tests/trunk/CMakeLists.txt (added)
>> +++ debuginfo-tests/trunk/CMakeLists.txt Thu Nov 16 10:26:20 2017
>> @@ -0,0 +1,36 @@
>> +# Debug Info tests.  These tests invoke clang to generate programs with
>> +# various types of debug info, and then run those programs under a
>> debugger
>> +# such as GDB or LLDB to verify the results.
>> +
>> +set(DEBUGINFO_TESTS_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR})
>> +set(DEBUGINFO_TESTS_BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR})
>> +
>> +set(DEBUGINFO_TEST_DEPS
>> +  clang
>> +  llvm-config
>> +  FileCheck
>> +  count
>> +  not
>> +  )
>> +
>> +get_target_property(CLANG_SOURCE_DIR clang SOURCE_DIR)
>> +
>> +if (TARGET lld)
>> +  set(DEBUGINFO_TESTS_HAS_LLD 1)
>> +  list(APPEND DEBUGINFO_TEST_DEPS lld)
>> +  get_target_property(LLD_SOURCE_DIR lld SOURCE_DIR)
>> +endif()
>> +
>> +configure_lit_site_cfg(
>> +  ${CMAKE_CURRENT_SOURCE_DIR}/lit.site.cfg.py.in
>> +  ${CMAKE_CURRENT_BINARY_DIR}/lit.site.cfg.py
>> +  MAIN_CONFIG
>> +  ${CMAKE_CURRENT_SOURCE_DIR}/lit.cfg.py
>> +  )
>> +
>> +add_lit_testsuite(check-debuginfo "Running debug info integration tests"
>> +  ${CMAKE_CURRENT_BINARY_DIR}
>> +  DEPENDS ${DEBUGINFO_TEST_DEPS}
>> +  )
>> +
>> +set_target_properties(check-debuginfo PROPERTIES FOLDER "Debug info
>> tests")
>> \ No newline at end of file
>>
>> Removed: debuginfo-tests/trunk/aggregate-indirect-arg.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/debuginfo-tests/trunk/aggregate-indirect-arg.cpp?rev=318434&view=auto
>>
>> ==============================================================================
>> --- debuginfo-tests/trunk/aggregate-indirect-arg.cpp (original)
>> +++ debuginfo-tests/trunk/aggregate-indirect-arg.cpp (removed)
>> @@ -1,32 +0,0 @@
>> -// RUN: %clangxx %target_itanium_abi_host_triple -O0 -g %s -c -o %t.o
>> -// RUN: %clangxx %target_itanium_abi_host_triple %t.o -o %t.out
>> -// RUN: %test_debuginfo %s %t.out
>> -// Radar 8945514
>> -// DEBUGGER: break 22
>> -// DEBUGGER: r
>> -// DEBUGGER: p v
>> -// CHECK: ${{[0-9]+}} =
>> -// CHECK:  Data ={{.*}} 0x0{{(0*)}}
>> -// CHECK:  Kind = 2142
>> -
>> -class SVal {
>> -public:
>> -  ~SVal() {}
>> -  const void* Data;
>> -  unsigned Kind;
>> -};
>> -
>> -void bar(SVal &v) {}
>> -class A {
>> -public:
>> -  void foo(SVal v) { bar(v); }
>> -};
>> -
>> -int main() {
>> -  SVal v;
>> -  v.Data = 0;
>> -  v.Kind = 2142;
>> -  A a;
>> -  a.foo(v);
>> -  return 0;
>> -}
>>
>> Removed: debuginfo-tests/trunk/asan-blocks.c
>> URL:
>> http://llvm.org/viewvc/llvm-project/debuginfo-tests/trunk/asan-blocks.c?rev=318434&view=auto
>>
>> ==============================================================================
>> --- debuginfo-tests/trunk/asan-blocks.c (original)
>> +++ debuginfo-tests/trunk/asan-blocks.c (removed)
>> @@ -1,41 +0,0 @@
>> -// RUN: %clang -fblocks %target_itanium_abi_host_triple -arch x86_64 %s
>> -o %t.out -g -fsanitize=address
>> -// RUN: %test_debuginfo %s %t.out
>> -// FIXME: Remove system-darwin when we build BlocksRuntime everywhere.
>> -// REQUIRES: not_asan, system-darwin
>> -//           Zorg configures the ASAN stage2 bots to not build the asan
>> -//           compiler-rt. Only run this test on non-asanified
>> configurations.
>> -void b();
>> -struct S {
>> -  int a[8];
>> -};
>> -
>> -int f(struct S s, unsigned i) {
>> -  // DEBUGGER: break 17
>> -  // DEBUGGER: r
>> -  // DEBUGGER: p s
>> -  // CHECK: a = ([0] = 0, [1] = 1, [2] = 2, [3] = 3, [4] = 4, [5] = 5,
>> [6] = 6, [7] = 7)
>> -  return s.a[i];
>> -}
>> -
>> -int main(int argc, const char **argv) {
>> -  struct S s = {{0, 1, 2, 3, 4, 5, 6, 7}};
>> -  if (f(s, 4) == 4) {
>> -    // DEBUGGER: break 27
>> -    // DEBUGGER: c
>> -    // DEBUGGER: p s
>> -    // CHECK: a = ([0] = 0, [1] = 1, [2] = 2, [3] = 3, [4] = 4, [5] = 5,
>> [6] = 6, [7] = 7)
>> -    b();
>> -  }
>> -  return 0;
>> -}
>> -
>> -void c() {}
>> -
>> -void b() {
>> -  // DEBUGGER: break 40
>> -  // DEBUGGER: c
>> -  // DEBUGGER: p x
>> -  // CHECK: 42
>> -  __block int x = 42;
>> -  c();
>> -}
>>
>> Removed: debuginfo-tests/trunk/asan.c
>> URL:
>> http://llvm.org/viewvc/llvm-project/debuginfo-tests/trunk/asan.c?rev=318434&view=auto
>>
>> ==============================================================================
>> --- debuginfo-tests/trunk/asan.c (original)
>> +++ debuginfo-tests/trunk/asan.c (removed)
>> @@ -1,31 +0,0 @@
>> -// RUN: %clang -fblocks %target_itanium_abi_host_triple -arch x86_64 %s
>> -o %t.out -g -fsanitize=address
>> -// RUN: %test_debuginfo %s %t.out
>> -// REQUIRES: not_asan
>> -//           Zorg configures the ASAN stage2 bots to not build the asan
>> -//           compiler-rt. Only run this test on non-asanified
>> configurations.
>> -//
>> -
>> -struct S {
>> -  int a[8];
>> -};
>> -
>> -int f(struct S s, unsigned i) {
>> -  // DEBUGGER: break 14
>> -  return s.a[i];
>> -}
>> -
>> -int main(int argc, const char **argv) {
>> -  struct S s = {{0, 1, 2, 3, 4, 5, 6, 7}};
>> -  if (f(s, 4) == 4)
>> -    return f(s, 0);
>> -  return 0;
>> -}
>> -
>> -// DEBUGGER: r
>> -// DEBUGGER: p s
>> -// CHECK: a =
>> -// DEBUGGER: p s.a[0]
>> -// CHECK: = 0
>> -// DEBUGGER: p s.a[1]
>> -// CHECK: = 1
>> -// DEBUGGER: p s.a[7]
>>
>> Removed: debuginfo-tests/trunk/block_var.m
>> URL:
>> http://llvm.org/viewvc/llvm-project/debuginfo-tests/trunk/block_var.m?rev=318434&view=auto
>>
>> ==============================================================================
>> --- debuginfo-tests/trunk/block_var.m (original)
>> +++ debuginfo-tests/trunk/block_var.m (removed)
>> @@ -1,32 +0,0 @@
>> -// RUN: %clang %target_itanium_abi_host_triple -O0 -g %s -c -o %t.o
>> -// RUN: %clang %target_itanium_abi_host_triple %t.o -o %t.out -framework
>> Foundation
>> -// RUN: %test_debuginfo %s %t.out
>> -
>> -// REQUIRES: system-darwin
>> -
>> -// DEBUGGER: break 24
>> -// DEBUGGER: r
>> -// DEBUGGER: p result
>> -// CHECK: ${{[0-9]}} = 42
>> -
>> -void doBlock(void (^block)(void))
>> -{
>> -    block();
>> -}
>> -
>> -int I(int n)
>> -{
>> -    __block int result;
>> -    int i = 2;
>> -    doBlock(^{
>> -        result = n;
>> -    });
>> -    return result + i; /* Check value of 'result' */
>> -}
>> -
>> -
>> -int main (int argc, const char * argv[]) {
>> -  return I(42);
>> -}
>> -
>> -
>>
>> Removed: debuginfo-tests/trunk/blocks.m
>> URL:
>> http://llvm.org/viewvc/llvm-project/debuginfo-tests/trunk/blocks.m?rev=318434&view=auto
>>
>> ==============================================================================
>> --- debuginfo-tests/trunk/blocks.m (original)
>> +++ debuginfo-tests/trunk/blocks.m (removed)
>> @@ -1,43 +0,0 @@
>> -// RUN: %clang %target_itanium_abi_host_triple -O0 -g %s -c -o %t.o
>> -// RUN: %clang %target_itanium_abi_host_triple %t.o -o %t.out -framework
>> Foundation
>> -// RUN: %test_debuginfo %s %t.out
>> -
>> -// REQUIRES: system-darwin
>> -// Radar 9279956
>> -
>> -// DEBUGGER: break 31
>> -// DEBUGGER: r
>> -// DEBUGGER: p m2
>> -// CHECK: ${{[0-9]}} = 1
>> -// DEBUGGER: p dbTransaction
>> -// CHECK: ${{[0-9]}} = 0
>> -// DEBUGGER: p master
>> -// CHECK: ${{[0-9]}} = 0
>> -
>> -#include <Cocoa/Cocoa.h>
>> -
>> -extern void foo(void(^)(void));
>> -
>> - at interface A:NSObject @end
>> - at implementation A
>> -- (void) helper {
>> - int master = 0;
>> - __block int m2 = 0;
>> - __block int dbTransaction = 0;
>> - int (^x)(void) = ^(void) { (void) self;
>> - (void) master;
>> - (void) dbTransaction;
>> - m2++;
>> - return m2;
>> - };
>> -  master = x();
>> -}
>> - at end
>> -
>> -void foo(void(^x)(void)) {}
>> -
>> -int main() {
>> - A *a = [A alloc];
>> - [a helper];
>> - return 0;
>> -}
>>
>> Removed: debuginfo-tests/trunk/ctor.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/debuginfo-tests/trunk/ctor.cpp?rev=318434&view=auto
>>
>> ==============================================================================
>> --- debuginfo-tests/trunk/ctor.cpp (original)
>> +++ debuginfo-tests/trunk/ctor.cpp (removed)
>> @@ -1,25 +0,0 @@
>> -// RUN: %clangxx %target_itanium_abi_host_triple -O0 -g %s -c -o %t.o
>> -// RUN: %clangxx %target_itanium_abi_host_triple %t.o -o %t.out
>> -// RUN: %test_debuginfo %s %t.out
>> -
>> -
>> -// DEBUGGER: break 14
>> -// DEBUGGER: r
>> -// DEBUGGER: p *this
>> -// CHECK-NEXT-NOT: Cannot access memory at address
>> -
>> -class A {
>> -public:
>> - A() : zero(0), data(42)
>> - {
>> - }
>> -private:
>> - int zero;
>> - int data;
>> -};
>> -
>> -int main() {
>> - A a;
>> - return 0;
>> -}
>> -
>>
>> Removed: debuginfo-tests/trunk/dbg-arg.c
>> URL:
>> http://llvm.org/viewvc/llvm-project/debuginfo-tests/trunk/dbg-arg.c?rev=318434&view=auto
>>
>> ==============================================================================
>> --- debuginfo-tests/trunk/dbg-arg.c (original)
>> +++ debuginfo-tests/trunk/dbg-arg.c (removed)
>> @@ -1,46 +0,0 @@
>> -// This test case checks debug info during register moves for an
>> argument.
>> -// RUN: %clang %target_itanium_abi_host_triple -m64 -mllvm
>> -fast-isel=false  %s -c -o %t.o -g
>> -// RUN: %clang %target_itanium_abi_host_triple -m64 %t.o -o %t.out
>> -// RUN: %test_debuginfo %s %t.out
>> -//
>> -// DEBUGGER: break 26
>> -// DEBUGGER: r
>> -// DEBUGGER: print mutex
>> -// CHECK:  ={{.* 0x[0-9A-Fa-f]+}}
>> -//
>> -// Radar 8412415
>> -
>> -struct _mtx
>> -{
>> -  long unsigned int ptr;
>> -  int waiters;
>> -  struct {
>> -    int tag;
>> -    int pad;
>> -  } mtxi;
>> -};
>> -
>> -
>> -int foobar(struct _mtx *mutex) {
>> -  int r = 1;
>> -  int l = 0;
>> -  int j = 0;
>> -  do {
>> -    if (mutex->waiters) {
>> -      r = 2;
>> -    }
>> -    j = bar(r, l);
>> -    ++l;
>> -  } while (l < j);
>> -  return r + j;
>> -}
>> -
>> -int bar(int i, int j) {
>> -  return i + j;
>> -}
>> -
>> -int main() {
>> -  struct _mtx m;
>> -  m.waiters = 0;
>> -  return foobar(&m);
>> -}
>>
>> Removed: debuginfo-tests/trunk/foreach.m
>> URL:
>> http://llvm.org/viewvc/llvm-project/debuginfo-tests/trunk/foreach.m?rev=318434&view=auto
>>
>> ==============================================================================
>> --- debuginfo-tests/trunk/foreach.m (original)
>> +++ debuginfo-tests/trunk/foreach.m (removed)
>> @@ -1,31 +0,0 @@
>> -// RUN: %clang %target_itanium_abi_host_triple -O0 -g %s -c -o %t.o
>> -// RUN: %clang %target_itanium_abi_host_triple %t.o -o %t.out -framework
>> Foundation
>> -// RUN: %test_debuginfo %s %t.out
>> -//
>> -// REQUIRES: system-darwin
>> -// Radar 8757124
>> -
>> -// DEBUGGER: break 25
>> -// DEBUGGER: r
>> -// DEBUGGER: po thing
>> -// CHECK: aaa
>> -
>> -#import <Foundation/Foundation.h>
>> -
>> -int main (int argc, const char * argv[]) {
>> -
>> -    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
>> -    NSArray *things = [NSArray arrayWithObjects:@"one", @"two",
>> @"three" , nil];
>> -    for (NSString *thing in things) {
>> -        NSLog (@"%@", thing);
>> -    }
>> -
>> -    things = [NSArray arrayWithObjects:@"aaa", @"bbb", @"ccc" , nil];
>> -    for (NSString *thing in things) {
>> -        NSLog (@"%@", thing);
>> -    }
>> -    [pool release];
>> -    return 0;
>> -}
>> -
>> -
>>
>> Removed: debuginfo-tests/trunk/forward-declare-class.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/debuginfo-tests/trunk/forward-declare-class.cpp?rev=318434&view=auto
>>
>> ==============================================================================
>> --- debuginfo-tests/trunk/forward-declare-class.cpp (original)
>> +++ debuginfo-tests/trunk/forward-declare-class.cpp (removed)
>> @@ -1,27 +0,0 @@
>> -// RUN: %clangxx %target_itanium_abi_host_triple -O0 -g %s -c -o %t.o
>> -// RUN: %test_debuginfo %s %t.o
>> -// Radar 9168773
>> -
>> -// DEBUGGER: ptype A
>> -// Work around a gdb bug where it believes that a class is a
>> -// struct if there aren't any methods - even though it's tagged
>> -// as a class.
>> -// CHECK: type = {{struct|class}} A {
>> -// CHECK-NEXT: {{(public:){0,1}}}
>> -// CHECK-NEXT: int MyData;
>> -// CHECK-NEXT: }
>> -class A;
>> -class B {
>> -public:
>> -  void foo(const A *p);
>> -};
>> -
>> -B iEntry;
>> -
>> -class A {
>> -public:
>> -  int MyData;
>> -};
>> -
>> -A irp;
>> -
>>
>> Added: debuginfo-tests/trunk/lit.cfg.py
>> URL:
>> http://llvm.org/viewvc/llvm-project/debuginfo-tests/trunk/lit.cfg.py?rev=318435&view=auto
>>
>> ==============================================================================
>> --- debuginfo-tests/trunk/lit.cfg.py (added)
>> +++ debuginfo-tests/trunk/lit.cfg.py Thu Nov 16 10:26:20 2017
>> @@ -0,0 +1,59 @@
>> +# -*- Python -*-
>> +
>> +import os
>> +import platform
>> +import re
>> +import subprocess
>> +import tempfile
>> +
>> +import lit.formats
>> +import lit.util
>> +
>> +from lit.llvm import llvm_config
>> +from lit.llvm.subst import ToolSubst
>> +from lit.llvm.subst import FindTool
>> +
>> +# Configuration file for the 'lit' test runner.
>> +
>> +# name: The name of this test suite.
>> +config.name = 'debuginfo-tests'
>> +
>> +# testFormat: The test format to use to interpret tests.
>> +#
>> +# For now we require '&&' between commands, until they get globally
>> killed and
>> +# the test runner updated.
>> +config.test_format = lit.formats.ShTest(not llvm_config.use_lit_shell)
>> +
>> +# suffixes: A list of file extensions to treat as test files.
>> +config.suffixes = ['.c', '.cpp', '.m']
>> +
>> +# excludes: A list of directories to exclude from the testsuite. The
>> 'Inputs'
>> +# subdirectories contain auxiliary inputs for various tests in their
>> parent
>> +# directories.
>> +config.excludes = ['Inputs']
>> +
>> +# test_source_root: The root path where tests are located.
>> +config.test_source_root = os.path.join(config.debuginfo_tests_src_root,
>> 'tests')
>> +
>> +# test_exec_root: The root path where tests should be run.
>> +config.test_exec_root = config.debuginfo_tests_obj_root
>> +
>> +llvm_config.use_default_substitutions()
>> +
>> +llvm_config.use_clang()
>> +
>> +if config.llvm_use_sanitizer:
>> +    # Propagate path to symbolizer for ASan/MSan.
>> +    llvm_config.with_system_environment(
>> +        ['ASAN_SYMBOLIZER_PATH', 'MSAN_SYMBOLIZER_PATH'])
>> +
>> +tool_dirs = [config.llvm_tools_dir]
>> +
>> +tools = [
>> +    ToolSubst('%test_debuginfo', command=os.path.join(
>> +        config.llvm_src_root, 'utils', 'test_debuginfo.pl')),
>> +]
>> +
>> +llvm_config.add_tool_substitutions(tools, tool_dirs)
>> +
>> +lit.util.usePlatformSdkOnDarwin(config, lit_config)
>>
>> Removed: debuginfo-tests/trunk/lit.local.cfg
>> URL:
>> http://llvm.org/viewvc/llvm-project/debuginfo-tests/trunk/lit.local.cfg?rev=318434&view=auto
>>
>> ==============================================================================
>> --- debuginfo-tests/trunk/lit.local.cfg (original)
>> +++ debuginfo-tests/trunk/lit.local.cfg (removed)
>> @@ -1,3 +0,0 @@
>> -# debuginfo-tests are not expected to pass in a cross-compilation setup.
>> -if 'native' not in config.available_features:
>> -    config.unsupported = True
>>
>> Added: debuginfo-tests/trunk/lit.site.cfg.py.in
>> URL:
>> http://llvm.org/viewvc/llvm-project/debuginfo-tests/trunk/lit.site.cfg.py.in?rev=318435&view=auto
>>
>> ==============================================================================
>> --- debuginfo-tests/trunk/lit.site.cfg.py.in (added)
>> +++ debuginfo-tests/trunk/lit.site.cfg.py.in Thu Nov 16 10:26:20 2017
>> @@ -0,0 +1,25 @@
>> + at LIT_SITE_CFG_IN_HEADER@
>> +
>> +import lit.util
>> +
>> +config.test_exec_root = "@CMAKE_BINARY_DIR@"
>> +
>> +config.llvm_src_root = "@LLVM_SOURCE_DIR@"
>> +config.llvm_obj_root = "@LLVM_BINARY_DIR@"
>> +config.llvm_tools_dir = "@LLVM_TOOLS_DIR@"
>> +config.llvm_libs_dir = "@LLVM_LIBS_DIR@"
>> +config.llvm_shlib_dir = "@SHLIBDIR@"
>> +config.llvm_plugin_ext = "@LLVM_PLUGIN_EXT@"
>> +config.debuginfo_tests_obj_root = "@DEBUGINFO_TESTS_BINARY_DIR@"
>> +config.debuginfo_tests_src_root = "@DEBUGINFO_TESTS_SOURCE_DIR@"
>> +config.has_lld = lit.util.pythonize_bool("@DEBUGINFO_TESTS_HAS_LLD@")
>> +config.host_triple = "@LLVM_HOST_TRIPLE@"
>> +config.target_triple = "@TARGET_TRIPLE@"
>> +config.host_arch = "@HOST_ARCH@"
>> +
>> +config.llvm_use_sanitizer = "@LLVM_USE_SANITIZER@"
>> +
>> + at LIT_SITE_CFG_IN_FOOTER@
>> +
>> +# Let the main config do the real work.
>> +lit_config.load_config(config, "@DEBUGINFO_TESTS_SOURCE_DIR@/lit.cfg.py
>> ")
>>
>> Removed: debuginfo-tests/trunk/llgdb.py
>> URL:
>> http://llvm.org/viewvc/llvm-project/debuginfo-tests/trunk/llgdb.py?rev=318434&view=auto
>>
>> ==============================================================================
>> --- debuginfo-tests/trunk/llgdb.py (original)
>> +++ debuginfo-tests/trunk/llgdb.py (removed)
>> @@ -1,157 +0,0 @@
>> -#!/bin/env python
>> -"""
>> -A gdb-compatible frontend for lldb that implements just enough
>> -commands to run the tests in the debuginfo-tests repository with lldb.
>> -"""
>> -
>> -# ----------------------------------------------------------------------
>> -# Auto-detect lldb python module.
>> -import commands, platform, os,  sys
>> -try:
>> -    # Just try for LLDB in case PYTHONPATH is already correctly setup.
>> -    import lldb
>> -except ImportError:
>> -    lldb_python_dirs = list()
>> -    # lldb is not in the PYTHONPATH, try some defaults for the current
>> platform.
>> -    platform_system = platform.system()
>> -    if platform_system == 'Darwin':
>> -        # On Darwin, try the currently selected Xcode directory
>> -        xcode_dir = commands.getoutput("xcode-select --print-path")
>> -        if xcode_dir:
>> -            lldb_python_dirs.append(os.path.realpath(xcode_dir +
>> -'/../SharedFrameworks/LLDB.framework/Resources/Python'))
>> -            lldb_python_dirs.append(xcode_dir +
>> -'/Library/PrivateFrameworks/LLDB.framework/Resources/Python')
>> -        lldb_python_dirs.append(
>> -'/System/Library/PrivateFrameworks/LLDB.framework/Resources/Python')
>> -    success = False
>> -    for lldb_python_dir in lldb_python_dirs:
>> -        if os.path.exists(lldb_python_dir):
>> -            if not (sys.path.__contains__(lldb_python_dir)):
>> -                sys.path.append(lldb_python_dir)
>> -                try:
>> -                    import lldb
>> -                except ImportError:
>> -                    pass
>> -                else:
>> -                    print 'imported lldb from: "%s"' % (lldb_python_dir)
>> -                    success = True
>> -                    break
>> -    if not success:
>> -        print "error: couldn't locate the 'lldb' module, please set
>> PYTHONPATH correctly"
>> -        sys.exit(1)
>> -# ----------------------------------------------------------------------
>> -
>> -# Command line option handling.
>> -import argparse
>> -parser = argparse.ArgumentParser(description=__doc__)
>> -parser.add_argument('--quiet', '-q', action="store_true", help='ignored')
>> -parser.add_argument('-batch', action="store_true",
>> -                    help='exit after processing comand line')
>> -parser.add_argument('-n', action="store_true", help='ignore .lldb file')
>> -parser.add_argument('-x', dest='script', type=file, help='execute
>> commands from file')
>> -parser.add_argument("target", help="the program to debug")
>> -args = parser.parse_args()
>> -
>> -
>> -# Create a new debugger instance.
>> -debugger = lldb.SBDebugger.Create()
>> -debugger.SkipLLDBInitFiles(args.n)
>> -
>> -# Don't return from lldb function calls until the process stops.
>> -debugger.SetAsync(False)
>> -
>> -# Create a target from a file and arch.
>> -arch = os.popen("file "+args.target).read().split()[-1]
>> -target = debugger.CreateTargetWithFileAndArch(args.target, arch)
>> -
>> -if not target:
>> -    print "Could not create target", args.target
>> -    sys.exit(1)
>> -
>> -if not args.script:
>> -    print "Interactive mode is not implemented."
>> -    sys.exit(1)
>> -
>> -import re
>> -for command in args.script:
>> -    # Strip newline and whitespaces and split into words.
>> -    cmd = command[:-1].strip().split()
>> -    if not cmd:
>> -        continue
>> -
>> -    print '> %s'% command[:-1]
>> -
>> -    try:
>> -        if re.match('^r|(run)$', cmd[0]):
>> -            error = lldb.SBError()
>> -            launchinfo = lldb.SBLaunchInfo([])
>> -            launchinfo.SetWorkingDirectory(os.getcwd())
>> -            process = target.Launch(launchinfo, error)
>> -            print error
>> -            if not process or error.fail:
>> -                state = process.GetState()
>> -                print "State = %d" % state
>> -                print """
>> -ERROR: Could not launch process.
>> -NOTE: There are several reasons why this may happen:
>> -  * Root needs to run "DevToolsSecurity --enable".
>> -  * Older versions of lldb cannot launch more than one process
>> simultaneously.
>> -"""
>> -                sys.exit(1)
>> -
>> -        elif re.match('^b|(break)$', cmd[0]) and len(cmd) == 2:
>> -            if re.match('[0-9]+', cmd[1]):
>> -                # b line
>> -                mainfile =
>> target.FindFunctions('main')[0].compile_unit.file
>> -                print target.BreakpointCreateByLocation(mainfile,
>> int(cmd[1]))
>> -            else:
>> -                # b file:line
>> -                file, line = cmd[1].split(':')
>> -                print target.BreakpointCreateByLocation(file, int(line))
>> -
>> -        elif re.match('^ptype$', cmd[0]) and len(cmd) == 2:
>> -            # GDB's ptype has multiple incarnations depending on its
>> -            # argument (global variable, function, type).  The definition
>> -            # here is for looking up the signature of a function and only
>> -            # if that fails it looks for a type with that name.
>> -            # Type lookup in LLDB would be "image lookup --type".
>> -            for elem in target.FindFunctions(cmd[1]):
>> -                print elem.function.type
>> -                continue
>> -            print target.FindFirstType(cmd[1])
>> -
>> -        elif re.match('^po$', cmd[0]) and len(cmd) > 1:
>> -            try:
>> -                opts = lldb.SBExpressionOptions()
>> -                opts.SetFetchDynamicValue(True)
>> -                opts.SetCoerceResultToId(True)
>> -                print target.EvaluateExpression(' '.join(cmd[1:]), opts)
>> -            except:
>> -                # FIXME: This is a fallback path for the lab.llvm.org
>> -                # buildbot running OS X 10.7; it should be removed.
>> -                thread = process.GetThreadAtIndex(0)
>> -                frame = thread.GetFrameAtIndex(0)
>> -                print frame.EvaluateExpression(' '.join(cmd[1:]))
>> -
>> -        elif re.match('^p|(print)$', cmd[0]) and len(cmd) > 1:
>> -            thread = process.GetThreadAtIndex(0)
>> -            frame = thread.GetFrameAtIndex(0)
>> -            print frame.EvaluateExpression(' '.join(cmd[1:]))
>> -
>> -        elif re.match('^n|(next)$', cmd[0]):
>> -            thread = process.GetThreadAtIndex(0)
>> -            thread.StepOver()
>> -
>> -        elif re.match('^q|(quit)$', cmd[0]):
>> -            sys.exit(0)
>> -
>> -        else:
>> -            print debugger.HandleCommand(' '.join(cmd))
>> -
>> -    except SystemExit:
>> -        lldb.SBDebugger_Terminate()
>> -        raise
>> -    except:
>> -        print 'Could not handle the command "%s"' % ' '.join(cmd)
>> -
>>
>> Removed: debuginfo-tests/trunk/nested-struct.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/debuginfo-tests/trunk/nested-struct.cpp?rev=318434&view=auto
>>
>> ==============================================================================
>> --- debuginfo-tests/trunk/nested-struct.cpp (original)
>> +++ debuginfo-tests/trunk/nested-struct.cpp (removed)
>> @@ -1,21 +0,0 @@
>> -// RUN: %clangxx %target_itanium_abi_host_triple -O0 -g %s -c -o %t.o
>> -// RUN: %test_debuginfo %s %t.o
>> -// Radar 9440721
>> -// If debug info for my_number() is emitted outside function foo's scope
>> -// then a debugger may not be able to handle it. At least one version of
>> -// gdb crashes in such cases.
>> -
>> -// DEBUGGER: ptype foo
>> -// CHECK: int (void)
>> -
>> -int foo() {
>> -  struct Local {
>> -    static int my_number() {
>> -      return 42;
>> -    }
>> -  };
>> -
>> -  int i = 0;
>> -  i = Local::my_number();
>> -  return i + 1;
>> -}
>>
>> Removed: debuginfo-tests/trunk/nrvo-string.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/debuginfo-tests/trunk/nrvo-string.cpp?rev=318434&view=auto
>>
>> ==============================================================================
>> --- debuginfo-tests/trunk/nrvo-string.cpp (original)
>> +++ debuginfo-tests/trunk/nrvo-string.cpp (removed)
>> @@ -1,27 +0,0 @@
>> -// This ensures that DW_OP_deref is inserted when necessary, such as
>> when NRVO
>> -// of a string object occurs in C++.
>> -//
>> -// RUN: %clangxx -O0 -fno-exceptions %target_itanium_abi_host_triple %s
>> -o %t.out -g
>> -// RUN: %test_debuginfo %s %t.out
>> -// RUN: %clangxx -O1 -fno-exceptions %target_itanium_abi_host_triple %s
>> -o %t.out -g
>> -// RUN: %test_debuginfo %s %t.out
>> -//
>> -// PR34513
>> -
>> -struct string {
>> -  string() {}
>> -  string(int i) : i(i) {}
>> -  ~string() {}
>> -  int i = 0;
>> -};
>> -string get_string() {
>> -  string unused;
>> -  string result = 3;
>> -// DEBUGGER: break 21
>> -  return result;
>> -}
>> -int main() { get_string(); }
>> -
>> -// DEBUGGER: r
>> -// DEBUGGER: print result.i
>> -// CHECK:  = 3
>>
>> Removed: debuginfo-tests/trunk/safestack.c
>> URL:
>> http://llvm.org/viewvc/llvm-project/debuginfo-tests/trunk/safestack.c?rev=318434&view=auto
>>
>> ==============================================================================
>> --- debuginfo-tests/trunk/safestack.c (original)
>> +++ debuginfo-tests/trunk/safestack.c (removed)
>> @@ -1,51 +0,0 @@
>> -// RUN: %clang %target_itanium_abi_host_triple -arch x86_64 %s -o %t.out
>> -g -fsanitize=safe-stack
>> -// RUN: %test_debuginfo %s %t.out
>> -// REQUIRES: not_asan
>> -//           Zorg configures the ASAN stage2 bots to not build the
>> -//           safestack compiler-rt.  Only run this test on
>> -//           non-asanified configurations.
>> -
>> -struct S {
>> -  int a[8];
>> -};
>> -
>> -int f(struct S s, unsigned i);
>> -
>> -int main(int argc, const char **argv) {
>> -  struct S s = {{0, 1, 2, 3, 4, 5, 6, 7}};
>> -  // DEBUGGER: break 17
>> -  f(s, 4);
>> -  // DEBUGGER: break 19
>> -  return 0;
>> -}
>> -
>> -int f(struct S s, unsigned i) {
>> -  // DEBUGGER: break 24
>> -  return s.a[i];
>> -}
>> -
>> -// DEBUGGER: r
>> -// DEBUGGER: p s
>> -// CHECK: a =
>> -// DEBUGGER: p s.a[0]
>> -// CHECK: = 0
>> -// DEBUGGER: p s.a[1]
>> -// CHECK: = 1
>> -// DEBUGGER: p s.a[7]
>> -// CHECK: = 7
>> -// DEBUGGER: c
>> -// DEBUGGER: p s
>> -// CHECK: a =
>> -// DEBUGGER: p s.a[0]
>> -// CHECK: = 0
>> -// DEBUGGER: p s.a[1]
>> -// CHECK: = 1
>> -// DEBUGGER: p s.a[7]
>> -// DEBUGGER: c
>> -// DEBUGGER: p s
>> -// CHECK: a =
>> -// DEBUGGER: p s.a[0]
>> -// CHECK: = 0
>> -// DEBUGGER: p s.a[1]
>> -// CHECK: = 1
>> -// DEBUGGER: p s.a[7]
>>
>> Removed: debuginfo-tests/trunk/sret.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/debuginfo-tests/trunk/sret.cpp?rev=318434&view=auto
>>
>> ==============================================================================
>> --- debuginfo-tests/trunk/sret.cpp (original)
>> +++ debuginfo-tests/trunk/sret.cpp (removed)
>> @@ -1,71 +0,0 @@
>> -// RUN: %clangxx %target_itanium_abi_host_triple -O0 -g %s -c -o %t.o
>> -// RUN: %clangxx %target_itanium_abi_host_triple %t.o -o %t.out
>> -// RUN: %test_debuginfo %s %t.out
>> -// Radar 8775834
>> -// DEBUGGER: break 62
>> -// DEBUGGER: r
>> -// DEBUGGER: p a
>> -// CHECK: ${{[0-9]+}} =
>> -// LLDB does not print artificial members.
>> -// CHECK:  {{(_vptr\$A =)?.*}}m_int = 12
>> -
>> -class A
>> -{
>> -public:
>> -    A (int i=0);
>> -    A (const A& rhs);
>> -    const A&
>> -    operator= (const A& rhs);
>> -    virtual ~A() {}
>> -
>> -    int get_int();
>> -
>> -protected:
>> -    int m_int;
>> -};
>> -
>> -A::A (int i) :
>> -    m_int(i)
>> -{
>> -}
>> -
>> -A::A (const A& rhs) :
>> -    m_int (rhs.m_int)
>> -{
>> -}
>> -
>> -const A &
>> -A::operator =(const A& rhs)
>> -{
>> -    m_int = rhs.m_int;
>> -    return *this;
>> -}
>> -
>> -int A::get_int()
>> -{
>> -    return m_int;
>> -}
>> -
>> -class B
>> -{
>> -public:
>> -    B () {}
>> -
>> -    A AInstance();
>> -};
>> -
>> -A
>> -B::AInstance()
>> -{
>> -    A a(12);
>> -    return a;
>> -}
>> -
>> -int main (int argc, char const *argv[])
>> -{
>> -    B b;
>> -    int return_val = b.AInstance().get_int();
>> -
>> -    A a(b.AInstance());
>> -    return return_val;
>> -}
>>
>> Removed: debuginfo-tests/trunk/stack-var.c
>> URL:
>> http://llvm.org/viewvc/llvm-project/debuginfo-tests/trunk/stack-var.c?rev=318434&view=auto
>>
>> ==============================================================================
>> --- debuginfo-tests/trunk/stack-var.c (original)
>> +++ debuginfo-tests/trunk/stack-var.c (removed)
>> @@ -1,18 +0,0 @@
>> -// RUN: %clang %target_itanium_abi_host_triple %s -O -o %t.out -g
>> -// RUN: %test_debuginfo %s %t.out
>> -
>> -void __attribute__((noinline, optnone)) bar(int *test) {}
>> -int main() {
>> -  int test;
>> -  test = 23;
>> -  // DEBUGGER: break 12
>> -  // DEBUGGER: r
>> -  // DEBUGGER: p test
>> -  // CHECK: = 23
>> -  bar(&test);
>> -  // DEBUGGER: break 17
>> -  // DEBUGGER: c
>> -  // DEBUGGER: p test
>> -  // CHECK: = 23
>> -  return test;
>> -}
>>
>> Removed: debuginfo-tests/trunk/static-member-2.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/debuginfo-tests/trunk/static-member-2.cpp?rev=318434&view=auto
>>
>> ==============================================================================
>> --- debuginfo-tests/trunk/static-member-2.cpp (original)
>> +++ debuginfo-tests/trunk/static-member-2.cpp (removed)
>> @@ -1,39 +0,0 @@
>> -// RUN: %clangxx %target_itanium_abi_host_triple -O0 -g %s -o %t -c
>> -// RUN: %clangxx %target_itanium_abi_host_triple %t -o %t.out
>> -// RUN: %test_debuginfo %s %t.out
>> -
>> -// FIXME: LLDB finds the wrong symbol for "C". rdar://problem/14933867
>> -// XFAIL: darwin
>> -
>> -// DEBUGGER: delete breakpoints
>> -// DEBUGGER: break static-member.cpp:33
>> -// DEBUGGER: r
>> -// DEBUGGER: ptype C
>> -// CHECK:      {{struct|class}} C {
>> -// CHECK:      static const int a;
>> -// CHECK-NEXT: static int b;
>> -// CHECK-NEXT: static int c;
>> -// CHECK-NEXT: int d;
>> -// CHECK-NEXT: }
>> -// DEBUGGER: p C::a
>> -// CHECK: ${{[0-9]}} = 4
>> -// DEBUGGER: p C::c
>> -// CHECK: ${{[0-9]}} = 15
>> -
>> -// PR14471, PR14734
>> -
>> -class C {
>> -public:
>> -  const static int a = 4;
>> -  static int b;
>> -  static int c;
>> -  int d;
>> -};
>> -
>> -int C::c = 15;
>> -const int C::a;
>> -
>> -int main() {
>> -    C instance_C;
>> -    return C::a;
>> -}
>>
>> Removed: debuginfo-tests/trunk/static-member.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/debuginfo-tests/trunk/static-member.cpp?rev=318434&view=auto
>>
>> ==============================================================================
>> --- debuginfo-tests/trunk/static-member.cpp (original)
>> +++ debuginfo-tests/trunk/static-member.cpp (removed)
>> @@ -1,36 +0,0 @@
>> -// RUN: %clangxx %target_itanium_abi_host_triple -O0 -g %s -o %t -c
>> -// RUN: %clangxx %target_itanium_abi_host_triple %t -o %t.out
>> -// RUN: %test_debuginfo %s %t.out
>> -
>> -// DEBUGGER: delete breakpoints
>> -// DEBUGGER: break static-member.cpp:33
>> -// DEBUGGER: r
>> -// DEBUGGER: ptype MyClass
>> -// CHECK:      {{struct|class}} MyClass {
>> -// CHECK:      static const int a;
>> -// CHECK-NEXT: static int b;
>> -// CHECK-NEXT: static int c;
>> -// CHECK-NEXT: int d;
>> -// CHECK-NEXT: }
>> -// DEBUGGER: p MyClass::a
>> -// CHECK: ${{[0-9]}} = 4
>> -// DEBUGGER: p MyClass::c
>> -// CHECK: ${{[0-9]}} = 15
>> -
>> -// PR14471, PR14734
>> -
>> -class MyClass {
>> -public:
>> -  const static int a = 4;
>> -  static int b;
>> -  static int c;
>> -  int d;
>> -};
>> -
>> -int MyClass::c = 15;
>> -const int MyClass::a;
>> -
>> -int main() {
>> -    MyClass instance_MyClass;
>> -    return MyClass::a;
>> -}
>>
>> Added: debuginfo-tests/trunk/tests/aggregate-indirect-arg.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/debuginfo-tests/trunk/tests/aggregate-indirect-arg.cpp?rev=318435&view=auto
>>
>> ==============================================================================
>> --- debuginfo-tests/trunk/tests/aggregate-indirect-arg.cpp (added)
>> +++ debuginfo-tests/trunk/tests/aggregate-indirect-arg.cpp Thu Nov 16
>> 10:26:20 2017
>> @@ -0,0 +1,32 @@
>> +// RUN: %clangxx %target_itanium_abi_host_triple -O0 -g %s -c -o %t.o
>> +// RUN: %clangxx %target_itanium_abi_host_triple %t.o -o %t.out
>> +// RUN: %test_debuginfo %s %t.out
>> +// Radar 8945514
>> +// DEBUGGER: break 22
>> +// DEBUGGER: r
>> +// DEBUGGER: p v
>> +// CHECK: ${{[0-9]+}} =
>> +// CHECK:  Data ={{.*}} 0x0{{(0*)}}
>> +// CHECK:  Kind = 2142
>> +
>> +class SVal {
>> +public:
>> +  ~SVal() {}
>> +  const void* Data;
>> +  unsigned Kind;
>> +};
>> +
>> +void bar(SVal &v) {}
>> +class A {
>> +public:
>> +  void foo(SVal v) { bar(v); }
>> +};
>> +
>> +int main() {
>> +  SVal v;
>> +  v.Data = 0;
>> +  v.Kind = 2142;
>> +  A a;
>> +  a.foo(v);
>> +  return 0;
>> +}
>>
>> Added: debuginfo-tests/trunk/tests/asan-blocks.c
>> URL:
>> http://llvm.org/viewvc/llvm-project/debuginfo-tests/trunk/tests/asan-blocks.c?rev=318435&view=auto
>>
>> ==============================================================================
>> --- debuginfo-tests/trunk/tests/asan-blocks.c (added)
>> +++ debuginfo-tests/trunk/tests/asan-blocks.c Thu Nov 16 10:26:20 2017
>> @@ -0,0 +1,41 @@
>> +// RUN: %clang -fblocks %target_itanium_abi_host_triple -arch x86_64 %s
>> -o %t.out -g -fsanitize=address
>> +// RUN: %test_debuginfo %s %t.out
>> +// FIXME: Remove system-darwin when we build BlocksRuntime everywhere.
>> +// REQUIRES: not_asan, system-darwin
>> +//           Zorg configures the ASAN stage2 bots to not build the asan
>> +//           compiler-rt. Only run this test on non-asanified
>> configurations.
>> +void b();
>> +struct S {
>> +  int a[8];
>> +};
>> +
>> +int f(struct S s, unsigned i) {
>> +  // DEBUGGER: break 17
>> +  // DEBUGGER: r
>> +  // DEBUGGER: p s
>> +  // CHECK: a = ([0] = 0, [1] = 1, [2] = 2, [3] = 3, [4] = 4, [5] = 5,
>> [6] = 6, [7] = 7)
>> +  return s.a[i];
>> +}
>> +
>> +int main(int argc, const char **argv) {
>> +  struct S s = {{0, 1, 2, 3, 4, 5, 6, 7}};
>> +  if (f(s, 4) == 4) {
>> +    // DEBUGGER: break 27
>> +    // DEBUGGER: c
>> +    // DEBUGGER: p s
>> +    // CHECK: a = ([0] = 0, [1] = 1, [2] = 2, [3] = 3, [4] = 4, [5] = 5,
>> [6] = 6, [7] = 7)
>> +    b();
>> +  }
>> +  return 0;
>> +}
>> +
>> +void c() {}
>> +
>> +void b() {
>> +  // DEBUGGER: break 40
>> +  // DEBUGGER: c
>> +  // DEBUGGER: p x
>> +  // CHECK: 42
>> +  __block int x = 42;
>> +  c();
>> +}
>>
>> Added: debuginfo-tests/trunk/tests/asan.c
>> URL:
>> http://llvm.org/viewvc/llvm-project/debuginfo-tests/trunk/tests/asan.c?rev=318435&view=auto
>>
>> ==============================================================================
>> --- debuginfo-tests/trunk/tests/asan.c (added)
>> +++ debuginfo-tests/trunk/tests/asan.c Thu Nov 16 10:26:20 2017
>> @@ -0,0 +1,31 @@
>> +// RUN: %clang -fblocks %target_itanium_abi_host_triple -arch x86_64 %s
>> -o %t.out -g -fsanitize=address
>> +// RUN: %test_debuginfo %s %t.out
>> +// REQUIRES: not_asan
>> +//           Zorg configures the ASAN stage2 bots to not build the asan
>> +//           compiler-rt. Only run this test on non-asanified
>> configurations.
>> +//
>> +
>> +struct S {
>> +  int a[8];
>> +};
>> +
>> +int f(struct S s, unsigned i) {
>> +  // DEBUGGER: break 14
>> +  return s.a[i];
>> +}
>> +
>> +int main(int argc, const char **argv) {
>> +  struct S s = {{0, 1, 2, 3, 4, 5, 6, 7}};
>> +  if (f(s, 4) == 4)
>> +    return f(s, 0);
>> +  return 0;
>> +}
>> +
>> +// DEBUGGER: r
>> +// DEBUGGER: p s
>> +// CHECK: a =
>> +// DEBUGGER: p s.a[0]
>> +// CHECK: = 0
>> +// DEBUGGER: p s.a[1]
>> +// CHECK: = 1
>> +// DEBUGGER: p s.a[7]
>>
>> Added: debuginfo-tests/trunk/tests/block_var.m
>> URL:
>> http://llvm.org/viewvc/llvm-project/debuginfo-tests/trunk/tests/block_var.m?rev=318435&view=auto
>>
>> ==============================================================================
>> --- debuginfo-tests/trunk/tests/block_var.m (added)
>> +++ debuginfo-tests/trunk/tests/block_var.m Thu Nov 16 10:26:20 2017
>> @@ -0,0 +1,32 @@
>> +// RUN: %clang %target_itanium_abi_host_triple -O0 -g %s -c -o %t.o
>> +// RUN: %clang %target_itanium_abi_host_triple %t.o -o %t.out -framework
>> Foundation
>> +// RUN: %test_debuginfo %s %t.out
>> +
>> +// REQUIRES: system-darwin
>> +
>> +// DEBUGGER: break 24
>> +// DEBUGGER: r
>> +// DEBUGGER: p result
>> +// CHECK: ${{[0-9]}} = 42
>> +
>> +void doBlock(void (^block)(void))
>> +{
>> +    block();
>> +}
>> +
>> +int I(int n)
>> +{
>> +    __block int result;
>> +    int i = 2;
>> +    doBlock(^{
>> +        result = n;
>> +    });
>> +    return result + i; /* Check value of 'result' */
>> +}
>> +
>> +
>> +int main (int argc, const char * argv[]) {
>> +  return I(42);
>> +}
>> +
>> +
>>
>> Added: debuginfo-tests/trunk/tests/blocks.m
>> URL:
>> http://llvm.org/viewvc/llvm-project/debuginfo-tests/trunk/tests/blocks.m?rev=318435&view=auto
>>
>> ==============================================================================
>> --- debuginfo-tests/trunk/tests/blocks.m (added)
>> +++ debuginfo-tests/trunk/tests/blocks.m Thu Nov 16 10:26:20 2017
>> @@ -0,0 +1,43 @@
>> +// RUN: %clang %target_itanium_abi_host_triple -O0 -g %s -c -o %t.o
>> +// RUN: %clang %target_itanium_abi_host_triple %t.o -o %t.out -framework
>> Foundation
>> +// RUN: %test_debuginfo %s %t.out
>> +
>> +// REQUIRES: system-darwin
>> +// Radar 9279956
>> +
>> +// DEBUGGER: break 31
>> +// DEBUGGER: r
>> +// DEBUGGER: p m2
>> +// CHECK: ${{[0-9]}} = 1
>> +// DEBUGGER: p dbTransaction
>> +// CHECK: ${{[0-9]}} = 0
>> +// DEBUGGER: p master
>> +// CHECK: ${{[0-9]}} = 0
>> +
>> +#include <Cocoa/Cocoa.h>
>> +
>> +extern void foo(void(^)(void));
>> +
>> + at interface A:NSObject @end
>> + at implementation A
>> +- (void) helper {
>> + int master = 0;
>> + __block int m2 = 0;
>> + __block int dbTransaction = 0;
>> + int (^x)(void) = ^(void) { (void) self;
>> + (void) master;
>> + (void) dbTransaction;
>> + m2++;
>> + return m2;
>> + };
>> +  master = x();
>> +}
>> + at end
>> +
>> +void foo(void(^x)(void)) {}
>> +
>> +int main() {
>> + A *a = [A alloc];
>> + [a helper];
>> + return 0;
>> +}
>>
>> Added: debuginfo-tests/trunk/tests/ctor.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/debuginfo-tests/trunk/tests/ctor.cpp?rev=318435&view=auto
>>
>> ==============================================================================
>> --- debuginfo-tests/trunk/tests/ctor.cpp (added)
>> +++ debuginfo-tests/trunk/tests/ctor.cpp Thu Nov 16 10:26:20 2017
>> @@ -0,0 +1,25 @@
>> +// RUN: %clangxx %target_itanium_abi_host_triple -O0 -g %s -c -o %t.o
>> +// RUN: %clangxx %target_itanium_abi_host_triple %t.o -o %t.out
>> +// RUN: %test_debuginfo %s %t.out
>> +
>> +
>> +// DEBUGGER: break 14
>> +// DEBUGGER: r
>> +// DEBUGGER: p *this
>> +// CHECK-NEXT-NOT: Cannot access memory at address
>> +
>> +class A {
>> +public:
>> + A() : zero(0), data(42)
>> + {
>> + }
>> +private:
>> + int zero;
>> + int data;
>> +};
>> +
>> +int main() {
>> + A a;
>> + return 0;
>> +}
>> +
>>
>> Added: debuginfo-tests/trunk/tests/dbg-arg.c
>> URL:
>> http://llvm.org/viewvc/llvm-project/debuginfo-tests/trunk/tests/dbg-arg.c?rev=318435&view=auto
>>
>> ==============================================================================
>> --- debuginfo-tests/trunk/tests/dbg-arg.c (added)
>> +++ debuginfo-tests/trunk/tests/dbg-arg.c Thu Nov 16 10:26:20 2017
>> @@ -0,0 +1,46 @@
>> +// This test case checks debug info during register moves for an
>> argument.
>> +// RUN: %clang %target_itanium_abi_host_triple -m64 -mllvm
>> -fast-isel=false  %s -c -o %t.o -g
>> +// RUN: %clang %target_itanium_abi_host_triple -m64 %t.o -o %t.out
>> +// RUN: %test_debuginfo %s %t.out
>> +//
>> +// DEBUGGER: break 26
>> +// DEBUGGER: r
>> +// DEBUGGER: print mutex
>> +// CHECK:  ={{.* 0x[0-9A-Fa-f]+}}
>> +//
>> +// Radar 8412415
>> +
>> +struct _mtx
>> +{
>> +  long unsigned int ptr;
>> +  int waiters;
>> +  struct {
>> +    int tag;
>> +    int pad;
>> +  } mtxi;
>> +};
>> +
>> +
>> +int foobar(struct _mtx *mutex) {
>> +  int r = 1;
>> +  int l = 0;
>> +  int j = 0;
>> +  do {
>> +    if (mutex->waiters) {
>> +      r = 2;
>> +    }
>> +    j = bar(r, l);
>> +    ++l;
>> +  } while (l < j);
>> +  return r + j;
>> +}
>> +
>> +int bar(int i, int j) {
>> +  return i + j;
>> +}
>> +
>> +int main() {
>> +  struct _mtx m;
>> +  m.waiters = 0;
>> +  return foobar(&m);
>> +}
>>
>> Added: debuginfo-tests/trunk/tests/foreach.m
>> URL:
>> http://llvm.org/viewvc/llvm-project/debuginfo-tests/trunk/tests/foreach.m?rev=318435&view=auto
>>
>> ==============================================================================
>> --- debuginfo-tests/trunk/tests/foreach.m (added)
>> +++ debuginfo-tests/trunk/tests/foreach.m Thu Nov 16 10:26:20 2017
>> @@ -0,0 +1,31 @@
>> +// RUN: %clang %target_itanium_abi_host_triple -O0 -g %s -c -o %t.o
>> +// RUN: %clang %target_itanium_abi_host_triple %t.o -o %t.out -framework
>> Foundation
>> +// RUN: %test_debuginfo %s %t.out
>> +//
>> +// REQUIRES: system-darwin
>> +// Radar 8757124
>> +
>> +// DEBUGGER: break 25
>> +// DEBUGGER: r
>> +// DEBUGGER: po thing
>> +// CHECK: aaa
>> +
>> +#import <Foundation/Foundation.h>
>> +
>> +int main (int argc, const char * argv[]) {
>> +
>> +    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
>> +    NSArray *things = [NSArray arrayWithObjects:@"one", @"two",
>> @"three" , nil];
>> +    for (NSString *thing in things) {
>> +        NSLog (@"%@", thing);
>> +    }
>> +
>> +    things = [NSArray arrayWithObjects:@"aaa", @"bbb", @"ccc" , nil];
>> +    for (NSString *thing in things) {
>> +        NSLog (@"%@", thing);
>> +    }
>> +    [pool release];
>> +    return 0;
>> +}
>> +
>> +
>>
>> Added: debuginfo-tests/trunk/tests/forward-declare-class.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/debuginfo-tests/trunk/tests/forward-declare-class.cpp?rev=318435&view=auto
>>
>> ==============================================================================
>> --- debuginfo-tests/trunk/tests/forward-declare-class.cpp (added)
>> +++ debuginfo-tests/trunk/tests/forward-declare-class.cpp Thu Nov 16
>> 10:26:20 2017
>> @@ -0,0 +1,27 @@
>> +// RUN: %clangxx %target_itanium_abi_host_triple -O0 -g %s -c -o %t.o
>> +// RUN: %test_debuginfo %s %t.o
>> +// Radar 9168773
>> +
>> +// DEBUGGER: ptype A
>> +// Work around a gdb bug where it believes that a class is a
>> +// struct if there aren't any methods - even though it's tagged
>> +// as a class.
>> +// CHECK: type = {{struct|class}} A {
>> +// CHECK-NEXT: {{(public:){0,1}}}
>> +// CHECK-NEXT: int MyData;
>> +// CHECK-NEXT: }
>> +class A;
>> +class B {
>> +public:
>> +  void foo(const A *p);
>> +};
>> +
>> +B iEntry;
>> +
>> +class A {
>> +public:
>> +  int MyData;
>> +};
>> +
>> +A irp;
>> +
>>
>> Added: debuginfo-tests/trunk/tests/lit.local.cfg
>> URL:
>> http://llvm.org/viewvc/llvm-project/debuginfo-tests/trunk/tests/lit.local.cfg?rev=318435&view=auto
>>
>> ==============================================================================
>> --- debuginfo-tests/trunk/tests/lit.local.cfg (added)
>> +++ debuginfo-tests/trunk/tests/lit.local.cfg Thu Nov 16 10:26:20 2017
>> @@ -0,0 +1,3 @@
>> +# debuginfo-tests are not expected to pass in a cross-compilation setup.
>> +if 'native' not in config.available_features:
>> +    config.unsupported = True
>>
>> Added: debuginfo-tests/trunk/tests/llgdb.py
>> URL:
>> http://llvm.org/viewvc/llvm-project/debuginfo-tests/trunk/tests/llgdb.py?rev=318435&view=auto
>>
>> ==============================================================================
>> --- debuginfo-tests/trunk/tests/llgdb.py (added)
>> +++ debuginfo-tests/trunk/tests/llgdb.py Thu Nov 16 10:26:20 2017
>> @@ -0,0 +1,157 @@
>> +#!/bin/env python
>> +"""
>> +A gdb-compatible frontend for lldb that implements just enough
>> +commands to run the tests in the debuginfo-tests repository with lldb.
>> +"""
>> +
>> +# ----------------------------------------------------------------------
>> +# Auto-detect lldb python module.
>> +import commands, platform, os,  sys
>> +try:
>> +    # Just try for LLDB in case PYTHONPATH is already correctly setup.
>> +    import lldb
>> +except ImportError:
>> +    lldb_python_dirs = list()
>> +    # lldb is not in the PYTHONPATH, try some defaults for the current
>> platform.
>> +    platform_system = platform.system()
>> +    if platform_system == 'Darwin':
>> +        # On Darwin, try the currently selected Xcode directory
>> +        xcode_dir = commands.getoutput("xcode-select --print-path")
>> +        if xcode_dir:
>> +            lldb_python_dirs.append(os.path.realpath(xcode_dir +
>> +'/../SharedFrameworks/LLDB.framework/Resources/Python'))
>> +            lldb_python_dirs.append(xcode_dir +
>> +'/Library/PrivateFrameworks/LLDB.framework/Resources/Python')
>> +        lldb_python_dirs.append(
>> +'/System/Library/PrivateFrameworks/LLDB.framework/Resources/Python')
>> +    success = False
>> +    for lldb_python_dir in lldb_python_dirs:
>> +        if os.path.exists(lldb_python_dir):
>> +            if not (sys.path.__contains__(lldb_python_dir)):
>> +                sys.path.append(lldb_python_dir)
>> +                try:
>> +                    import lldb
>> +                except ImportError:
>> +                    pass
>> +                else:
>> +                    print 'imported lldb from: "%s"' % (lldb_python_dir)
>> +                    success = True
>> +                    break
>> +    if not success:
>> +        print "error: couldn't locate the 'lldb' module, please set
>> PYTHONPATH correctly"
>> +        sys.exit(1)
>> +# ----------------------------------------------------------------------
>> +
>> +# Command line option handling.
>> +import argparse
>> +parser = argparse.ArgumentParser(description=__doc__)
>> +parser.add_argument('--quiet', '-q', action="store_true", help='ignored')
>> +parser.add_argument('-batch', action="store_true",
>> +                    help='exit after processing comand line')
>> +parser.add_argument('-n', action="store_true", help='ignore .lldb file')
>> +parser.add_argument('-x', dest='script', type=file, help='execute
>> commands from file')
>> +parser.add_argument("target", help="the program to debug")
>> +args = parser.parse_args()
>> +
>> +
>> +# Create a new debugger instance.
>> +debugger = lldb.SBDebugger.Create()
>> +debugger.SkipLLDBInitFiles(args.n)
>> +
>> +# Don't return from lldb function calls until the process stops.
>> +debugger.SetAsync(False)
>> +
>> +# Create a target from a file and arch.
>> +arch = os.popen("file "+args.target).read().split()[-1]
>> +target = debugger.CreateTargetWithFileAndArch(args.target, arch)
>> +
>> +if not target:
>> +    print "Could not create target", args.target
>> +    sys.exit(1)
>> +
>> +if not args.script:
>> +    print "Interactive mode is not implemented."
>> +    sys.exit(1)
>> +
>> +import re
>> +for command in args.script:
>> +    # Strip newline and whitespaces and split into words.
>> +    cmd = command[:-1].strip().split()
>> +    if not cmd:
>> +        continue
>> +
>> +    print '> %s'% command[:-1]
>> +
>> +    try:
>> +        if re.match('^r|(run)$', cmd[0]):
>> +            error = lldb.SBError()
>> +            launchinfo = lldb.SBLaunchInfo([])
>> +            launchinfo.SetWorkingDirectory(os.getcwd())
>> +            process = target.Launch(launchinfo, error)
>> +            print error
>> +            if not process or error.fail:
>> +                state = process.GetState()
>> +                print "State = %d" % state
>> +                print """
>> +ERROR: Could not launch process.
>> +NOTE: There are several reasons why this may happen:
>> +  * Root needs to run "DevToolsSecurity --enable".
>> +  * Older versions of lldb cannot launch more than one process
>> simultaneously.
>> +"""
>> +                sys.exit(1)
>> +
>> +        elif re.match('^b|(break)$', cmd[0]) and len(cmd) == 2:
>> +            if re.match('[0-9]+', cmd[1]):
>> +                # b line
>> +                mainfile =
>> target.FindFunctions('main')[0].compile_unit.file
>> +                print target.BreakpointCreateByLocation(mainfile,
>> int(cmd[1]))
>> +            else:
>> +                # b file:line
>> +                file, line = cmd[1].split(':')
>> +                print target.BreakpointCreateByLocation(file, int(line))
>> +
>> +        elif re.match('^ptype$', cmd[0]) and len(cmd) == 2:
>> +            # GDB's ptype has multiple incarnations depending on its
>> +            # argument (global variable, function, type).  The definition
>> +            # here is for looking up the signature of a function and only
>> +            # if that fails it looks for a type with that name.
>> +            # Type lookup in LLDB would be "image lookup --type".
>> +            for elem in target.FindFunctions(cmd[1]):
>> +                print elem.function.type
>> +                continue
>> +            print target.FindFirstType(cmd[1])
>> +
>> +        elif re.match('^po$', cmd[0]) and len(cmd) > 1:
>> +            try:
>> +                opts = lldb.SBExpressionOptions()
>> +                opts.SetFetchDynamicValue(True)
>> +                opts.SetCoerceResultToId(True)
>> +                print target.EvaluateExpression(' '.join(cmd[1:]), opts)
>> +            except:
>> +                # FIXME: This is a fallback path for the lab.llvm.org
>> +                # buildbot running OS X 10.7; it should be removed.
>> +                thread = process.GetThreadAtIndex(0)
>> +                frame = thread.GetFrameAtIndex(0)
>> +                print frame.EvaluateExpression(' '.join(cmd[1:]))
>> +
>> +        elif re.match('^p|(print)$', cmd[0]) and len(cmd) > 1:
>> +            thread = process.GetThreadAtIndex(0)
>> +            frame = thread.GetFrameAtIndex(0)
>> +            print frame.EvaluateExpression(' '.join(cmd[1:]))
>> +
>> +        elif re.match('^n|(next)$', cmd[0]):
>> +            thread = process.GetThreadAtIndex(0)
>> +            thread.StepOver()
>> +
>> +        elif re.match('^q|(quit)$', cmd[0]):
>> +            sys.exit(0)
>> +
>> +        else:
>> +            print debugger.HandleCommand(' '.join(cmd))
>> +
>> +    except SystemExit:
>> +        lldb.SBDebugger_Terminate()
>> +        raise
>> +    except:
>> +        print 'Could not handle the command "%s"' % ' '.join(cmd)
>> +
>>
>> Added: debuginfo-tests/trunk/tests/nested-struct.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/debuginfo-tests/trunk/tests/nested-struct.cpp?rev=318435&view=auto
>>
>> ==============================================================================
>> --- debuginfo-tests/trunk/tests/nested-struct.cpp (added)
>> +++ debuginfo-tests/trunk/tests/nested-struct.cpp Thu Nov 16 10:26:20 2017
>> @@ -0,0 +1,21 @@
>> +// RUN: %clangxx %target_itanium_abi_host_triple -O0 -g %s -c -o %t.o
>> +// RUN: %test_debuginfo %s %t.o
>> +// Radar 9440721
>> +// If debug info for my_number() is emitted outside function foo's scope
>> +// then a debugger may not be able to handle it. At least one version of
>> +// gdb crashes in such cases.
>> +
>> +// DEBUGGER: ptype foo
>> +// CHECK: int (void)
>> +
>> +int foo() {
>> +  struct Local {
>> +    static int my_number() {
>> +      return 42;
>> +    }
>> +  };
>> +
>> +  int i = 0;
>> +  i = Local::my_number();
>> +  return i + 1;
>> +}
>>
>> Added: debuginfo-tests/trunk/tests/nrvo-string.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/debuginfo-tests/trunk/tests/nrvo-string.cpp?rev=318435&view=auto
>>
>> ==============================================================================
>> --- debuginfo-tests/trunk/tests/nrvo-string.cpp (added)
>> +++ debuginfo-tests/trunk/tests/nrvo-string.cpp Thu Nov 16 10:26:20 2017
>> @@ -0,0 +1,27 @@
>> +// This ensures that DW_OP_deref is inserted when necessary, such as
>> when NRVO
>> +// of a string object occurs in C++.
>> +//
>> +// RUN: %clangxx -O0 -fno-exceptions %target_itanium_abi_host_triple %s
>> -o %t.out -g
>> +// RUN: %test_debuginfo %s %t.out
>> +// RUN: %clangxx -O1 -fno-exceptions %target_itanium_abi_host_triple %s
>> -o %t.out -g
>> +// RUN: %test_debuginfo %s %t.out
>> +//
>> +// PR34513
>> +
>> +struct string {
>> +  string() {}
>> +  string(int i) : i(i) {}
>> +  ~string() {}
>> +  int i = 0;
>> +};
>> +string get_string() {
>> +  string unused;
>> +  string result = 3;
>> +// DEBUGGER: break 21
>> +  return result;
>> +}
>> +int main() { get_string(); }
>> +
>> +// DEBUGGER: r
>> +// DEBUGGER: print result.i
>> +// CHECK:  = 3
>>
>> Added: debuginfo-tests/trunk/tests/safestack.c
>> URL:
>> http://llvm.org/viewvc/llvm-project/debuginfo-tests/trunk/tests/safestack.c?rev=318435&view=auto
>>
>> ==============================================================================
>> --- debuginfo-tests/trunk/tests/safestack.c (added)
>> +++ debuginfo-tests/trunk/tests/safestack.c Thu Nov 16 10:26:20 2017
>> @@ -0,0 +1,51 @@
>> +// RUN: %clang %target_itanium_abi_host_triple -arch x86_64 %s -o %t.out
>> -g -fsanitize=safe-stack
>> +// RUN: %test_debuginfo %s %t.out
>> +// REQUIRES: not_asan
>> +//           Zorg configures the ASAN stage2 bots to not build the
>> +//           safestack compiler-rt.  Only run this test on
>> +//           non-asanified configurations.
>> +
>> +struct S {
>> +  int a[8];
>> +};
>> +
>> +int f(struct S s, unsigned i);
>> +
>> +int main(int argc, const char **argv) {
>> +  struct S s = {{0, 1, 2, 3, 4, 5, 6, 7}};
>> +  // DEBUGGER: break 17
>> +  f(s, 4);
>> +  // DEBUGGER: break 19
>> +  return 0;
>> +}
>> +
>> +int f(struct S s, unsigned i) {
>> +  // DEBUGGER: break 24
>> +  return s.a[i];
>> +}
>> +
>> +// DEBUGGER: r
>> +// DEBUGGER: p s
>> +// CHECK: a =
>> +// DEBUGGER: p s.a[0]
>> +// CHECK: = 0
>> +// DEBUGGER: p s.a[1]
>> +// CHECK: = 1
>> +// DEBUGGER: p s.a[7]
>> +// CHECK: = 7
>> +// DEBUGGER: c
>> +// DEBUGGER: p s
>> +// CHECK: a =
>> +// DEBUGGER: p s.a[0]
>> +// CHECK: = 0
>> +// DEBUGGER: p s.a[1]
>> +// CHECK: = 1
>> +// DEBUGGER: p s.a[7]
>> +// DEBUGGER: c
>> +// DEBUGGER: p s
>> +// CHECK: a =
>> +// DEBUGGER: p s.a[0]
>> +// CHECK: = 0
>> +// DEBUGGER: p s.a[1]
>> +// CHECK: = 1
>> +// DEBUGGER: p s.a[7]
>>
>> Added: debuginfo-tests/trunk/tests/sret.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/debuginfo-tests/trunk/tests/sret.cpp?rev=318435&view=auto
>>
>> ==============================================================================
>> --- debuginfo-tests/trunk/tests/sret.cpp (added)
>> +++ debuginfo-tests/trunk/tests/sret.cpp Thu Nov 16 10:26:20 2017
>> @@ -0,0 +1,71 @@
>> +// RUN: %clangxx %target_itanium_abi_host_triple -O0 -g %s -c -o %t.o
>> +// RUN: %clangxx %target_itanium_abi_host_triple %t.o -o %t.out
>> +// RUN: %test_debuginfo %s %t.out
>> +// Radar 8775834
>> +// DEBUGGER: break 62
>> +// DEBUGGER: r
>> +// DEBUGGER: p a
>> +// CHECK: ${{[0-9]+}} =
>> +// LLDB does not print artificial members.
>> +// CHECK:  {{(_vptr\$A =)?.*}}m_int = 12
>> +
>> +class A
>> +{
>> +public:
>> +    A (int i=0);
>> +    A (const A& rhs);
>> +    const A&
>> +    operator= (const A& rhs);
>> +    virtual ~A() {}
>> +
>> +    int get_int();
>> +
>> +protected:
>> +    int m_int;
>> +};
>> +
>> +A::A (int i) :
>> +    m_int(i)
>> +{
>> +}
>> +
>> +A::A (const A& rhs) :
>> +    m_int (rhs.m_int)
>> +{
>> +}
>> +
>> +const A &
>> +A::operator =(const A& rhs)
>> +{
>> +    m_int = rhs.m_int;
>> +    return *this;
>> +}
>> +
>> +int A::get_int()
>> +{
>> +    return m_int;
>> +}
>> +
>> +class B
>> +{
>> +public:
>> +    B () {}
>> +
>> +    A AInstance();
>> +};
>> +
>> +A
>> +B::AInstance()
>> +{
>> +    A a(12);
>> +    return a;
>> +}
>> +
>> +int main (int argc, char const *argv[])
>> +{
>> +    B b;
>> +    int return_val = b.AInstance().get_int();
>> +
>> +    A a(b.AInstance());
>> +    return return_val;
>> +}
>>
>> Added: debuginfo-tests/trunk/tests/stack-var.c
>>
>> URL:
>> http://llvm.org/viewvc/llvm-project/debuginfo-tests/trunk/tests/stack-var.c?rev=318435&view=auto
>>
>> ==============================================================================
>> --- debuginfo-tests/trunk/tests/stack-var.c (added)
>>
>> +++ debuginfo-tests/trunk/tests/stack-var.c Thu Nov 16 10:26:20 2017
>> @@ -0,0 +1,18 @@
>> +// RUN: %clang %target_itanium_abi_host_triple %s -O -o %t.out -g
>>
>>
>> +// RUN: %test_debuginfo %s %t.out
>> +
>> +void __attribute__((noinline, optnone)) bar(int *test) {}
>> +int main() {
>> +  int test;
>> +  test = 23;
>> +  // DEBUGGER: break 12
>>
>> +  // DEBUGGER: r
>>
>>
>> +  // DEBUGGER: p test
>> +  // CHECK: = 23
>> +  bar(&test);
>> +  // DEBUGGER: break 17
>> +  // DEBUGGER: c
>> +  // DEBUGGER: p test
>> +  // CHECK: = 23
>> +  return test;
>> +}
>>
>> Added: debuginfo-tests/trunk/tests/static-member-2.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/debuginfo-tests/trunk/tests/static-member-2.cpp?rev=318435&view=auto
>>
>> ==============================================================================
>> --- debuginfo-tests/trunk/tests/static-member-2.cpp (added)
>>
>> +++ debuginfo-tests/trunk/tests/static-member-2.cpp Thu Nov 16 10:26:20
>> 2017
>> @@ -0,0 +1,39 @@
>> +// RUN: %clangxx %target_itanium_abi_host_triple -O0 -g %s -o %t -c
>> +// RUN: %clangxx %target_itanium_abi_host_triple %t -o %t.out
>>
>>
>> +// RUN: %test_debuginfo %s %t.out
>> +
>> +// FIXME: LLDB finds the wrong symbol for "C". rdar://problem/14933867
>> +// XFAIL: darwin
>> +
>> +// DEBUGGER: delete breakpoints
>> +// DEBUGGER: break static-member.cpp:33
>>
>> +// DEBUGGER: r
>>
>>
>> +// DEBUGGER: ptype C
>> +// CHECK:      {{struct|class}} C {
>> +// CHECK:      static const int a;
>> +// CHECK-NEXT: static int b;
>> +// CHECK-NEXT: static int c;
>> +// CHECK-NEXT: int d;
>> +// CHECK-NEXT: }
>> +// DEBUGGER: p C::a
>> +// CHECK: ${{[0-9]}} = 4
>> +// DEBUGGER: p C::c
>> +// CHECK: ${{[0-9]}} = 15
>> +
>> +// PR14471, PR14734
>> +
>> +class C {
>> +public:
>> +  const static int a = 4;
>> +  static int b;
>> +  static int c;
>> +  int d;
>> +};
>> +
>> +int C::c = 15;
>> +const int C::a;
>> +
>> +int main() {
>> +    C instance_C;
>> +    return C::a;
>> +}
>>
>> Added: debuginfo-tests/trunk/tests/static-member.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/debuginfo-tests/trunk/tests/static-member.cpp?rev=318435&view=auto
>>
>> ==============================================================================
>> --- debuginfo-tests/trunk/tests/static-member.cpp (added)
>>
>> +++ debuginfo-tests/trunk/tests/static-member.cpp Thu Nov 16 10:26:20 2017
>> @@ -0,0 +1,36 @@
>> +// RUN: %clangxx %target_itanium_abi_host_triple -O0 -g %s -o %t -c
>> +// RUN: %clangxx %target_itanium_abi_host_triple %t -o %t.out
>>
>>
>> +// RUN: %test_debuginfo %s %t.out
>> +
>> +// DEBUGGER: delete breakpoints
>> +// DEBUGGER: break static-member.cpp:33
>>
>> +// DEBUGGER: r
>>
>>
>> +// DEBUGGER: ptype MyClass
>> +// CHECK:      {{struct|class}} MyClass {
>> +// CHECK:      static const int a;
>> +// CHECK-NEXT: static int b;
>> +// CHECK-NEXT: static int c;
>> +// CHECK-NEXT: int d;
>> +// CHECK-NEXT: }
>> +// DEBUGGER: p MyClass::a
>> +// CHECK: ${{[0-9]}} = 4
>> +// DEBUGGER: p MyClass::c
>> +// CHECK: ${{[0-9]}} = 15
>> +
>> +// PR14471, PR14734
>> +
>> +class MyClass {
>> +public:
>> +  const static int a = 4;
>> +  static int b;
>> +  static int c;
>> +  int d;
>> +};
>> +
>> +int MyClass::c = 15;
>> +const int MyClass::a;
>> +
>> +int main() {
>> +    MyClass instance_MyClass;
>> +    return MyClass::a;
>> +}
>>
>> Added: debuginfo-tests/trunk/tests/vla.c
>> URL:
>> http://llvm.org/viewvc/llvm-project/debuginfo-tests/trunk/tests/vla.c?rev=318435&view=auto
>>
>> ==============================================================================
>> --- debuginfo-tests/trunk/tests/vla.c (added)
>> +++ debuginfo-tests/trunk/tests/vla.c Thu Nov 16 10:26:20 2017
>> @@ -0,0 +1,24 @@
>> +// This test case verifies the debug location for variable-length arrays.
>>
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at lists.llvm.org
>> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>>
>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20171116/b2a3e187/attachment-0001.html>


More information about the llvm-commits mailing list