Author: amccarth Date: Mon Feb 29 15:13:29 2016 New Revision: 262255 URL: http://llvm.org/viewvc/llvm-project?rev=262255&view=rev Log: Fix TestInlines.py on Windows
The inlining semantics for C and C++ are different, which affects the test's expectation of the number of times the function should appear in the binary. In the case of this test, C semantics means there should be three instances of inner_inline, while C++ semantics means there should be only two. On Windows, clang uses C++ inline semantics even for C code, and there doesn't seem to be a combination of compiler flags to avoid this. So, for consistency, I've recast the test to use C++ everywhere. Since the test resided under lang/c, it seemed appropriate to move it to lang/cpp. This does not address the other XFAIL for this test on Linux/gcc. See https://llvm.org/bugs/show_bug.cgi?id=26710 Differential Revision: http://reviews.llvm.org/D17650 Added: lldb/trunk/packages/Python/lldbsuite/test/lang/cpp/inlines/ lldb/trunk/packages/Python/lldbsuite/test/lang/cpp/inlines/Makefile - copied, changed from r262028, lldb/trunk/packages/Python/lldbsuite/test/lang/c/inlines/Makefile lldb/trunk/packages/Python/lldbsuite/test/lang/cpp/inlines/TestInlines.py - copied, changed from r262028, lldb/trunk/packages/Python/lldbsuite/test/lang/c/inlines/TestInlines.py lldb/trunk/packages/Python/lldbsuite/test/lang/cpp/inlines/inlines.cpp - copied, changed from r262028, lldb/trunk/packages/Python/lldbsuite/test/lang/c/inlines/inlines.c lldb/trunk/packages/Python/lldbsuite/test/lang/cpp/inlines/inlines.h - copied, changed from r262028, lldb/trunk/packages/Python/lldbsuite/test/lang/c/inlines/inlines.h Removed: lldb/trunk/packages/Python/lldbsuite/test/lang/c/inlines/Makefile lldb/trunk/packages/Python/lldbsuite/test/lang/c/inlines/TestInlines.py lldb/trunk/packages/Python/lldbsuite/test/lang/c/inlines/inlines.c lldb/trunk/packages/Python/lldbsuite/test/lang/c/inlines/inlines.h Removed: lldb/trunk/packages/Python/lldbsuite/test/lang/c/inlines/Makefile URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/packages/Python/lldbsuite/test/lang/c/inlines/Makefile?rev=262254&view=auto ============================================================================== --- lldb/trunk/packages/Python/lldbsuite/test/lang/c/inlines/Makefile (original) +++ lldb/trunk/packages/Python/lldbsuite/test/lang/c/inlines/Makefile (removed) @@ -1,5 +0,0 @@ -LEVEL = ../../../make - -C_SOURCES := inlines.c - -include $(LEVEL)/Makefile.rules Removed: lldb/trunk/packages/Python/lldbsuite/test/lang/c/inlines/TestInlines.py URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/packages/Python/lldbsuite/test/lang/c/inlines/TestInlines.py?rev=262254&view=auto ============================================================================== --- lldb/trunk/packages/Python/lldbsuite/test/lang/c/inlines/TestInlines.py (original) +++ lldb/trunk/packages/Python/lldbsuite/test/lang/c/inlines/TestInlines.py (removed) @@ -1,52 +0,0 @@ -"""Test variable lookup when stopped in inline functions.""" - -from __future__ import print_function - -import os, time -import lldb -from lldbsuite.test.decorators import * -from lldbsuite.test.lldbtest import * -from lldbsuite.test import lldbutil - -class InlinesTestCase(TestBase): - - mydir = TestBase.compute_mydir(__file__) - - def setUp(self): - # Call super's setUp(). - TestBase.setUp(self) - # Find the line number to break inside main(). - self.line = line_number('inlines.c', '// Set break point at this line.') - - @expectedFailureAll("llvm.org/pr26710", oslist=["linux"], compiler="gcc") - @expectedFailureAll("llvm.org/pr26710", oslist=["windows"], compiler="clang") - def test(self): - """Test that local variables are visible in expressions.""" - self.build() - self.runToBreakpoint() - - # Check that 'frame variable' finds a variable - self.expect("frame variable inner_input", VARIABLES_DISPLAYED_CORRECTLY, - startstr = '(int) inner_input =') - - # Check that 'expr' finds a variable - self.expect("expr inner_input", VARIABLES_DISPLAYED_CORRECTLY, - startstr = '(int) $0 =') - - def runToBreakpoint(self): - exe = os.path.join(os.getcwd(), "a.out") - self.runCmd("file " + exe, CURRENT_EXECUTABLE_SET) - - # Break inside the main. - lldbutil.run_break_set_by_file_and_line (self, "inlines.c", self.line, num_expected_locations=3, loc_exact=True) - - self.runCmd("run", RUN_SUCCEEDED) - - # The stop reason of the thread should be breakpoint. - self.expect("thread list", STOPPED_DUE_TO_BREAKPOINT, - substrs = ['stopped', - 'stop reason = breakpoint']) - - # The breakpoint should have a hit count of 1. - self.expect("breakpoint list -f", BREAKPOINT_HIT_ONCE, - substrs = [' resolved, hit count = 1']) Removed: lldb/trunk/packages/Python/lldbsuite/test/lang/c/inlines/inlines.c URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/packages/Python/lldbsuite/test/lang/c/inlines/inlines.c?rev=262254&view=auto ============================================================================== --- lldb/trunk/packages/Python/lldbsuite/test/lang/c/inlines/inlines.c (original) +++ lldb/trunk/packages/Python/lldbsuite/test/lang/c/inlines/inlines.c (removed) @@ -1,53 +0,0 @@ -#include <stdio.h> -#include "inlines.h" - -#define INLINE_ME __inline__ __attribute__((always_inline)) - -int -not_inlined_2 (int input) -{ - printf ("Called in not_inlined_2 with : %d.\n", input); - return input; -} - -int -not_inlined_1 (int input) -{ - printf ("Called in not_inlined_1 with %d.\n", input); - return not_inlined_2(input); -} - -INLINE_ME int -inner_inline (int inner_input, int mod_value) -{ - int inner_result; - inner_result = inner_input % mod_value; - printf ("Returning: %d.\n", inner_result); - return not_inlined_1 (inner_result); // Set break point at this line. -} - -INLINE_ME int -outer_inline (int outer_input) -{ - int outer_result; - - outer_result = inner_inline (outer_input, outer_input % 3); - return outer_result; -} - -int -main (int argc, char **argv) -{ - printf ("Starting...\n"); - - int (*func_ptr) (int); - func_ptr = outer_inline; - - outer_inline (argc); - - func_ptr (argc); - - return 0; -} - - Removed: lldb/trunk/packages/Python/lldbsuite/test/lang/c/inlines/inlines.h URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/packages/Python/lldbsuite/test/lang/c/inlines/inlines.h?rev=262254&view=auto ============================================================================== --- lldb/trunk/packages/Python/lldbsuite/test/lang/c/inlines/inlines.h (original) +++ lldb/trunk/packages/Python/lldbsuite/test/lang/c/inlines/inlines.h (removed) @@ -1,4 +0,0 @@ -int inner_inline (int inner_input, int mod_value); -int outer_inline (int outer_input); -int not_inlined_2 (int input); -int not_inlined_1 (int input); Copied: lldb/trunk/packages/Python/lldbsuite/test/lang/cpp/inlines/Makefile (from r262028, lldb/trunk/packages/Python/lldbsuite/test/lang/c/inlines/Makefile) URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/packages/Python/lldbsuite/test/lang/cpp/inlines/Makefile?p2=lldb/trunk/packages/Python/lldbsuite/test/lang/cpp/inlines/Makefile&p1=lldb/trunk/packages/Python/lldbsuite/test/lang/c/inlines/Makefile&r1=262028&r2=262255&rev=262255&view=diff ============================================================================== --- lldb/trunk/packages/Python/lldbsuite/test/lang/c/inlines/Makefile (original) +++ lldb/trunk/packages/Python/lldbsuite/test/lang/cpp/inlines/Makefile Mon Feb 29 15:13:29 2016 @@ -1,5 +1,5 @@ LEVEL = ../../../make -C_SOURCES := inlines.c +CXX_SOURCES := inlines.cpp include $(LEVEL)/Makefile.rules Copied: lldb/trunk/packages/Python/lldbsuite/test/lang/cpp/inlines/TestInlines.py (from r262028, lldb/trunk/packages/Python/lldbsuite/test/lang/c/inlines/TestInlines.py) URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/packages/Python/lldbsuite/test/lang/cpp/inlines/TestInlines.py?p2=lldb/trunk/packages/Python/lldbsuite/test/lang/cpp/inlines/TestInlines.py&p1=lldb/trunk/packages/Python/lldbsuite/test/lang/c/inlines/TestInlines.py&r1=262028&r2=262255&rev=262255&view=diff ============================================================================== --- lldb/trunk/packages/Python/lldbsuite/test/lang/c/inlines/TestInlines.py (original) +++ lldb/trunk/packages/Python/lldbsuite/test/lang/cpp/inlines/TestInlines.py Mon Feb 29 15:13:29 2016 @@ -16,10 +16,9 @@ class InlinesTestCase(TestBase): # Call super's setUp(). TestBase.setUp(self) # Find the line number to break inside main(). - self.line = line_number('inlines.c', '// Set break point at this line.') + self.line = line_number('inlines.cpp', '// Set break point at this line.') @expectedFailureAll("llvm.org/pr26710", oslist=["linux"], compiler="gcc") - @expectedFailureAll("llvm.org/pr26710", oslist=["windows"], compiler="clang") def test(self): """Test that local variables are visible in expressions.""" self.build() @@ -36,17 +35,18 @@ class InlinesTestCase(TestBase): def runToBreakpoint(self): exe = os.path.join(os.getcwd(), "a.out") self.runCmd("file " + exe, CURRENT_EXECUTABLE_SET) - + # Break inside the main. - lldbutil.run_break_set_by_file_and_line (self, "inlines.c", self.line, num_expected_locations=3, loc_exact=True) - + lldbutil.run_break_set_by_file_and_line(self, "inlines.cpp", self.line, num_expected_locations=2, + loc_exact=True) + self.runCmd("run", RUN_SUCCEEDED) - + # The stop reason of the thread should be breakpoint. self.expect("thread list", STOPPED_DUE_TO_BREAKPOINT, substrs = ['stopped', 'stop reason = breakpoint']) - + # The breakpoint should have a hit count of 1. self.expect("breakpoint list -f", BREAKPOINT_HIT_ONCE, substrs = [' resolved, hit count = 1']) Copied: lldb/trunk/packages/Python/lldbsuite/test/lang/cpp/inlines/inlines.cpp (from r262028, lldb/trunk/packages/Python/lldbsuite/test/lang/c/inlines/inlines.c) URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/packages/Python/lldbsuite/test/lang/cpp/inlines/inlines.cpp?p2=lldb/trunk/packages/Python/lldbsuite/test/lang/cpp/inlines/inlines.cpp&p1=lldb/trunk/packages/Python/lldbsuite/test/lang/c/inlines/inlines.c&r1=262028&r2=262255&rev=262255&view=diff ============================================================================== (empty) Copied: lldb/trunk/packages/Python/lldbsuite/test/lang/cpp/inlines/inlines.h (from r262028, lldb/trunk/packages/Python/lldbsuite/test/lang/c/inlines/inlines.h) URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/packages/Python/lldbsuite/test/lang/cpp/inlines/inlines.h?p2=lldb/trunk/packages/Python/lldbsuite/test/lang/cpp/inlines/inlines.h&p1=lldb/trunk/packages/Python/lldbsuite/test/lang/c/inlines/inlines.h&r1=262028&r2=262255&rev=262255&view=diff ============================================================================== (empty) _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits