Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 6 additions & 6 deletions .github/actions/1-setup/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ runs:
packages=( \
git-core cmake g++ \
libcurl4 libzstd-dev \
curl gdb p7zip-full tzdata unzip zip python3-pip \
curl gdb p7zip-full zstd tzdata unzip zip python3-pip \
)
if [[ $arch == x86_64 ]]; then
packages+=(g++-multilib libcurl4:i386)
Expand Down Expand Up @@ -71,7 +71,7 @@ runs:
run: |
set -eux
cd ..
version='${{ inputs.clang_major }}.1.8'
version='${{ inputs.clang_major }}.1.1'
curl -fL --retry 3 --max-time 300 -o clang.exe \
https://github.com/llvm/llvm-project/releases/download/llvmorg-$version/LLVM-$version-win64.exe
./clang.exe //S # double-slash for bash
Expand Down Expand Up @@ -115,11 +115,11 @@ runs:
elif [[ '${{ runner.os }}' == macOS ]]; then
os=osx
fi
curl -fL --retry 3 --max-time 300 -o llvm.tar.xz \
https://github.com/ldc-developers/llvm-project/releases/download/$tag/llvm-$version-$os-$arch$assertsSuffix.tar.xz
curl -fL --retry 3 --max-time 300 -o llvm.tar.zst \
https://github.com/ldc-developers/llvm-project/releases/download/$tag/llvm-$version-$os-$arch$assertsSuffix.tar.zst
mkdir llvm
tar -xf llvm.tar.xz --strip 1 -C llvm
rm llvm.tar.xz
tar -xf llvm.tar.zst --zstd --strip 1 -C llvm
rm llvm.tar.zst
fi

llvm/bin/llvm-config --version
Expand Down
8 changes: 4 additions & 4 deletions .github/actions/3-build-cross/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -45,11 +45,11 @@ runs:
fi
fi

curl -fL --retry 3 --max-time 300 -o llvm-cross.tar.xz \
https://github.com/ldc-developers/llvm-project/releases/download/$tag/llvm-$version-${{ inputs.os }}-${{ inputs.arch }}$assertsSuffix.tar.xz
curl -fL --retry 3 --max-time 300 -o llvm-cross.tar.zst \
https://github.com/ldc-developers/llvm-project/releases/download/$tag/llvm-$version-${{ inputs.os }}-${{ inputs.arch }}$assertsSuffix.tar.zst
mkdir llvm-cross
tar -xf llvm-cross.tar.xz --strip 1 -C llvm-cross
rm llvm-cross.tar.xz
tar -xf llvm-cross.tar.zst --zstd --strip 1 -C llvm-cross
rm llvm-cross.tar.zst

- name: Make non-native llvm-config runnable on host
shell: bash
Expand Down
6 changes: 3 additions & 3 deletions .github/actions/3-build-cross/android-llvm-config.in
Original file line number Diff line number Diff line change
Expand Up @@ -43,15 +43,15 @@ Typical components:
version=@LLVM_VERSION@
prefix=@LLVM_INSTALL_DIR@
has_rtti=NO
CPPFLAGS="-I${prefix}/include -DEXPERIMENTAL_KEY_INSTRUCTIONS -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS"
CPPFLAGS="-I${prefix}/include -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS"
CFLAGS="${CPPFLAGS} ${CFLAGS}"
CXXFLAGS="${CFLAGS} -std=c++17 --stdlib=libc++ -fno-exceptions -funwind-tables"
if [ "$has_rtti" != "YES" ]; then CXXFLAGS="$CXXFLAGS -fno-rtti"; fi
LDFLAGS="-L${prefix}/lib"
LIBFILE="${prefix}/lib/libLLVM-$version.so"

components="aarch64 aarch64asmparser aarch64codegen aarch64desc aarch64disassembler aarch64info aarch64utils aggressiveinstcombine all all-targets analysis arm armasmparser armcodegen armdesc armdisassembler arminfo armutils asmparser asmprinter binaryformat bitreader bitstreamreader bitwriter cfguard cgdata codegen codegentypes core coroutines coverage debuginfobtf debuginfocodeview debuginfodwarf debuginfodwarflowlevel debuginfogsym debuginfologicalview debuginfomsf debuginfopdb demangle dlltooldriver dwarfcfichecker dwarflinker dwarflinkerclassic dwarflinkerparallel dwp engine executionengine extensions filecheck frontendatomic frontenddirective frontenddriver frontendhlsl frontendoffloading frontendopenacc frontendopenmp fuzzercli fuzzmutate globalisel hipstdpar instcombine instrumentation interfacestub interpreter ipo irprinter irreader jitlink libdriver lineeditor linker lto mc mca mcdisassembler mcjit mcparser mirparser native nativecodegen objcarcopts objcopy object objectyaml option orcdebugging orcjit orcshared orctargetprocess passes profiledata remarks runtimedyld sandboxir scalaropts selectiondag spirv spirvanalysis spirvcodegen spirvdesc spirvinfo support symbolize tablegen target targetparser telemetry textapi textapibinaryreader transformutils vectorize webassembly webassemblyasmparser webassemblycodegen webassemblydesc webassemblydisassembler webassemblyinfo webassemblyutils windowsdriver windowsmanifest x86 x86asmparser x86codegen x86desc x86disassembler x86info x86targetmca xray"
static_libs="-lLLVMWindowsManifest -lLLVMXRay -lLLVMLibDriver -lLLVMDlltoolDriver -lLLVMTelemetry -lLLVMTextAPIBinaryReader -lLLVMCoverage -lLLVMLineEditor -lLLVMX86TargetMCA -lLLVMX86Disassembler -lLLVMX86AsmParser -lLLVMX86CodeGen -lLLVMX86Desc -lLLVMX86Info -lLLVMWebAssemblyDisassembler -lLLVMWebAssemblyAsmParser -lLLVMWebAssemblyCodeGen -lLLVMWebAssemblyUtils -lLLVMWebAssemblyDesc -lLLVMWebAssemblyInfo -lLLVMSPIRVCodeGen -lLLVMSPIRVDesc -lLLVMSPIRVInfo -lLLVMSPIRVAnalysis -lLLVMARMDisassembler -lLLVMARMAsmParser -lLLVMARMCodeGen -lLLVMARMDesc -lLLVMARMUtils -lLLVMARMInfo -lLLVMAArch64Disassembler -lLLVMAArch64AsmParser -lLLVMAArch64CodeGen -lLLVMAArch64Desc -lLLVMAArch64Utils -lLLVMAArch64Info -lLLVMOrcDebugging -lLLVMOrcJIT -lLLVMWindowsDriver -lLLVMMCJIT -lLLVMJITLink -lLLVMInterpreter -lLLVMExecutionEngine -lLLVMRuntimeDyld -lLLVMOrcTargetProcess -lLLVMOrcShared -lLLVMDWP -lLLVMDWARFCFIChecker -lLLVMDebugInfoLogicalView -lLLVMOption -lLLVMObjCopy -lLLVMMCA -lLLVMMCDisassembler -lLLVMLTO -lLLVMPasses -lLLVMHipStdPar -lLLVMCFGuard -lLLVMCoroutines -lLLVMipo -lLLVMVectorize -lLLVMSandboxIR -lLLVMLinker -lLLVMFrontendOpenMP -lLLVMFrontendOffloading -lLLVMObjectYAML -lLLVMFrontendOpenACC -lLLVMFrontendHLSL -lLLVMFrontendDriver -lLLVMInstrumentation -lLLVMFrontendDirective -lLLVMFrontendAtomic -lLLVMExtensions -lLLVMDWARFLinkerParallel -lLLVMDWARFLinkerClassic -lLLVMDWARFLinker -lLLVMGlobalISel -lLLVMMIRParser -lLLVMAsmPrinter -lLLVMSelectionDAG -lLLVMCodeGen -lLLVMTarget -lLLVMObjCARCOpts -lLLVMCodeGenTypes -lLLVMCGData -lLLVMIRPrinter -lLLVMInterfaceStub -lLLVMFileCheck -lLLVMFuzzMutate -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoBTF -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoCodeView -lLLVMDebugInfoGSYM -lLLVMDebugInfoDWARF -lLLVMDebugInfoDWARFLowLevel -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMIRReader -lLLVMAsmParser -lLLVMMC -lLLVMBitReader -lLLVMFuzzerCLI -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMTableGen -lLLVMSupport -lLLVMDemangle"
components="aarch64 aarch64asmparser aarch64codegen aarch64desc aarch64disassembler aarch64info aarch64utils abi aggressiveinstcombine all all-targets analysis arm armasmparser armcodegen armdesc armdisassembler arminfo armutils asmparser asmprinter binaryformat bitreader bitstreamreader bitwriter cas cfguard cgdata codegen codegentypes core coroutines coverage debuginfobtf debuginfocodeview debuginfodwarf debuginfodwarflowlevel debuginfogsym debuginfologicalview debuginfomsf debuginfopdb demangle dlltooldriver dtlto dwarfcfichecker dwarflinker dwarflinkerclassic dwarflinkerparallel dwp engine executionengine extensions filecheck frontendatomic frontenddirective frontenddriver frontendhlsl frontendoffloading frontendopenacc frontendopenmp fuzzercli fuzzmutate globalisel hipstdpar instcombine instrumentation interfacestub interpreter ipo irprinter irreader jitlink libdriver lineeditor linker lto mc mca mcdisassembler mcjit mcparser mirparser native nativecodegen objcarcopts objcopy object objectyaml option orcdebugging orcjit orcshared orctargetprocess passes plugins profiledata remarks runtimedyld sandboxir scalaropts selectiondag spirv spirvanalysis spirvcodegen spirvdesc spirvinfo support supportlsp symbolize tablegen target targetparser telemetry textapi textapibinaryreader transformutils vectorize webassembly webassemblyasmparser webassemblycodegen webassemblydesc webassemblydisassembler webassemblyinfo webassemblyutils windowsdriver windowsmanifest x86 x86asmparser x86codegen x86desc x86disassembler x86info x86targetmca xray"
static_libs="-lLLVMWindowsManifest -lLLVMXRay -lLLVMLibDriver -lLLVMDlltoolDriver -lLLVMTelemetry -lLLVMTextAPIBinaryReader -lLLVMCoverage -lLLVMLineEditor -lLLVMX86TargetMCA -lLLVMX86Disassembler -lLLVMX86AsmParser -lLLVMX86CodeGen -lLLVMX86Desc -lLLVMX86Info -lLLVMWebAssemblyDisassembler -lLLVMWebAssemblyAsmParser -lLLVMWebAssemblyCodeGen -lLLVMWebAssemblyUtils -lLLVMWebAssemblyDesc -lLLVMWebAssemblyInfo -lLLVMSPIRVCodeGen -lLLVMSPIRVDesc -lLLVMSPIRVInfo -lLLVMSPIRVAnalysis -lLLVMARMDisassembler -lLLVMARMAsmParser -lLLVMARMCodeGen -lLLVMARMDesc -lLLVMARMUtils -lLLVMARMInfo -lLLVMAArch64Disassembler -lLLVMAArch64AsmParser -lLLVMAArch64CodeGen -lLLVMAArch64Desc -lLLVMAArch64Utils -lLLVMAArch64Info -lLLVMOrcDebugging -lLLVMOrcJIT -lLLVMWindowsDriver -lLLVMMCJIT -lLLVMJITLink -lLLVMInterpreter -lLLVMExecutionEngine -lLLVMRuntimeDyld -lLLVMOrcTargetProcess -lLLVMOrcShared -lLLVMDWP -lLLVMDWARFCFIChecker -lLLVMDebugInfoLogicalView -lLLVMOption -lLLVMObjCopy -lLLVMMCA -lLLVMMCDisassembler -lLLVMDTLTO -lLLVMLTO -lLLVMPlugins -lLLVMPasses -lLLVMHipStdPar -lLLVMCFGuard -lLLVMCoroutines -lLLVMipo -lLLVMVectorize -lLLVMSandboxIR -lLLVMLinker -lLLVMFrontendOpenMP -lLLVMFrontendOffloading -lLLVMObjectYAML -lLLVMFrontendOpenACC -lLLVMFrontendDriver -lLLVMInstrumentation -lLLVMFrontendDirective -lLLVMFrontendAtomic -lLLVMExtensions -lLLVMDWARFLinkerParallel -lLLVMDWARFLinkerClassic -lLLVMDWARFLinker -lLLVMGlobalISel -lLLVMMIRParser -lLLVMAsmPrinter -lLLVMSelectionDAG -lLLVMCodeGen -lLLVMTarget -lLLVMObjCARCOpts -lLLVMCodeGenTypes -lLLVMCGData -lLLVMCAS -lLLVMIRPrinter -lLLVMInterfaceStub -lLLVMFileCheck -lLLVMFuzzMutate -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoBTF -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoCodeView -lLLVMDebugInfoGSYM -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMIRReader -lLLVMAsmParser -lLLVMMC -lLLVMDebugInfoDWARFLowLevel -lLLVMBitReader -lLLVMFrontendHLSL -lLLVMFuzzerCLI -lLLVMABI -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMBinaryFormat -lLLVMTargetParser -lLLVMTableGen -lLLVMSupportLSP -lLLVMSupport -lLLVMDemangle"
shared_libs="-lLLVM-$version"
libs=$static_libs
handle_args () {
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,8 @@ concurrency:
cancel-in-progress: true

env:
LLVM_VERSION: 21.1.8
CLANG_MAJOR: 21
LLVM_VERSION: f23c4bf2
CLANG_MAJOR: 22

jobs:
build-native:
Expand Down
18 changes: 8 additions & 10 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -565,19 +565,17 @@ if(MSVC)
endif()
endif()
if(LDC_WITH_LLD)
if(MSVC)
list(APPEND LDC_LINKERFLAG_LIST LLVMSymbolize.lib)
else()
set(LDC_LINKERFLAG_LIST -lLLVMSymbolize ${LDC_LINKERFLAG_LIST})
if(NOT LDC_LLVM_VER LESS 2200)
if(MSVC)
list(APPEND LDC_LINKERFLAG_LIST LLVMDTLTO.lib)
else()
set(LDC_LINKERFLAG_LIST -lLLVMDTLTO ${LDC_LINKERFLAG_LIST})
endif()
endif()
if(MSVC)
list(APPEND LDC_LINKERFLAG_LIST lldMinGW.lib lldCOFF.lib lldELF.lib lldMachO.lib lldWasm.lib lldCommon.lib)
list(APPEND LDC_LINKERFLAG_LIST lldMinGW.lib lldCOFF.lib lldELF.lib lldMachO.lib lldWasm.lib lldCommon.lib LLVMSymbolize.lib)
else()
set(LDC_LINKERFLAG_LIST -llldMinGW -llldCOFF -llldELF -llldMachO -llldWasm -llldCommon ${LDC_LINKERFLAG_LIST})
endif()
if(APPLE)
# LLD 13.0.0 on Mac needs libxar
list(APPEND LDC_LINKERFLAG_LIST -lxar)
set(LDC_LINKERFLAG_LIST -llldMinGW -llldCOFF -llldELF -llldMachO -llldWasm -llldCommon -lLLVMSymbolize ${LDC_LINKERFLAG_LIST})
endif()
if(${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD")
# FreeBSD LLVM port links to zstd, but does not convey this information via CMake
Expand Down
2 changes: 1 addition & 1 deletion tests/codegen/dcompute_cl_addrspaces.d
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
// FIXME: hits an assertion for LLVM 18: https://github.com/llvm/llvm-project/issues/87315
// UNSUPPORTED: atleast_llvm1800 && atmost_llvm1809

// REQUIRES: target_SPIRV && atleast_llvm1600
// REQUIRES: target_SPIRV
// RUN: %ldc -c -mdcompute-targets=ocl-220 -m64 -mdcompute-file-prefix=addrspace_new -output-ll -output-o %s && FileCheck %s --check-prefix=LL < addrspace_new_ocl220_64.ll \
// RUN: && %llc addrspace_new_ocl220_64.ll -mtriple=spirv64-unknown-unknown -O0 -o - | FileCheck %s --check-prefix=SPT
@compute(CompileFor.deviceOnly) module dcompute_cl_addrspaces;
Expand Down
3 changes: 0 additions & 3 deletions tests/codegen/dcompute_cl_images.d
Original file line number Diff line number Diff line change
@@ -1,8 +1,5 @@
// REQUIRES: target_SPIRV

// FIXME: hits an assertion with SPIRV-LLVM-Translator for LLVM 15, see https://github.com/ldc-developers/ldc/pull/4010#issuecomment-1191820165
// XFAIL: atleast_llvm1500 && atmost_llvm1509

// FIXME: another assertion for LLVM 18: https://github.com/llvm/llvm-project/issues/87315
// UNSUPPORTED: atleast_llvm1800 && atmost_llvm1809

Expand Down
44 changes: 22 additions & 22 deletions tests/codegen/lifetime_local_variables.d
Original file line number Diff line number Diff line change
Expand Up @@ -6,22 +6,22 @@ void opaque(byte* i);

// CHECK-LABEL: define void @foo_array_foo()
void foo_array_foo() {
// CHECK: alloca [400 x i8]
// CHECK: alloca [800 x i8]
// CHECK: %arr = alloca [400 x i8]
// CHECK: %arr1 = alloca [800 x i8]
{
// CHECK: call void @llvm.lifetime.start.p0{{(i8)?}}(i64 immarg 400
// CHECK: call void @llvm.lifetime.start.p0{{(i8)?}}({{.*}} %arr)
byte[400] arr = void;
// CHECK: call void @opaque
opaque(&arr[0]);
// CHECK: call void @llvm.lifetime.end.p0{{(i8)?}}(i64 immarg 400
// CHECK: call void @llvm.lifetime.end.p0{{(i8)?}}({{.*}} %arr)
}

{
// CHECK: call void @llvm.lifetime.start.p0{{(i8)?}}(i64 immarg 800
// CHECK: call void @llvm.lifetime.start.p0{{(i8)?}}({{.*}} %arr1)
byte[800] arr = void;
// CHECK: call void @opaque
opaque(&arr[0]);
// CHECK: call void @llvm.lifetime.end.p0{{(i8)?}}(i64 immarg 800
// CHECK: call void @llvm.lifetime.end.p0{{(i8)?}}({{.*}} %arr1)
}

// CHECK-LABEL: ret void
Expand All @@ -34,16 +34,16 @@ void foo_forloop_foo() {
// This call should appear before lifetime start of while-loop variable.
opaque(&i);
for (byte[13] d; d[0] < 2; d[0]++) {
// CHECK: call void @llvm.lifetime.start.p0{{(i8)?}}(i64 immarg 13
// CHECK: call void @llvm.lifetime.start.p0{{(i8)?}}({{.*}} %d)
// Lifetime should start before initializing the variable
// CHECK: call void @llvm.memset.p0{{(i8)?}}.i{{.*}}13
// CHECK: call void @llvm.lifetime.start.p0{{(i8)?}}(i64 immarg 44
// CHECK: call void @llvm.lifetime.start.p0{{(i8)?}}({{.*}} %arr)
byte[44] arr = void;
// CHECK: call void @opaque
opaque(&arr[0]);
// CHECK: call void @llvm.lifetime.end.p0{{(i8)?}}(i64 immarg 44
// CHECK: call void @llvm.lifetime.end.p0{{(i8)?}}({{.*}} %arr)
// CHECK: endfor:
// CHECK: call void @llvm.lifetime.end.p0{{(i8)?}}(i64 immarg 13
// CHECK: call void @llvm.lifetime.end.p0{{(i8)?}}({{.*}} %d)
}

// CHECK-LABEL: ret void
Expand All @@ -56,15 +56,15 @@ void foo_whileloop_foo() {
// This call should appear before lifetime start of while-loop variable.
opaque(&i);
while (ulong d = 131) {
// CHECK: call void @llvm.lifetime.start.p0{{(i8)?}}(i64 immarg 8
// CHECK: call void @llvm.lifetime.start.p0{{(i8)?}}({{.*}} %d)
// Lifetime should start before initializing the variable
// CHECK: store i64 131
// CHECK: call void @llvm.lifetime.start.p0{{(i8)?}}(i64 immarg 33
// CHECK: call void @llvm.lifetime.start.p0{{(i8)?}}({{.*}} %arr)
byte[33] arr = void;
// CHECK: call void @opaque
opaque(&arr[0]);
// CHECK: call void @llvm.lifetime.end.p0{{(i8)?}}(i64 immarg 33
// CHECK: call void @llvm.lifetime.end.p0{{(i8)?}}(i64 immarg 8
// CHECK: call void @llvm.lifetime.end.p0{{(i8)?}}({{.*}} %arr)
// CHECK: call void @llvm.lifetime.end.p0{{(i8)?}}({{.*}} %d)
}

// CHECK-LABEL: ret void
Expand All @@ -76,25 +76,25 @@ void foo_if_foo() {
// CHECK: call void @opaque
// This call should appear before lifetime start of if-statement condition variable.
opaque(&i);
// CHECK: call void @llvm.lifetime.start.p0{{(i8)?}}(i64 immarg 8
// CHECK: call void @llvm.lifetime.start.p0{{(i8)?}}({{.*}} %d)
// Lifetime should start before initializing the variable
// CHECK: store i64 565
if (ulong d = 565) {
// CHECK: call void @llvm.lifetime.start.p0{{(i8)?}}(i64 immarg 72
// CHECK: call void @llvm.lifetime.start.p0{{(i8)?}}({{.*}} %arr)
byte[72] arr = void;
// CHECK: call void @opaque
opaque(&arr[0]);
// CHECK: call void @llvm.lifetime.end.p0{{(i8)?}}(i64 immarg 72
// CHECK: call void @llvm.lifetime.end.p0{{(i8)?}}({{.*}} %arr)
} else {
// d is out of scope here.
// CHECK: call void @llvm.lifetime.start.p0{{(i8)?}}(i64 immarg 51
// CHECK: call void @llvm.lifetime.start.p0{{(i8)?}}({{.*}} %arr1)
byte[51] arr = void;
// CHECK: call void @opaque
opaque(&arr[0]);
// CHECK: call void @llvm.lifetime.end.p0{{(i8)?}}(i64 immarg 51
// CHECK: call void @llvm.lifetime.end.p0{{(i8)?}}({{.*}} %arr1)
}
// CHECK: endif:
// CHECK: call void @llvm.lifetime.end.p0{{(i8)?}}(i64 immarg 8
// CHECK: call void @llvm.lifetime.end.p0{{(i8)?}}({{.*}} %d)

// CHECK-LABEL: ret void
}
Expand All @@ -111,12 +111,12 @@ void opaque_S(S* i);
// CHECK-LABEL: define void @foo_struct_foo()
void foo_struct_foo() {
{
// CHECK: call void @llvm.lifetime.start.p0{{(i8)?}}(i64 immarg 123
// CHECK: call void @llvm.lifetime.start.p0{{(i8)?}}({{.*}} %s)
S s;
// CHECK: invoke void @opaque_S
opaque_S(&s);
}

// CHECK: call void @llvm.lifetime.end.p0{{(i8)?}}(i64 immarg 123
// CHECK: call void @llvm.lifetime.end.p0{{(i8)?}}({{.*}} %s)
// CHECK-NEXT: ret void
}
4 changes: 0 additions & 4 deletions tests/instrument/xray_link.d
Original file line number Diff line number Diff line change
@@ -1,9 +1,5 @@
// REQUIRES: XRay_RT

// fails on macOS with LLVM 11-16 due to a linker error, see
// https://github.com/llvm/llvm-test-suite/commit/2c3c4a6286d453f763c0245c6536ddd368f0db99
// XFAIL: Darwin && atmost_llvm1609

// RUN: %ldc -fxray-instrument -fxray-instruction-threshold=1 -of=%t%exe %s -vv 2>&1 | FileCheck %s

void foo()
Expand Down
1 change: 1 addition & 0 deletions tests/lit.site.cfg.in
Original file line number Diff line number Diff line change
Expand Up @@ -171,6 +171,7 @@ config.substitutions.append( ('%timetrace2txt', config.timetrace2txt_bin) )
config.substitutions.append( ('%llvm-spirv', os.path.join(config.llvm_tools_dir, 'llvm-spirv')) )
config.substitutions.append( ('%llc', os.path.join(config.llvm_tools_dir, 'llc')) )
config.substitutions.append( ('%runtimedir', config.ldc2_runtime_dir ) )
config.substitutions.append( ('%llvm_version', str(config.llvm_version)) )

# Add platform-dependent file extension substitutions
if (platform.system() == 'Windows'):
Expand Down
2 changes: 1 addition & 1 deletion tests/plugins/addFuncEntryCall/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ ROOT_DIR := $(dir $(MAKEFILE_PATH))
LLVM_CONFIG ?= llvm-config

CXXFLAGS ?= -O3
CXXFLAGS += $(shell $(LLVM_CONFIG) --cxxflags) -fno-rtti -fpic
CXXFLAGS += $(shell $(LLVM_CONFIG) --cxxflags) -fno-rtti -fpic -DLDC_LLVM_VER=$(LDC_LLVM_VER)
# Remove all warning flags (they may or may not be supported by the compiler)
CXXFLAGS := $(filter-out -W%,$(CXXFLAGS))
CXXFLAGS := $(filter-out -fcolor-diagnostics,$(CXXFLAGS))
Expand Down
2 changes: 1 addition & 1 deletion tests/plugins/addFuncEntryCall/testPlugin.d
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
// REQUIRES: Plugins

// RUN: %gnu_make -f %S/Makefile
// RUN: %gnu_make -f %S/Makefile LDC_LLVM_VER=%llvm_version
// RUN: %ldc -c -output-ll -plugin=./addFuncEntryCallPass.so -of=%t.ll %s
// RUN: FileCheck %s < %t.ll

Expand Down
Loading
Loading