Skip to content

Commit

Permalink
Fix TestInlines.py on Windows
Browse files Browse the repository at this point in the history
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

llvm-svn: 262255
  • Loading branch information
amccarth-google committed Feb 29, 2016
1 parent 936499a commit 5361832
Show file tree
Hide file tree
Showing 4 changed files with 8 additions and 8 deletions.
@@ -1,5 +1,5 @@
LEVEL = ../../../make

C_SOURCES := inlines.c
CXX_SOURCES := inlines.cpp

include $(LEVEL)/Makefile.rules
Expand Up @@ -16,10 +16,9 @@ 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.')
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()
Expand All @@ -36,17 +35,18 @@ def test(self):
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'])

0 comments on commit 5361832

Please sign in to comment.