Skip to content

Commit

Permalink
Merge pull request #4772 from liushuyu/llvm-19
Browse files Browse the repository at this point in the history
Add LLVM 19.1.x support for LDC
  • Loading branch information
kinke authored Nov 27, 2024
2 parents 00a4493 + 3f6cf2e commit 64dd9c0
Show file tree
Hide file tree
Showing 38 changed files with 11,073 additions and 38 deletions.
2 changes: 1 addition & 1 deletion .cirrus.yml
Original file line number Diff line number Diff line change
Expand Up @@ -202,7 +202,7 @@ install_ubuntu_prerequisites_template: &INSTALL_UBUNTU_PREREQUISITES_TEMPLATE
environment:
CIRRUS_CLONE_DEPTH: 50
HOST_LDC_VERSION: 1.31.0
LLVM_VERSION: 18.1.8
LLVM_VERSION: 19.1.3
GITHUB_TOKEN: ENCRYPTED[0955bd48c8d4e5391446fc0149d0719ad0b63df27ec9e6c180a5730a5b10dc7f28f09d1383423db158d21380ee2b022a]

task:
Expand Down
2 changes: 1 addition & 1 deletion .github/actions/3-build-cross/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ inputs:
default: false
android_ndk_version:
required: false
default: r27
default: r27c
android_api_level:
required: false
default: 29
Expand Down
8 changes: 4 additions & 4 deletions .github/actions/3-build-cross/android-llvm-config.in
Original file line number Diff line number Diff line change
Expand Up @@ -52,17 +52,17 @@ 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 codegen codegentypes core coroutines coverage \
asmparser asmprinter binaryformat bitreader bitstreamreader bitwriter cfguard codegen codegendata codegentypes core coroutines coverage \
debuginfobtf debuginfocodeview debuginfodwarf debuginfogsym debuginfologicalview debuginfomsf debuginfopdb demangle dlltooldriver dwarflinker dwarflinkerclassic dwarflinkerparallel dwp \
engine executionengine extensions filecheck 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 scalaropts selectiondag spirv spirvcodegen spirvdesc spirvinfo support symbolize tablegen target targetparser textapi \
passes profiledata remarks runtimedyld sandboxir scalaropts selectiondag spirv spirvanalysis spirvcodegen spirvdesc spirvinfo support symbolize tablegen target targetparser 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 -lLLVMTextAPIBinaryReader -lLLVMCoverage -lLLVMLineEditor \
-lLLVMSPIRVCodeGen -lLLVMSPIRVDesc -lLLVMSPIRVInfo \
-lLLVMSandboxIR -lLLVMSPIRVCodeGen -lLLVMSPIRVDesc -lLLVMSPIRVInfo -lLLVMSPIRVAnalysis \
-lLLVMX86TargetMCA -lLLVMX86Disassembler -lLLVMX86AsmParser -lLLVMX86CodeGen -lLLVMX86Desc -lLLVMX86Info -lLLVMWebAssemblyDisassembler \
-lLLVMWebAssemblyAsmParser -lLLVMWebAssemblyCodeGen -lLLVMWebAssemblyUtils -lLLVMWebAssemblyDesc -lLLVMWebAssemblyInfo -lLLVMARMDisassembler \
-lLLVMARMAsmParser -lLLVMARMCodeGen -lLLVMARMDesc -lLLVMARMUtils -lLLVMARMInfo -lLLVMAArch64Disassembler \
Expand All @@ -71,7 +71,7 @@ static_libs="-lLLVMWindowsManifest -lLLVMXRay -lLLVMLibDriver -lLLVMDlltoolDrive
-lLLVMDWP -lLLVMDebugInfoLogicalView -lLLVMDebugInfoGSYM -lLLVMOption -lLLVMObjectYAML -lLLVMObjCopy -lLLVMMCA \
-lLLVMMCDisassembler -lLLVMLTO -lLLVMPasses -lLLVMHipStdPar -lLLVMCFGuard -lLLVMCoroutines -lLLVMipo \
-lLLVMVectorize -lLLVMLinker -lLLVMInstrumentation -lLLVMFrontendOpenMP -lLLVMFrontendOffloading -lLLVMFrontendOpenACC -lLLVMFrontendHLSL -lLLVMFrontendDriver -lLLVMExtensions \
-lLLVMDWARFLinkerParallel -lLLVMDWARFLinkerClassic -lLLVMDWARFLinker -lLLVMGlobalISel -lLLVMMIRParser -lLLVMAsmPrinter -lLLVMSelectionDAG \
-lLLVMDWARFLinkerParallel -lLLVMDWARFLinkerClassic -lLLVMDWARFLinker -lLLVMCodeGenData -lLLVMGlobalISel -lLLVMMIRParser -lLLVMAsmPrinter -lLLVMSelectionDAG \
-lLLVMCodeGen -lLLVMTarget -lLLVMObjCARCOpts -lLLVMCodeGenTypes -lLLVMIRPrinter -lLLVMInterfaceStub -lLLVMFileCheck -lLLVMFuzzMutate \
-lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis \
-lLLVMProfileData -lLLVMSymbolize -lLLVMDebugInfoBTF -lLLVMDebugInfoPDB -lLLVMDebugInfoMSF -lLLVMDebugInfoDWARF -lLLVMObject -lLLVMTextAPI -lLLVMMCParser -lLLVMIRReader -lLLVMAsmParser -lLLVMMC -lLLVMDebugInfoCodeView \
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ concurrency:

env:
CLANG_VERSION: 15.0.6
LLVM_VERSION: 18.1.8
LLVM_VERSION: 19.1.3

jobs:
build-native:
Expand Down Expand Up @@ -97,7 +97,7 @@ jobs:
- name: Install prerequisites
uses: ./.github/actions/1-setup
with:
clang_version: ${{ runner.os == 'Windows' && '18.1.8' || env.CLANG_VERSION }}
clang_version: ${{ runner.os == 'Windows' && '19.1.3' || env.CLANG_VERSION }}
llvm_version: ${{ matrix.llvm_version || env.LLVM_VERSION }}
arch: ${{ matrix.arch }}
- name: Build bootstrap LDC
Expand Down
6 changes: 4 additions & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,19 +2,21 @@

#### Big news
- Frontend, druntime and Phobos are at version [2.110.0](https://dlang.org/changelog/2.110.0.html). (#4707, #4737, #4749, #4768, #4784)
- LLVM for prebuilt packages bumped to v18.1.8 (incl. macOS arm64). (#4712)
- Android: NDK for prebuilt package bumped from r26d to r27. (#4711)
- Support for [LLVM 19](https://releases.llvm.org/19.1.0/docs/ReleaseNotes.html); LLVM for prebuilt packages bumped to v19.1.3 (incl. macOS arm64). (#4712, #4735, #4763, #4772)
- Android: NDK for prebuilt package bumped from r26d to r27c. (#4711, #4772)
- ldc2.conf: %%ldcconfigpath%% placeholder added - specifies the directory where current configuration file is located. (#4717)
- Add support for building against a system copy of zlib through `-DPHOBOS_SYSTEM_ZLIB=ON`. (#4742)
- Emscripten: The compiler now mimicks a musl Linux platform wrt. extra predefined versions (`linux`, `Posix`, `CRuntime_Musl`, `CppRuntime_LLVM`). (#4750)

#### Platform support
- Supports LLVM 15 - 19.

#### Bug fixes
- Fix potentially corrupt IR layouts for bit fields. (#4646, #4708)
- Fix potentially corrupt IR layouts for explicitly under-aligned aggregates, a regression introduced in LDC v1.31. (#4734, #4736)
- ELF: Emit (most) instantiated symbols in COMDATs for proper link-time culling. (#3589, #4748)
- Support scalar right-hand-sides when bit-shifting vectors. (#3606, #4781)
- Fix LLVM data layout for the SPIR-V target used in D-Compute on LLVM 19+. (#4772)

# LDC 1.39.0 (2024-07-04)

Expand Down
12 changes: 5 additions & 7 deletions cmake/Modules/FindLLVM.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,8 @@
# We also want an user-specified LLVM_ROOT_DIR to take precedence over the
# system default locations such as /usr/local/bin. Executing find_program()
# multiples times is the approach recommended in the docs.
set(llvm_config_names llvm-config-18.1 llvm-config181 llvm-config-18
set(llvm_config_names llvm-config-19.1 llvm-config191 llvm-config-19
llvm-config-18.1 llvm-config181 llvm-config-18
llvm-config-17.0 llvm-config170 llvm-config-17
llvm-config-16.0 llvm-config160 llvm-config-16
llvm-config-15.0 llvm-config150 llvm-config-15
Expand All @@ -46,9 +47,11 @@ if(APPLE)
# extra fallbacks for MacPorts & Homebrew
find_program(LLVM_CONFIG
NAMES ${llvm_config_names}
PATHS /opt/local/libexec/llvm-18/bin /opt/local/libexec/llvm-17/bin
PATHS /opt/local/libexec/llvm-19/bin
/opt/local/libexec/llvm-18/bin /opt/local/libexec/llvm-17/bin
/opt/local/libexec/llvm-16/bin /opt/local/libexec/llvm-15/bin
/opt/local/libexec/llvm/bin
/usr/local/opt/llvm@19/bin
/usr/local/opt/llvm@18/bin /usr/local/opt/llvm@17/bin
/usr/local/opt/llvm@16/bin /usr/local/opt/llvm@15/bin
/usr/local/opt/llvm/bin
Expand Down Expand Up @@ -138,11 +141,6 @@ else()
string(REPLACE "-llibxml2.tbd" "-lxml2" LLVM_LDFLAGS ${LLVM_LDFLAGS})
endif()

if(${LLVM_VERSION_MAJOR} LESS "15")
# Versions below 15.0 do not support component windowsdriver
list(REMOVE_ITEM LLVM_FIND_COMPONENTS "windowsdriver")
endif()

llvm_set(LIBRARY_DIRS libdir true)
llvm_set_libs(LIBRARIES libs "${LLVM_FIND_COMPONENTS}")
# LLVM bug: llvm-config --libs tablegen returns -lLLVM-3.8.0
Expand Down
2 changes: 1 addition & 1 deletion gen/arrays.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1071,7 +1071,7 @@ static void emitRangeErrorImpl(IRState *irs, const Loc &loc,
DtoCAssert(module, loc, DtoConstCString(cAssertMsg));
break;
case CHECKACTION_halt:
irs->ir->CreateCall(GET_INTRINSIC_DECL(trap), {});
irs->ir->CreateCall(GET_INTRINSIC_DECL(trap, {}), {});
irs->ir->CreateUnreachable();
break;
case CHECKACTION_context:
Expand Down
11 changes: 11 additions & 0 deletions gen/dcompute/targetOCL.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
#include <string>

// from SPIRVInternal.h
#if LDC_LLVM_VER < 1900
#define SPIR_TARGETTRIPLE32 "spir-unknown-unknown"
#define SPIR_TARGETTRIPLE64 "spir64-unknown-unknown"
#define SPIR_DATALAYOUT32 \
Expand All @@ -38,6 +39,16 @@
"-v32:32:32-v48:64:64-v64:64:64-v96:128:128" \
"-v128:128:128-v192:256:256-v256:256:256" \
"-v512:512:512-v1024:1024:1024"
#else
#define SPIR_TARGETTRIPLE32 "spirv-unknown-unknown"
#define SPIR_TARGETTRIPLE64 "spirv64-unknown-unknown"
#define SPIR_DATALAYOUT32 \
"e-p:32:32-i64:64-v16:16-v24:32-v32:32-v48:64" \
"-v96:128-v192:256-v256:256-v512:512-v1024:1024-G1"
#define SPIR_DATALAYOUT64 \
"e-i64:64-v16:16-v24:32-v32:32-v48:64-v96:128" \
"-v192:256-v256:256-v512:512-v1024:1024-G1"
#endif

using namespace dmd;

Expand Down
7 changes: 5 additions & 2 deletions gen/dibuilder.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1137,10 +1137,13 @@ void DIBuilder::EmitValue(llvm::Value *val, VarDeclaration *vd) {
if (!mustEmitFullDebugInfo() || !debugVariable)
return;

llvm::Instruction *instr = DBuilder.insertDbgValueIntrinsic(
auto instr = DBuilder.insertDbgValueIntrinsic(
val, debugVariable, DBuilder.createExpression(),
IR->ir->getCurrentDebugLocation(), IR->scopebb());
instr->setDebugLoc(IR->ir->getCurrentDebugLocation());
#if LDC_LLVM_VER >= 1900
llvm::cast<llvm::DbgRecord *>
#endif
(instr)->setDebugLoc(IR->ir->getCurrentDebugLocation());
}

void DIBuilder::EmitLocalVariable(llvm::Value *ll, VarDeclaration *vd,
Expand Down
4 changes: 2 additions & 2 deletions gen/functions.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1254,7 +1254,7 @@ void DtoDefineFunction(FuncDeclaration *fd, bool linkageAvailableExternally) {
// initialize _argptr with a call to the va_start intrinsic
DLValue argptrVal(tvalist, argptrMem);
LLValue *llAp = gABI->prepareVaStart(&argptrVal);
llvm::CallInst::Create(GET_INTRINSIC_DECL(vastart), llAp, "",
llvm::CallInst::Create(GET_INTRINSIC_DECL(vastart, llAp->getType()), llAp, "",
gIR->scopebb());

// copy _arguments to a memory location
Expand All @@ -1265,7 +1265,7 @@ void DtoDefineFunction(FuncDeclaration *fd, bool linkageAvailableExternally) {
auto *vaendBB = llvm::BasicBlock::Create(gIR->context(), "vaend", func);
const auto savedInsertPoint = gIR->saveInsertPoint();
gIR->ir->SetInsertPoint(vaendBB);
gIR->ir->CreateCall(GET_INTRINSIC_DECL(vaend), llAp);
gIR->ir->CreateCall(GET_INTRINSIC_DECL(vaend, llAp->getType()), llAp);
funcGen.scopes.pushCleanup(vaendBB, gIR->scopebb());
}
}
Expand Down
7 changes: 6 additions & 1 deletion gen/llvm.h
Original file line number Diff line number Diff line change
Expand Up @@ -35,8 +35,13 @@ using llvm::APFloat;
using llvm::APInt;
using llvm::IRBuilder;

#define GET_INTRINSIC_DECL(_X) \
#if LDC_LLVM_VER >= 1900
#define GET_INTRINSIC_DECL(_X, _TY) \
(llvm::Intrinsic::getDeclaration(&gIR->module, llvm::Intrinsic::_X, _TY))
#else
#define GET_INTRINSIC_DECL(_X, _TY) \
(llvm::Intrinsic::getDeclaration(&gIR->module, llvm::Intrinsic::_X))
#endif

// shortcuts for the common llvm types

Expand Down
9 changes: 9 additions & 0 deletions gen/optimizer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -308,6 +308,9 @@ static llvm::Optional<PGOOptions> getPGOOptions() {
"" /*MemoryProfileUsePath*/, llvm::vfs::getRealFileSystem(),
#endif
PGOOptions::PGOAction::IRInstr, PGOOptions::CSPGOAction::NoCSAction,
#if LDC_LLVM_VER >= 1900
PGOOptions::ColdFuncOpt::Default,
#endif
debugInfoForProfiling, pseudoProbeForProfiling);
} else if (opts::isUsingIRBasedPGOProfile()) {
return PGOOptions(
Expand All @@ -316,6 +319,9 @@ static llvm::Optional<PGOOptions> getPGOOptions() {
"" /*MemoryProfileUsePath*/, llvm::vfs::getRealFileSystem(),
#endif
PGOOptions::PGOAction::IRUse, PGOOptions::CSPGOAction::NoCSAction,
#if LDC_LLVM_VER >= 1900
PGOOptions::ColdFuncOpt::Default,
#endif
debugInfoForProfiling, pseudoProbeForProfiling);
} else if (opts::isUsingSampleBasedPGOProfile()) {
return PGOOptions(
Expand All @@ -324,6 +330,9 @@ static llvm::Optional<PGOOptions> getPGOOptions() {
"" /*MemoryProfileUsePath*/, llvm::vfs::getRealFileSystem(),
#endif
PGOOptions::PGOAction::SampleUse, PGOOptions::CSPGOAction::NoCSAction,
#if LDC_LLVM_VER >= 1900
PGOOptions::ColdFuncOpt::Default,
#endif
debugInfoForProfiling, pseudoProbeForProfiling);
}
#if LDC_LLVM_VER < 1600
Expand Down
4 changes: 2 additions & 2 deletions gen/pgo_ASTbased.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -909,7 +909,7 @@ void CodeGenPGO::emitCounterIncrement(const RootObject *S) const {
assert(counter_it != (*RegionCounterMap).end() &&
"Statement not found in PGO counter map!");
unsigned counter = counter_it->second;
gIR->ir->CreateCall(GET_INTRINSIC_DECL(instrprof_increment),
gIR->ir->CreateCall(GET_INTRINSIC_DECL(instrprof_increment, {}),
{FuncNameVar, gIR->ir->getInt64(FunctionHash),
gIR->ir->getInt32(NumRegionCounters),
gIR->ir->getInt32(counter)});
Expand Down Expand Up @@ -1118,7 +1118,7 @@ void CodeGenPGO::valueProfile(uint32_t valueKind, llvm::Instruction *valueSite,
llvm::Value *Args[5] = {FuncNameVar, gIR->ir->getInt64(FunctionHash), value,
gIR->ir->getInt32(valueKind),
gIR->ir->getInt32(NumValueSites[valueKind])};
gIR->ir->CreateCall(GET_INTRINSIC_DECL(instrprof_value_profile), Args);
gIR->ir->CreateCall(GET_INTRINSIC_DECL(instrprof_value_profile, {}), Args);

gIR->ir->restoreIP(savedInsertPoint);

Expand Down
2 changes: 1 addition & 1 deletion gen/runtime.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -887,7 +887,7 @@ static void emitInstrumentationFn(const char *name) {

// Grab the address of the calling function
auto *caller =
gIR->ir->CreateCall(GET_INTRINSIC_DECL(returnaddress), DtoConstInt(0));
gIR->ir->CreateCall(GET_INTRINSIC_DECL(returnaddress, {}), DtoConstInt(0));
auto callee = gIR->topfunc();

gIR->ir->CreateCall(fn, {callee, caller});
Expand Down
4 changes: 2 additions & 2 deletions gen/tocall.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -273,7 +273,7 @@ bool DtoLowerMagicIntrinsic(IRState *p, FuncDeclaration *fndecl, CallExp *e,
gABI->vaCopy(ap, &argptr);
} else {
LLValue *llAp = gABI->prepareVaStart(ap);
p->ir->CreateCall(GET_INTRINSIC_DECL(vastart), llAp, "");
p->ir->CreateCall(GET_INTRINSIC_DECL(vastart, llAp->getType()), llAp, "");
}
result = nullptr;
return true;
Expand Down Expand Up @@ -321,7 +321,7 @@ bool DtoLowerMagicIntrinsic(IRState *p, FuncDeclaration *fndecl, CallExp *e,
DLValue *ap = toElem((*e->arguments)[0])->isLVal(); // va_list
assert(ap);
LLValue *llAp = gABI->prepareVaArg(ap);
p->ir->CreateCall(GET_INTRINSIC_DECL(vaend), llAp);
p->ir->CreateCall(GET_INTRINSIC_DECL(vaend, llAp->getType()), llAp);
result = nullptr;
return true;
}
Expand Down
6 changes: 3 additions & 3 deletions gen/toir.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -809,7 +809,7 @@ class ToElemVisitor : public Visitor {
// access to the type of the class to do a GEP).
auto vtable = DtoLoad(dfnval->vtable->getType(), dfnval->vthis);
auto cmp = p->ir->CreateICmpEQ(vtable, dfnval->vtable);
p->ir->CreateCall(GET_INTRINSIC_DECL(assume), {cmp});
p->ir->CreateCall(GET_INTRINSIC_DECL(assume, {}), {cmp});
}

if (delayedDtorVar) {
Expand Down Expand Up @@ -1766,7 +1766,7 @@ class ToElemVisitor : public Visitor {
p->ir->SetInsertPoint(failedbb);

if (global.params.checkAction == CHECKACTION_halt) {
p->ir->CreateCall(GET_INTRINSIC_DECL(trap), {});
p->ir->CreateCall(GET_INTRINSIC_DECL(trap, {}), {});
p->ir->CreateUnreachable();
} else {
/* DMD Bugzilla 8360: If the condition is evaluated to true,
Expand Down Expand Up @@ -1923,7 +1923,7 @@ class ToElemVisitor : public Visitor {
IF_LOG Logger::print("HaltExp::toElem: %s\n", e->toChars());
LOG_SCOPE;

p->ir->CreateCall(GET_INTRINSIC_DECL(trap), {});
p->ir->CreateCall(GET_INTRINSIC_DECL(trap, {}), {});
p->ir->CreateUnreachable();

// this terminated the basicblock, start a new one
Expand Down
2 changes: 1 addition & 1 deletion gen/trycatchfinally.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -730,7 +730,7 @@ llvm::BasicBlock *TryCatchFinallyScopes::emitLandingPad() {
// "Call" llvm.eh.typeid.for, which gives us the eh selector value to
// compare the landing pad selector value with.
llvm::Value *ehTypeId = irs.ir->CreateCall(
GET_INTRINSIC_DECL(eh_typeid_for), cb.classInfoPtr);
GET_INTRINSIC_DECL(eh_typeid_for, cb.classInfoPtr->getType()), cb.classInfoPtr);

// Compare the selector value from the unwinder against the expected
// one and branch accordingly.
Expand Down
2 changes: 2 additions & 0 deletions runtime/druntime/src/ldc/intrinsics.di
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,8 @@ else version (LDC_LLVM_1600) enum LLVM_version = 1600;
else version (LDC_LLVM_1700) enum LLVM_version = 1700;
else version (LDC_LLVM_1800) enum LLVM_version = 1800;
else version (LDC_LLVM_1801) enum LLVM_version = 1801;
else version (LDC_LLVM_1901) enum LLVM_version = 1901;
else version (LDC_LLVM_2000) enum LLVM_version = 2000;
else static assert(false, "LDC LLVM version not supported");

enum LLVM_atleast(int major) = (LLVM_version >= major * 100);
Expand Down
2 changes: 1 addition & 1 deletion tests/codegen/simd_alignment.d
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ S17237 globalStruct;
// CHECK-LABEL: define <8 x i32> @foo(
extern(C) int8 foo(S17237* s)
{
// CHECK: %[[GEP:[0-9]]] = getelementptr {{.*}}S17237, ptr %s_arg
// CHECK: %[[GEP:[0-9]]] = getelementptr {{(.*S17237|inbounds i8)}}, ptr %s_arg
// CHECK: = load <8 x i32>, ptr %[[GEP]], align 32
return s.c;
}
6 changes: 3 additions & 3 deletions tests/codegen/vastart_vaend_gh1744.d
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ module mod;
// OPT3-LABEL: define {{.*}} @{{.*}}void_three_return_paths
void void_three_return_paths(int a, ...)
{
// OPT3: call void @llvm.va_start({{.*}} %[[VA:[_0-9a-zA-Z]+]])
// OPT3: call void @llvm.va_start{{(\.p0)?}}({{.*}} %[[VA:[_0-9a-zA-Z]+]])
// OPT3-NOT: return_two
return_two();

Expand All @@ -24,8 +24,8 @@ void void_three_return_paths(int a, ...)

// There are two control paths (normal return, exception resume) that
// should call va_end.
// OPT3: call void @llvm.va_end({{.*}} %[[VA]])
// OPT3: call void @llvm.va_end({{.*}} %[[VA]])
// OPT3: call void @llvm.va_end{{(\.p0)?}}({{.*}} %[[VA]])
// OPT3: call void @llvm.va_end{{(\.p0)?}}({{.*}} %[[VA]])
}

// OPT3-LABEL: define {{.*}} @{{.*}}return_two
Expand Down
2 changes: 1 addition & 1 deletion tests/codegen/xtensa.d
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
// REQUIRES: target_Xtensa

// RUN: %ldc -mtriple=xtensa -betterC
// RUN: %ldc -mtriple=xtensa -betterC %s -c -of=%t.o

version (Xtensa) {} else static assert(0);

2 changes: 1 addition & 1 deletion tests/lit.site.cfg.in
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ config.available_features.add("llvm%d" % config.llvm_version)
# config.llvm_version: 309, 400, 500, ...
# plusoneable_llvmversion: 39, 40, 50, ...
plusoneable_llvmversion = config.llvm_version // 10 + config.llvm_version%10
for version in range(140, plusoneable_llvmversion+1):
for version in range(150, plusoneable_llvmversion+1):
config.available_features.add("atleast_llvm%d0%d" % (version//10, version%10))
for version in range(plusoneable_llvmversion, 201):
config.available_features.add("atmost_llvm%d0%d" % (version//10, version%10))
Expand Down
Loading

0 comments on commit 64dd9c0

Please sign in to comment.