Skip to content

Commit faa9bae

Browse files
committed
Raise min LLVM version to 6.0
1 parent 1494343 commit faa9bae

File tree

89 files changed

+201
-7208
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

89 files changed

+201
-7208
lines changed

.travis.yml

+5-22
Original file line numberDiff line numberDiff line change
@@ -7,30 +7,21 @@ git:
77
matrix:
88
include:
99
- os: linux
10-
d: ldc
10+
d: ldc-beta
1111
env: LLVM_VERSION=9.0.0 OPTS="-DBUILD_SHARED_LIBS=ON -DRT_SUPPORT_SANITIZERS=ON"
1212
- os: linux
13-
d: ldc-beta
13+
d: ldc-0.17.6
1414
env: LLVM_VERSION=8.0.0 OPTS="-DBUILD_SHARED_LIBS=OFF"
1515
# FIXME: strange crashes, possibly due to C++ compiler mismatch
1616
#- os: linux
1717
# d: ldc
1818
# env: LLVM_VERSION=7.0.1 OPTS="-DBUILD_SHARED_LIBS=ON"
1919
- os: linux
20-
d: ldc-beta
21-
env: LLVM_VERSION=6.0.1 OPTS="-DBUILD_SHARED_LIBS=OFF -DLIB_SUFFIX=64 -DRT_SUPPORT_SANITIZERS=ON"
22-
- os: linux
23-
d: ldc
24-
env: LLVM_VERSION=5.0.2 OPTS="-DBUILD_SHARED_LIBS=ON -DLIB_SUFFIX=64"
25-
- os: linux
26-
d: ldc-0.17.6
27-
env: LLVM_VERSION=4.0.0 OPTS="-DLIB_SUFFIX=64"
28-
- os: linux
29-
d: dmd
30-
env: LLVM_VERSION=3.9.1
20+
d: dmd-beta
21+
env: LLVM_VERSION=6.0.1 OPTS="-DLIB_SUFFIX=64"
3122
- os: osx
3223
osx_image: xcode10.3
33-
d: dmd
24+
d: dmd-beta
3425
env: LLVM_VERSION=10.0.0 OPTS="-DBUILD_SHARED_LIBS=ON -DRT_SUPPORT_SANITIZERS=ON"
3526
- os: osx
3627
osx_image: xcode10.3
@@ -45,9 +36,6 @@ cache:
4536
- llvm-7.0.1
4637
- llvm-7.0.0
4738
- llvm-6.0.1
48-
- llvm-5.0.2
49-
- llvm-4.0.0
50-
- llvm-3.9.1
5139

5240
addons:
5341
apt:
@@ -134,11 +122,6 @@ script:
134122
# dmd-testsuite-debug only to reduce time-outs
135123
DMD_TESTSUITE_MAKE_ARGS=-j3 ctest -V -R "build-run-dmd-testsuite|dmd-testsuite-debug"
136124
else
137-
if [ "$LLVM_VERSION" = "3.9.1" ]; then
138-
# FIXME: assertion failure for runnable/mars1.d with DMD/LLVM 3.9.1
139-
# job (debug only, release passes)
140-
rm tests/d2/dmd-testsuite/runnable/mars1.d
141-
fi
142125
DMD_TESTSUITE_MAKE_ARGS=-j3 ctest -V -R "dmd-testsuite"
143126
fi
144127
# Run defaultlib unittests & druntime stand-alone tests

CMakeLists.txt

+21-58
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ endfunction()
3131
# Locate LLVM.
3232
#
3333

34-
find_package(LLVM 3.9 REQUIRED
34+
find_package(LLVM 6.0 REQUIRED
3535
all-targets analysis asmparser asmprinter bitreader bitwriter codegen core
3636
debuginfodwarf debuginfomsf debuginfopdb demangle
3737
instcombine ipo instrumentation irreader libdriver linker lto mc
@@ -308,13 +308,10 @@ if (UNIX AND NOT "${LLVM_LDFLAGS}" STREQUAL "")
308308
endif()
309309
if(MSVC)
310310
separate_arguments(LLVM_LDFLAGS WINDOWS_COMMAND "${LLVM_LDFLAGS}")
311-
# LLVM 5.0+ requires diaguids.lib from MS Debug Interface Access SDK
312-
if(NOT (LDC_LLVM_VER LESS 500))
313-
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
314-
list(APPEND LLVM_LDFLAGS "$ENV{VSINSTALLDIR}DIA SDK\\lib\\amd64\\diaguids.lib")
315-
else()
316-
list(APPEND LLVM_LDFLAGS "$ENV{VSINSTALLDIR}DIA SDK\\lib\\diaguids.lib")
317-
endif()
311+
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
312+
list(APPEND LLVM_LDFLAGS "$ENV{VSINSTALLDIR}DIA SDK\\lib\\amd64\\diaguids.lib")
313+
else()
314+
list(APPEND LLVM_LDFLAGS "$ENV{VSINSTALLDIR}DIA SDK\\lib\\diaguids.lib")
318315
endif()
319316
else()
320317
separate_arguments(LLVM_LDFLAGS UNIX_COMMAND "${LLVM_LDFLAGS}")
@@ -453,10 +450,7 @@ include(HandleLTOPGOBuildOptions)
453450
set(LDC_DYNAMIC_COMPILE "AUTO" CACHE STRING "Support dynamic compilation (ON|OFF). Enabled by default.")
454451
option(LDC_DYNAMIC_COMPILE_USE_CUSTOM_PASSES "Use custom LDC passes in jit" ON)
455452
if(LDC_DYNAMIC_COMPILE STREQUAL "AUTO")
456-
set(LDC_DYNAMIC_COMPILE OFF)
457-
if (NOT (LDC_LLVM_VER LESS 500))
458-
set(LDC_DYNAMIC_COMPILE ON)
459-
endif()
453+
set(LDC_DYNAMIC_COMPILE ON)
460454
endif()
461455
message(STATUS "Building LDC with dynamic compilation support: ${LDC_DYNAMIC_COMPILE} (LDC_DYNAMIC_COMPILE=${LDC_DYNAMIC_COMPILE})")
462456
if(LDC_DYNAMIC_COMPILE)
@@ -493,8 +487,7 @@ endif()
493487
# LLD integration (requires headers & libs)
494488
#
495489
if(NOT DEFINED LDC_WITH_LLD)
496-
if(((LDC_LLVM_VER LESS 600) AND (EXISTS "${LLVM_INCLUDE_DIRS}/lld/Driver/Driver.h")) OR
497-
((NOT LDC_LLVM_VER LESS 600) AND (EXISTS "${LLVM_INCLUDE_DIRS}/lld/Common/Driver.h")))
490+
if(EXISTS "${LLVM_INCLUDE_DIRS}/lld/Common/Driver.h")
498491
set(LDC_WITH_LLD ON)
499492
else()
500493
set(LDC_WITH_LLD OFF)
@@ -595,22 +588,13 @@ if(LDC_WITH_LLD)
595588
set(LDC_LINKERFLAG_LIST -lLLVMSymbolize ${LDC_LINKERFLAG_LIST})
596589
endif()
597590
endif()
598-
# ELF, Mach-O, MinGW and WebAssembly formats supported since LLD 6.0.0, otherwise just Windows COFF
599-
if(NOT (LDC_LLVM_VER LESS 600))
600-
if(MSVC)
601-
list(APPEND LDC_LINKERFLAG_LIST lldDriver.lib lldMinGW.lib lldCOFF.lib lldELF.lib lldMachO.lib lldWasm.lib lldYAML.lib lldReaderWriter.lib lldCommon.lib lldCore.lib)
602-
else()
603-
set(LDC_LINKERFLAG_LIST -llldDriver -llldMinGW -llldCOFF -llldELF -llldMachO -llldWasm -llldYAML -llldReaderWriter -llldCommon -llldCore ${LDC_LINKERFLAG_LIST})
604-
endif()
605-
if(APPLE) # bug, should be fixed in LLVM 6.0.1
606-
list(APPEND LDC_LINKERFLAG_LIST -lxml2)
607-
endif()
591+
if(MSVC)
592+
list(APPEND LDC_LINKERFLAG_LIST lldDriver.lib lldMinGW.lib lldCOFF.lib lldELF.lib lldMachO.lib lldWasm.lib lldYAML.lib lldReaderWriter.lib lldCommon.lib lldCore.lib)
608593
else()
609-
if(MSVC)
610-
list(APPEND LDC_LINKERFLAG_LIST lldCOFF.lib lldCore.lib lldDriver.lib)
611-
else()
612-
set(LDC_LINKERFLAG_LIST -llldCOFF -llldCore -llldDriver ${LDC_LINKERFLAG_LIST})
613-
endif()
594+
set(LDC_LINKERFLAG_LIST -llldDriver -llldMinGW -llldCOFF -llldELF -llldMachO -llldWasm -llldYAML -llldReaderWriter -llldCommon -llldCore ${LDC_LINKERFLAG_LIST})
595+
endif()
596+
if(APPLE) # bug, should be fixed in LLVM 6.0.1
597+
list(APPEND LDC_LINKERFLAG_LIST -lxml2)
614598
endif()
615599
endif()
616600

@@ -730,14 +714,14 @@ function(copy_and_rename_file source_path target_path)
730714
endfunction()
731715

732716
#
733-
# Locate LLVM's LTO binary and use it (LLVM >= 3.9)
717+
# Locate LLVM's LTO binary and use it
734718
#
735719
if(APPLE)
736720
set(LDC_INSTALL_LTOPLUGIN_DEFAULT ON)
737721
else()
738722
set(LDC_INSTALL_LTOPLUGIN_DEFAULT OFF)
739723
endif()
740-
set(LDC_INSTALL_LTOPLUGIN ${LDC_INSTALL_LTOPLUGIN_DEFAULT} CACHE BOOL "Copy/install the LTO plugin from the LLVM package when available (LLVM >= 3.9).")
724+
set(LDC_INSTALL_LTOPLUGIN ${LDC_INSTALL_LTOPLUGIN_DEFAULT} CACHE BOOL "Copy/install the LTO plugin from the LLVM package when available.")
741725
if (LDC_INSTALL_LTOPLUGIN)
742726
if(APPLE)
743727
set(LLVM_LTO_BINARY ${LLVM_LIBRARY_DIRS}/libLTO.dylib)
@@ -783,16 +767,13 @@ include(CheckTypeSize)
783767
check_type_size(void* ptr_size)
784768
if (LDC_INSTALL_LLVM_RUNTIME_LIBS)
785769
# Locate LLVM sanitizer runtime libraries, and copy them to our lib folder
786-
# Note: libFuzzer is part of compiler-rt version >= 6.0, but was part of LLVM =< 5.0
787770

788771
if(APPLE)
789772
copy_compilerrt_lib("darwin/libclang_rt.asan_osx_dynamic.dylib" "libldc_rt.asan.dylib" TRUE)
790773
copy_compilerrt_lib("darwin/libclang_rt.osx.a" "libldc_rt.builtins.a" FALSE)
791774
copy_compilerrt_lib("darwin/libclang_rt.profile_osx.a" "libldc_rt.profile.a" FALSE)
792-
if(NOT (LDC_LLVM_VER LESS 600))
793-
copy_compilerrt_lib("darwin/libclang_rt.fuzzer_osx.a" "libldc_rt.fuzzer.a" FALSE)
794-
copy_compilerrt_lib("darwin/libclang_rt.xray_osx.a" "libldc_rt.xray.a" FALSE)
795-
endif()
775+
copy_compilerrt_lib("darwin/libclang_rt.fuzzer_osx.a" "libldc_rt.fuzzer.a" FALSE)
776+
copy_compilerrt_lib("darwin/libclang_rt.xray_osx.a" "libldc_rt.xray.a" FALSE)
796777
if(NOT (LDC_LLVM_VER LESS 700))
797778
copy_compilerrt_lib("darwin/libclang_rt.xray-basic_osx.a" "libldc_rt.xray-basic.a" FALSE)
798779
copy_compilerrt_lib("darwin/libclang_rt.xray-fdr_osx.a" "libldc_rt.xray-fdr.a" FALSE)
@@ -805,12 +786,8 @@ if (LDC_INSTALL_LLVM_RUNTIME_LIBS)
805786
copy_compilerrt_lib("${LDC_INSTALL_LLVM_RUNTIME_LIBS_OS}/libclang_rt.asan-${LDC_INSTALL_LLVM_RUNTIME_LIBS_ARCH}.a" "libldc_rt.asan.a" FALSE)
806787
copy_compilerrt_lib("${LDC_INSTALL_LLVM_RUNTIME_LIBS_OS}/libclang_rt.builtins-${LDC_INSTALL_LLVM_RUNTIME_LIBS_ARCH}.a" "libldc_rt.builtins.a" FALSE)
807788
copy_compilerrt_lib("${LDC_INSTALL_LLVM_RUNTIME_LIBS_OS}/libclang_rt.profile-${LDC_INSTALL_LLVM_RUNTIME_LIBS_ARCH}.a" "libldc_rt.profile.a" FALSE)
808-
if(NOT (LDC_LLVM_VER LESS 500))
809-
copy_compilerrt_lib("${LDC_INSTALL_LLVM_RUNTIME_LIBS_OS}/libclang_rt.xray-${LDC_INSTALL_LLVM_RUNTIME_LIBS_ARCH}.a" "libldc_rt.xray.a" FALSE)
810-
endif()
811-
if(NOT (LDC_LLVM_VER LESS 600))
812-
copy_compilerrt_lib("${LDC_INSTALL_LLVM_RUNTIME_LIBS_OS}/libclang_rt.fuzzer-${LDC_INSTALL_LLVM_RUNTIME_LIBS_ARCH}.a" "libldc_rt.fuzzer.a" FALSE)
813-
endif()
789+
copy_compilerrt_lib("${LDC_INSTALL_LLVM_RUNTIME_LIBS_OS}/libclang_rt.xray-${LDC_INSTALL_LLVM_RUNTIME_LIBS_ARCH}.a" "libldc_rt.xray.a" FALSE)
790+
copy_compilerrt_lib("${LDC_INSTALL_LLVM_RUNTIME_LIBS_OS}/libclang_rt.fuzzer-${LDC_INSTALL_LLVM_RUNTIME_LIBS_ARCH}.a" "libldc_rt.fuzzer.a" FALSE)
814791
if(NOT (LDC_LLVM_VER LESS 700))
815792
copy_compilerrt_lib("${LDC_INSTALL_LLVM_RUNTIME_LIBS_OS}/libclang_rt.xray-basic-${LDC_INSTALL_LLVM_RUNTIME_LIBS_ARCH}.a" "libldc_rt.xray-basic.a" FALSE)
816793
copy_compilerrt_lib("${LDC_INSTALL_LLVM_RUNTIME_LIBS_OS}/libclang_rt.xray-fdr-${LDC_INSTALL_LLVM_RUNTIME_LIBS_ARCH}.a" "libldc_rt.xray-fdr.a" FALSE)
@@ -824,28 +801,14 @@ if (LDC_INSTALL_LLVM_RUNTIME_LIBS)
824801
copy_compilerrt_lib("windows/clang_rt.asan-${compilerrt_arch_suffix}.lib" "ldc_rt.asan.lib" FALSE)
825802
copy_compilerrt_lib("windows/clang_rt.builtins-${compilerrt_arch_suffix}.lib" "ldc_rt.builtins.lib" FALSE)
826803
copy_compilerrt_lib("windows/clang_rt.profile-${compilerrt_arch_suffix}.lib" "ldc_rt.profile.lib" FALSE)
827-
if(NOT (LDC_LLVM_VER LESS 600))
828-
copy_compilerrt_lib("windows/clang_rt.fuzzer-${compilerrt_arch_suffix}.lib" "ldc_rt.fuzzer.lib" FALSE)
829-
copy_compilerrt_lib("windows/clang_rt.xray-${compilerrt_arch_suffix}.lib" "ldc_rt.xray.lib" FALSE)
830-
endif()
804+
copy_compilerrt_lib("windows/clang_rt.fuzzer-${compilerrt_arch_suffix}.lib" "ldc_rt.fuzzer.lib" FALSE)
805+
copy_compilerrt_lib("windows/clang_rt.xray-${compilerrt_arch_suffix}.lib" "ldc_rt.xray.lib" FALSE)
831806
if(NOT (LDC_LLVM_VER LESS 700))
832807
copy_compilerrt_lib("windows/clang_rt.xray-basic-${compilerrt_arch_suffix}.lib" "ldc_rt.xray-basic.lib" FALSE)
833808
copy_compilerrt_lib("windows/clang_rt.xray-fdr-${compilerrt_arch_suffix}.lib" "ldc_rt.xray-fdr.lib" FALSE)
834809
copy_compilerrt_lib("windows/clang_rt.xray-profiling-${compilerrt_arch_suffix}.lib" "ldc_rt.xray-profiling.lib" FALSE)
835810
endif()
836811
endif()
837-
838-
if(LDC_LLVM_VER LESS 600)
839-
set(LLVM_LIBFUZZER_PATH ${LLVM_LIBRARY_DIRS}/libFuzzer.a)
840-
if(EXISTS ${LLVM_LIBFUZZER_PATH})
841-
message(STATUS "Copying libFuzzer library: ${LLVM_LIBFUZZER_PATH} --> libFuzzer.a")
842-
file(MAKE_DIRECTORY ${PROJECT_BINARY_DIR}/lib${LIB_SUFFIX})
843-
file(COPY ${LLVM_LIBFUZZER_PATH} DESTINATION ${PROJECT_BINARY_DIR}/lib${LIB_SUFFIX})
844-
install(FILES ${PROJECT_BINARY_DIR}/lib${LIB_SUFFIX}/libFuzzer.a DESTINATION ${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX})
845-
else()
846-
message(STATUS "Not found: ${LLVM_LIBFUZZER_PATH}")
847-
endif()
848-
endif()
849812
endif()
850813

851814
#

cmake/Modules/FindLLVM.cmake

+1-22
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,6 @@ set(llvm_config_names llvm-config-10.0 llvm-config100 llvm-config-10
3535
llvm-config-8.0 llvm-config80 llvm-config-8
3636
llvm-config-7.0 llvm-config70 llvm-config-7
3737
llvm-config-6.0 llvm-config60
38-
llvm-config-5.0 llvm-config50
39-
llvm-config-4.0 llvm-config40
40-
llvm-config-3.9 llvm-config39
4138
llvm-config)
4239
find_program(LLVM_CONFIG
4340
NAMES ${llvm_config_names}
@@ -113,19 +110,7 @@ else()
113110
# The LLVM version string _may_ contain a git/svn suffix, so match only the x.y.z part
114111
string(REGEX MATCH "^[0-9]+[.][0-9]+[.][0-9]+" LLVM_VERSION_BASE_STRING "${LLVM_VERSION_STRING}")
115112

116-
# Versions below 4.0 do not support components debuginfomsf and demangle
117-
if(${LLVM_VERSION_STRING} MATCHES "^3\\..*")
118-
list(REMOVE_ITEM LLVM_FIND_COMPONENTS "debuginfomsf" index)
119-
list(REMOVE_ITEM LLVM_FIND_COMPONENTS "demangle" index)
120-
endif()
121-
# Versions below 6.0 do not support component windowsmanifest
122-
if(${LLVM_VERSION_STRING} MATCHES "^[3-5]\\..*")
123-
list(REMOVE_ITEM LLVM_FIND_COMPONENTS "windowsmanifest" index)
124-
endif()
125-
126113
llvm_set(LDFLAGS ldflags)
127-
# In LLVM 3.5+, the system library dependencies (e.g. "-lz") are accessed
128-
# using the separate "--system-libs" flag.
129114
llvm_set(SYSTEM_LIBS system-libs)
130115
string(REPLACE "\n" " " LLVM_LDFLAGS "${LLVM_LDFLAGS} ${LLVM_SYSTEM_LIBS}")
131116
llvm_set(LIBRARY_DIRS libdir true)
@@ -138,13 +123,7 @@ else()
138123
endif()
139124
endif()
140125

141-
# Versions below 4.0 do not support llvm-config --cmakedir
142-
if(${LLVM_VERSION_STRING} MATCHES "^3\\..*")
143-
set(LLVM_CMAKEDIR ${LLVM_LIBRARY_DIRS}/cmake/llvm)
144-
else()
145-
llvm_set(CMAKEDIR cmakedir)
146-
endif()
147-
126+
llvm_set(CMAKEDIR cmakedir)
148127
llvm_set(TARGETS_TO_BUILD targets-built)
149128
string(REGEX MATCHALL "${pattern}[^ ]+" LLVM_TARGETS_TO_BUILD ${LLVM_TARGETS_TO_BUILD})
150129

driver/archiver.cpp

+1-24
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,8 @@
2020
#include "llvm/Support/Errc.h"
2121
#include "llvm/Support/Path.h"
2222
#include "llvm/Support/raw_ostream.h"
23-
#include <cstring>
24-
25-
#if LDC_LLVM_VER >= 500
2623
#include "llvm/ToolDrivers/llvm-lib/LibDriver.h"
27-
#else
28-
#include "llvm/LibDriver/LibDriver.h"
29-
#endif
24+
#include <cstring>
3025

3126
using namespace llvm;
3227

@@ -70,10 +65,8 @@ int addMember(std::vector<NewArchiveMember> &Members, StringRef FileName,
7065
NewArchiveMember::getFile(FileName, Deterministic);
7166
failIfError(NMOrErr.takeError(), FileName);
7267

73-
#if LDC_LLVM_VER >= 500
7468
// Use the basename of the object path for the member name.
7569
NMOrErr->MemberName = sys::path::filename(NMOrErr->MemberName);
76-
#endif
7770

7871
if (Pos == -1)
7972
Members.push_back(std::move(*NMOrErr));
@@ -106,11 +99,7 @@ int computeNewArchiveMembers(object::Archive *OldArchive,
10699
Error Err = Error::success();
107100
for (auto &Child : OldArchive->children(Err)) {
108101
auto NameOrErr = Child.getName();
109-
#if LDC_LLVM_VER < 400
110-
failIfError(NameOrErr.getError(), "");
111-
#else
112102
failIfError(NameOrErr.takeError(), "");
113-
#endif
114103
StringRef Name = NameOrErr.get();
115104

116105
auto MemberI = find_if(Members, [Name](StringRef Path) {
@@ -146,11 +135,7 @@ int computeNewArchiveMembers(object::Archive *OldArchive,
146135

147136
object::Archive::Kind getDefaultForHost() {
148137
return Triple(sys::getProcessTriple()).isOSDarwin()
149-
#if LDC_LLVM_VER >= 500
150138
? object::Archive::K_DARWIN
151-
#else
152-
? object::Archive::K_BSD
153-
#endif
154139
: object::Archive::K_GNU;
155140
}
156141

@@ -160,11 +145,7 @@ object::Archive::Kind getKindFromMember(const NewArchiveMember &Member) {
160145

161146
if (OptionalObject) {
162147
return isa<object::MachOObjectFile>(**OptionalObject)
163-
#if LDC_LLVM_VER >= 500
164148
? object::Archive::K_DARWIN
165-
#else
166-
? object::Archive::K_BSD
167-
#endif
168149
: object::Archive::K_GNU;
169150
}
170151

@@ -191,11 +172,7 @@ int performWriteOperation(object::Archive *OldArchive,
191172
writeArchive(ArchiveName, NewMembers, Symtab, Kind, Deterministic, Thin,
192173
std::move(OldArchiveBuf));
193174

194-
#if LDC_LLVM_VER >= 600
195175
failIfError(std::move(Result), ("error writing '" + ArchiveName + "'").str());
196-
#else
197-
failIfError(Result.second, ("error writing '" + ArchiveName + "'").str());
198-
#endif
199176

200177
return 0;
201178
}

driver/args.cpp

+1-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
//===-- args.cpp ----------------------------------------------------------===//
22
//
3-
// LDC – the LLVM D compiler
3+
// LDC – the LLVM D compiler
44
//
55
// This file is distributed under the BSD-style LDC license. See the LICENSE
66
// file for details.
@@ -108,9 +108,7 @@ bool has(const wchar_t *wname) { return _wgetenv(wname) != nullptr; }
108108

109109
std::string get(const char *name) {
110110
#ifdef _WIN32
111-
#if LDC_LLVM_VER >= 400
112111
using llvm::UTF16;
113-
#endif
114112
const wchar_t *wvalue = wget(name);
115113
std::string value;
116114
if (wvalue) {

0 commit comments

Comments
 (0)