Skip to content

Commit

Permalink
lit support for REQUIRES: asserts.
Browse files Browse the repository at this point in the history
Take #2. Don't piggyback on the existing config.build_mode. Instead,
define a new lit feature for each build feature we need (currently
just "asserts"). Teach both autoconf'd and cmake'd Makefiles to define
this feature within test/lit.site.cfg. This doesn't require any lit
harness changes and should be more robust across build systems.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133664 91177308-0d34-0410-b5e6-96231b3b80d8
  • Loading branch information
atrick committed Jun 22, 2011
1 parent 1a3ab63 commit f2a5842
Show file tree
Hide file tree
Showing 7 changed files with 14 additions and 19 deletions.
5 changes: 0 additions & 5 deletions cmake/modules/HandleLLVMOptions.cmake
Expand Up @@ -36,13 +36,8 @@ if( LLVM_ENABLE_ASSERTIONS )
# explicitly undefine it:
if( uppercase_CMAKE_BUILD_TYPE STREQUAL "RELEASE" )
add_definitions( -UNDEBUG )
set(LLVM_BUILD_MODE "Release")
else()
set(LLVM_BUILD_MODE "Debug")
endif()
set(LLVM_BUILD_MODE "${LLVM_BUILD_MODE}+Asserts")
else()
set(LLVM_BUILD_MODE "Release")
if( NOT uppercase_CMAKE_BUILD_TYPE STREQUAL "RELEASE" )
if( NOT MSVC_IDE AND NOT XCODE )
add_definitions( -DNDEBUG )
Expand Down
2 changes: 1 addition & 1 deletion test/CodeGen/X86/2011-06-14-PreschedRegalias.ll
@@ -1,5 +1,5 @@
; RUN: llc < %s -march=x86-64 -stress-sched | FileCheck %s
; REQUIRES: Asserts
; REQUIRES: asserts
; Test interference between physreg aliases during preRAsched.
; mul wants an operand in AL, but call clobbers it.

Expand Down
8 changes: 7 additions & 1 deletion test/Makefile
Expand Up @@ -171,15 +171,21 @@ site.exp: FORCE
@test ! -f site.exp || mv site.exp site.bak
@mv site.tmp site.exp

ifeq ($(DISABLE_ASSERTIONS),1)
ENABLE_ASSERTIONS=0
else
ENABLE_ASSERTIONS=1
endif

lit.site.cfg: site.exp
@echo "Making LLVM 'lit.site.cfg' file..."
@$(ECHOPATH) s=@LLVM_SOURCE_DIR@=$(LLVM_SRC_ROOT)=g > lit.tmp
@$(ECHOPATH) s=@LLVM_BINARY_DIR@=$(LLVM_OBJ_ROOT)=g >> lit.tmp
@$(ECHOPATH) s=@LLVM_TOOLS_DIR@=$(ToolDir)=g >> lit.tmp
@$(ECHOPATH) s=@LLVM_BUILD_MODE@=$(BuildMode)=g >> lit.tmp
@$(ECHOPATH) s=@LLVMGCCDIR@=$(LLVMGCCDIR)=g >> lit.tmp
@$(ECHOPATH) s=@PYTHON_EXECUTABLE@=python=g >> lit.tmp
@$(ECHOPATH) s=@ENABLE_SHARED@=$(ENABLE_SHARED)=g >> lit.tmp
@$(ECHOPATH) s=@LLVM_ENABLE_ASSERTIONS@=$(ENABLE_ASSERTIONS)=g >> lit.tmp
@sed -f lit.tmp $(PROJ_SRC_DIR)/lit.site.cfg.in > $@
@-rm -f lit.tmp

Expand Down
3 changes: 3 additions & 0 deletions test/lit.cfg
Expand Up @@ -306,3 +306,6 @@ else:

if loadable_module:
config.available_features.add('loadable_module')

if config.enable_assertions:
config.available_features.add('asserts')
2 changes: 1 addition & 1 deletion test/lit.site.cfg.in
Expand Up @@ -5,9 +5,9 @@ config.llvm_obj_root = "@LLVM_BINARY_DIR@"
config.llvm_tools_dir = "@LLVM_TOOLS_DIR@"
config.llvmgcc_dir = "@LLVMGCCDIR@"
config.lit_tools_dir = "@LLVM_LIT_TOOLS_DIR@"
config.llvm_build_modes = "@LLVM_BUILD_MODE@".split('+')
config.python_executable = "@PYTHON_EXECUTABLE@"
config.enable_shared = @ENABLE_SHARED@
config.enable_assertions = @LLVM_ENABLE_ASSERTIONS@

# Support substitution of the tools_dir with user parameters. This is
# used when we can't determine the tool dir at configuration time.
Expand Down
6 changes: 2 additions & 4 deletions utils/lit/lit/TestRunner.py
Expand Up @@ -473,11 +473,9 @@ def processLine(ln):
if script[-1][-1] == '\\':
return (Test.UNRESOLVED, "Test has unterminated run lines (with '\\')")

# Check that we have the required features or build modes:
# Check that we have the required features:
missing_required_features = [f for f in requires
if f not in test.config.available_features
and f not in test.config.llvm_build_modes]

if f not in test.config.available_features]
if missing_required_features:
msg = ', '.join(missing_required_features)
return (Test.UNSUPPORTED,
Expand Down
7 changes: 0 additions & 7 deletions utils/lit/lit/TestingConfig.py
Expand Up @@ -74,7 +74,6 @@ def __init__(self, parent, name, suffixes, test_format,

def clone(self, path):
# FIXME: Chain implementations?
# See attribute chaining in finish()
#
# FIXME: Allow extra parameters?
cfg = TestingConfig(self, self.name, self.suffixes, self.test_format,
Expand Down Expand Up @@ -102,9 +101,3 @@ def finish(self, litConfig):
# files. Should we distinguish them?
self.test_source_root = str(self.test_source_root)
self.excludes = set(self.excludes)

# chain attributes by copying them
if self.parent:
for k,v in vars(self.parent).items():
if not hasattr(self, k):
setattr(self, k, v)

0 comments on commit f2a5842

Please sign in to comment.