mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-08-10 18:26:02 +00:00
test: Make a start on a test suite for libLTO.
This works in a similar way to the gold plugin tests. We search for a compatible linker on $PATH and use it to run tests against our just-built libLTO. To start with, test the just added opt level functionality. Differential Revision: http://reviews.llvm.org/D8472 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@232785 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -532,6 +532,10 @@ if(GOLD_EXECUTABLE)
|
|||||||
"PATH to binutils/include containing plugin-api.h for gold plugin.")
|
"PATH to binutils/include containing plugin-api.h for gold plugin.")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
if(APPLE)
|
||||||
|
find_program(LD64_EXECUTABLE NAMES ld DOC "The ld64 linker")
|
||||||
|
endif()
|
||||||
|
|
||||||
include(FindOCaml)
|
include(FindOCaml)
|
||||||
include(AddOCaml)
|
include(AddOCaml)
|
||||||
if(WIN32)
|
if(WIN32)
|
||||||
|
@@ -70,6 +70,10 @@ if(TARGET llvm-go)
|
|||||||
set(LLVM_TEST_DEPENDS ${LLVM_TEST_DEPENDS} llvm-go)
|
set(LLVM_TEST_DEPENDS ${LLVM_TEST_DEPENDS} llvm-go)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
if(APPLE)
|
||||||
|
set(LLVM_TEST_DEPENDS ${LLVM_TEST_DEPENDS} LTO)
|
||||||
|
endif()
|
||||||
|
|
||||||
if(TARGET ocaml_llvm)
|
if(TARGET ocaml_llvm)
|
||||||
set(LLVM_TEST_DEPENDS ${LLVM_TEST_DEPENDS}
|
set(LLVM_TEST_DEPENDS ${LLVM_TEST_DEPENDS}
|
||||||
ocaml_llvm
|
ocaml_llvm
|
||||||
|
@@ -129,6 +129,7 @@ lit.site.cfg: FORCE
|
|||||||
@$(ECHOPATH) s=@EXEEXT@=$(EXEEXT)=g >> lit.tmp
|
@$(ECHOPATH) s=@EXEEXT@=$(EXEEXT)=g >> lit.tmp
|
||||||
@$(ECHOPATH) s=@PYTHON_EXECUTABLE@=$(PYTHON)=g >> lit.tmp
|
@$(ECHOPATH) s=@PYTHON_EXECUTABLE@=$(PYTHON)=g >> lit.tmp
|
||||||
@$(ECHOPATH) s=@GOLD_EXECUTABLE@=ld=g >> lit.tmp
|
@$(ECHOPATH) s=@GOLD_EXECUTABLE@=ld=g >> lit.tmp
|
||||||
|
@$(ECHOPATH) s=@LD64_EXECUTABLE@=ld=g >> lit.tmp
|
||||||
@$(ECHOPATH) s=@OCAMLFIND@=$(OCAMLFIND)=g >> lit.tmp
|
@$(ECHOPATH) s=@OCAMLFIND@=$(OCAMLFIND)=g >> lit.tmp
|
||||||
@$(ECHOPATH) s!@OCAMLFLAGS@!$(addprefix -cclib ,$(LDFLAGS))!g >> lit.tmp
|
@$(ECHOPATH) s!@OCAMLFLAGS@!$(addprefix -cclib ,$(LDFLAGS))!g >> lit.tmp
|
||||||
@$(ECHOPATH) s=@HAVE_OCAMLOPT@=$(HAVE_OCAMLOPT)=g >> lit.tmp
|
@$(ECHOPATH) s=@HAVE_OCAMLOPT@=$(HAVE_OCAMLOPT)=g >> lit.tmp
|
||||||
|
17
test/lit.cfg
17
test/lit.cfg
@@ -188,6 +188,7 @@ config.substitutions.append( ('%llc_dwarf', llc_dwarf) )
|
|||||||
|
|
||||||
# Add site-specific substitutions.
|
# Add site-specific substitutions.
|
||||||
config.substitutions.append( ('%gold', config.gold_executable) )
|
config.substitutions.append( ('%gold', config.gold_executable) )
|
||||||
|
config.substitutions.append( ('%ld64', config.ld64_executable) )
|
||||||
config.substitutions.append( ('%go', config.go_executable) )
|
config.substitutions.append( ('%go', config.go_executable) )
|
||||||
config.substitutions.append( ('%llvmshlibdir', config.llvm_shlib_dir) )
|
config.substitutions.append( ('%llvmshlibdir', config.llvm_shlib_dir) )
|
||||||
config.substitutions.append( ('%shlibext', config.llvm_shlib_ext) )
|
config.substitutions.append( ('%shlibext', config.llvm_shlib_ext) )
|
||||||
@@ -369,6 +370,22 @@ def have_ld_plugin_support():
|
|||||||
if have_ld_plugin_support():
|
if have_ld_plugin_support():
|
||||||
config.available_features.add('ld_plugin')
|
config.available_features.add('ld_plugin')
|
||||||
|
|
||||||
|
def have_ld64_plugin_support():
|
||||||
|
if config.ld64_executable == '':
|
||||||
|
return False
|
||||||
|
|
||||||
|
ld_cmd = subprocess.Popen([config.ld64_executable, '-v'], stderr = subprocess.PIPE)
|
||||||
|
ld_out = ld_cmd.stderr.read().decode()
|
||||||
|
ld_cmd.wait()
|
||||||
|
|
||||||
|
if 'ld64' not in ld_out or 'LTO' not in ld_out:
|
||||||
|
return False
|
||||||
|
|
||||||
|
return True
|
||||||
|
|
||||||
|
if have_ld64_plugin_support():
|
||||||
|
config.available_features.add('ld64_plugin')
|
||||||
|
|
||||||
# Ask llvm-config about assertion mode.
|
# Ask llvm-config about assertion mode.
|
||||||
try:
|
try:
|
||||||
llvm_config_cmd = subprocess.Popen(
|
llvm_config_cmd = subprocess.Popen(
|
||||||
|
@@ -14,6 +14,7 @@ config.llvm_exe_ext = "@EXEEXT@"
|
|||||||
config.lit_tools_dir = "@LLVM_LIT_TOOLS_DIR@"
|
config.lit_tools_dir = "@LLVM_LIT_TOOLS_DIR@"
|
||||||
config.python_executable = "@PYTHON_EXECUTABLE@"
|
config.python_executable = "@PYTHON_EXECUTABLE@"
|
||||||
config.gold_executable = "@GOLD_EXECUTABLE@"
|
config.gold_executable = "@GOLD_EXECUTABLE@"
|
||||||
|
config.ld64_executable = "@LD64_EXECUTABLE@"
|
||||||
config.ocamlfind_executable = "@OCAMLFIND@"
|
config.ocamlfind_executable = "@OCAMLFIND@"
|
||||||
config.have_ocamlopt = "@HAVE_OCAMLOPT@"
|
config.have_ocamlopt = "@HAVE_OCAMLOPT@"
|
||||||
config.have_ocaml_ounit = "@HAVE_OCAML_OUNIT@"
|
config.have_ocaml_ounit = "@HAVE_OCAML_OUNIT@"
|
||||||
|
2
test/tools/lto/lit.local.cfg
Normal file
2
test/tools/lto/lit.local.cfg
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
if not 'ld64_plugin' in config.available_features:
|
||||||
|
config.unsupported = True
|
20
test/tools/lto/opt-level.ll
Normal file
20
test/tools/lto/opt-level.ll
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
; RUN: llvm-as %s -o %t.o
|
||||||
|
; RUN: env DYLD_LIBRARY_PATH=%llvmshlibdir %ld64 -arch x86_64 -dylib -mllvm -O0 -o %t.dylib %t.o
|
||||||
|
; RUN: llvm-nm -no-llvm-bc %t.dylib | FileCheck --check-prefix=CHECK-O0 %s
|
||||||
|
; RUN: env DYLD_LIBRARY_PATH=%llvmshlibdir %ld64 -arch x86_64 -dylib -mllvm -O2 -o %t.dylib %t.o
|
||||||
|
; RUN: llvm-nm -no-llvm-bc %t.dylib | FileCheck --check-prefix=CHECK-O2 %s
|
||||||
|
|
||||||
|
target triple = "x86_64-apple-macosx10.8.0"
|
||||||
|
|
||||||
|
; CHECK-O0: t _f1
|
||||||
|
; CHECK-O2-NOT: _f1
|
||||||
|
define internal void @f1() {
|
||||||
|
ret void
|
||||||
|
}
|
||||||
|
|
||||||
|
; CHECK-O0: T _f2
|
||||||
|
; CHECK-O2: T _f2
|
||||||
|
define void @f2() {
|
||||||
|
call void @f1()
|
||||||
|
ret void
|
||||||
|
}
|
Reference in New Issue
Block a user