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

Adrian Prantl via llvm-commits llvm-commits at lists.llvm.org
Thu Nov 16 15:29:39 PST 2017


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/dfd823ed/attachment-0001.html>


More information about the llvm-commits mailing list