[Lldb-commits] [lldb] r262255 - Fix TestInlines.py on Windows
Adrian McCarthy via lldb-commits
lldb-commits at lists.llvm.org
Mon Feb 29 13:13:29 PST 2016
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)
More information about the lldb-commits
mailing list