Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 4 Mar 2018 15:06:37 +0000 (UTC)
From:      Dimitry Andric <dim@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-vendor@freebsd.org
Subject:   svn commit: r330377 - in vendor/clang/dist-release_60: docs include/clang/Basic lib/Basic
Message-ID:  <201803041506.w24F6bFx090050@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: dim
Date: Sun Mar  4 15:06:36 2018
New Revision: 330377
URL: https://svnweb.freebsd.org/changeset/base/330377

Log:
  Vendor import of clang 6.0.0 release r326565:
  https://llvm.org/svn/llvm-project/cfe/tags/RELEASE_600/final@326565

Modified:
  vendor/clang/dist-release_60/docs/AttributeReference.rst
  vendor/clang/dist-release_60/docs/ReleaseNotes.rst
  vendor/clang/dist-release_60/include/clang/Basic/AttrDocs.td
  vendor/clang/dist-release_60/lib/Basic/Version.cpp

Modified: vendor/clang/dist-release_60/docs/AttributeReference.rst
==============================================================================
--- vendor/clang/dist-release_60/docs/AttributeReference.rst	Sun Mar  4 15:03:47 2018	(r330376)
+++ vendor/clang/dist-release_60/docs/AttributeReference.rst	Sun Mar  4 15:06:36 2018	(r330377)
@@ -36,23 +36,23 @@ used to process multiple arguments from a single invoc
 concurrently.
 The syntax of the `declare simd` construct is as follows:
 
-  .. code-block:: c
+  .. code-block:: none
 
-  #pragma omp declare simd [clause[[,] clause] ...] new-line
-  [#pragma omp declare simd [clause[[,] clause] ...] new-line]
-  [...]
-  function definition or declaration
+    #pragma omp declare simd [clause[[,] clause] ...] new-line
+    [#pragma omp declare simd [clause[[,] clause] ...] new-line]
+    [...]
+    function definition or declaration
 
 where clause is one of the following:
 
-  .. code-block:: c
+  .. code-block:: none
 
-  simdlen(length)
-  linear(argument-list[:constant-linear-step])
-  aligned(argument-list[:alignment])
-  uniform(argument-list)
-  inbranch
-  notinbranch
+    simdlen(length)
+    linear(argument-list[:constant-linear-step])
+    aligned(argument-list[:alignment])
+    uniform(argument-list)
+    inbranch
+    notinbranch
 
 
 #pragma omp declare target
@@ -69,9 +69,9 @@ The syntax of the declare target directive is as follo
 
   .. code-block:: c
 
-  #pragma omp declare target new-line
-  declarations-definition-seq
-  #pragma omp end declare target new-line
+    #pragma omp declare target new-line
+    declarations-definition-seq
+    #pragma omp end declare target new-line
 
 
 _Noreturn
@@ -557,7 +557,7 @@ available in C.
 
   int isdigit(int c);
   int isdigit(int c) __attribute__((enable_if(c <= -1 || c > 255, "chosen when 'c' is out of range"))) __attribute__((unavailable("'c' must have the value of an unsigned char or EOF")));
-  
+
   void foo(char c) {
     isdigit(c);
     isdigit(10);
@@ -610,7 +610,7 @@ overload out of a number of viable overloads using ena
 
   void f() __attribute__((enable_if(true, "")));  // #1
   void f() __attribute__((enable_if(true, ""))) __attribute__((enable_if(true, "")));  // #2
-  
+
   void g(int i, int j) __attribute__((enable_if(i, "")));  // #1
   void g(int i, int j) __attribute__((enable_if(j, ""))) __attribute__((enable_if(true)));  // #2
 
@@ -1170,7 +1170,7 @@ potentially-evaluated discarded-value expression that 
 .. code-block: c++
   struct [[nodiscard]] error_info { /*...*/ };
   error_info enable_missile_safety_mode();
-  
+
   void launch_missiles();
   void test_missiles() {
     enable_missile_safety_mode(); // diagnoses
@@ -1451,7 +1451,7 @@ default name.
 can only be placed before an @protocol or @interface declaration:
         
 .. code-block:: objc
-        
+
   __attribute__((objc_runtime_name("MyLocalName")))
   @interface Message
   @end

Modified: vendor/clang/dist-release_60/docs/ReleaseNotes.rst
==============================================================================
--- vendor/clang/dist-release_60/docs/ReleaseNotes.rst	Sun Mar  4 15:03:47 2018	(r330376)
+++ vendor/clang/dist-release_60/docs/ReleaseNotes.rst	Sun Mar  4 15:06:36 2018	(r330377)
@@ -32,13 +32,34 @@ here. Generic improvements to Clang as a whole or to i
 infrastructure are described first, followed by language-specific
 sections with improvements to Clang's support for those languages.
 
-Major New Features
-------------------
+Non-comprehensive list of changes in this release
+-------------------------------------------------
 
--  ...
+- Support for `retpolines <https://support.google.com/faqs/answer/7625886>`_
+  was added to help mitigate "branch target injection" (variant #2) of the
+  "Spectre" speculative side channels described by `Project Zero
+  <https://googleprojectzero.blogspot.com/2018/01/reading-privileged-memory-with-side.html>`_
+  and the `Spectre paper <https://spectreattack.com/spectre.pdf>`_.
 
+- Bitrig OS was merged back into OpenBSD, so Bitrig support has been
+  removed from Clang/LLVM.
+
+- The default value of ``_MSC_VER`` was raised from 1800 to 1911, making it
+  compatible with the Visual Studio 2015 and 2017 C++ standard library headers.
+  Users should generally expect this to be regularly raised to match the most
+  recently released version of the Visual C++ compiler.
+
+- clang now defaults to ``.init_array`` if no gcc installation can be found.
+  If a gcc installation is found, it still prefers ``.ctors`` if the found
+  gcc is older than 4.7.0.
+
+- The new builtin preprocessor macros ``__is_target_arch``,
+  ``__is_target_vendor``, ``__is_target_os``, and ``__is_target_environment``
+  can be used to to examine the individual components of the target triple.
+
+
 Improvements to Clang's diagnostics
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+-----------------------------------
 
 - ``-Wpragma-pack`` is a new warning that warns in the following cases:
 
@@ -61,7 +82,7 @@ Improvements to Clang's diagnostics
   selector which could make the message send to ``id`` ambiguous.
 
 - ``-Wtautological-compare`` now warns when comparing an unsigned integer and 0
-  regardless of whether the constant is signed or unsigned."
+  regardless of whether the constant is signed or unsigned.
 
 - ``-Wtautological-compare`` now warns about comparing a signed integer and 0
   when the signed integer is coerced to an unsigned type for the comparison.
@@ -90,37 +111,37 @@ Improvements to Clang's diagnostics
 - ``-Wunreachable-code`` can now reason about ``__try``, ``__except`` and
   ``__leave``.
 
-Non-comprehensive list of changes in this release
--------------------------------------------------
 
-- Bitrig OS was merged back into OpenBSD, so Bitrig support has been
-  removed from Clang/LLVM.
-
-- The default value of _MSC_VER was raised from 1800 to 1911, making it
-  compatible with the Visual Studio 2015 and 2017 C++ standard library headers.
-  Users should generally expect this to be regularly raised to match the most
-  recently released version of the Visual C++ compiler.
-
-- clang now defaults to ``.init_array`` if no gcc installation can be found.
-  If a gcc installation is found, it still prefers ``.ctors`` if the found
-  gcc is older than 4.7.0.
-
-- The new builtin preprocessor macros ``__is_target_arch``,
-  ``__is_target_vendor``, ``__is_target_os``, and ``__is_target_environment``
-  can be used to to examine the individual components of the target triple.
-
 New Compiler Flags
 ------------------
 
-- --autocomplete was implemented to obtain a list of flags and its arguments. This is used for shell autocompletion.
+- Clang supports the ``-mretpoline`` flag to enable `retpolines
+  <https://support.google.com/faqs/answer/7625886>`_. Code compiled with this
+  flag will be hardened against variant #2 of the Spectre attack. Indirect
+  branches from switches or gotos removed from the code, and indirect calls
+  will be made through a "retpoline" thunk. The necessary thunks will
+  automatically be inserted into the generated code. Clang also supports
+  ``-mretpoline-external-thunk`` which works like ``-mretpoline`` but requires
+  the user to provide their own thunk definitions. The external thunk names
+  start with ``__x86_indirect_thunk_`` and end in a register name. For 64-bit
+  platforms, only an ``r11`` thunk is used, but for 32-bit platforms ``eax``,
+  ``ecx``, ``edx``, and ``edi`` thunks are used.
 
+- Clang now supports configuration files. These are collections of driver
+  options, which can be applied by specifying the configuration file, either
+  using command line option ``--config foo.cfg`` or encoding it into executable
+  name ``foo-clang``. Clang behaves as if the options from this file were inserted
+  before the options specified in command line. This feature is primary intended
+  to facilitate cross compilation. Details can be found in
+  `Clang Compiler User's Manual <UsersManual.html#configuration-files>`_.
+
 - The ``-fdouble-square-bracket-attributes`` and corresponding
   ``-fno-double-square-bracket-attributes`` flags were added to enable or
-  disable [[]] attributes in any language mode. Currently, only a limited
+  disable ``[[]]`` attributes in any language mode. Currently, only a limited
   number of attributes are supported outside of C++ mode. See the Clang
-  attribute documentation for more information about which attributes are
-  supported for each syntax.
-  
+  `attribute documentation <AttributeReference.html>`_ for more information
+  about which attributes are supported for each syntax.
+
 - Added the ``-std=c17``, ``-std=gnu17``, and ``-std=iso9899:2017`` language
   mode flags for compatibility with GCC. This enables support for the next
   version of the C standard, expected to be published by ISO in 2018. The only
@@ -135,20 +156,7 @@ New Compiler Flags
 - New ``-nostdlib++`` flag to disable linking the C++ standard library. Similar
   to using ``clang`` instead of ``clang++`` but doesn't disable ``-lm``.
 
-Deprecated Compiler Flags
--------------------------
 
-The following options are deprecated and ignored. They will be removed in
-future versions of Clang.
-
-- ...
-
-New Pragmas in Clang
------------------------
-
-Clang now supports the ...
-
-
 Attribute Changes in Clang
 --------------------------
 
@@ -157,25 +165,15 @@ Attribute Changes in Clang
   in the ``clang`` vendor namespace (``[[clang::name]]``). Attributes whose
   syntax is specified by some other standard (such as CUDA and OpenCL
   attributes) continue to follow their respective specification.
-  
+
 - Added the ``__has_c_attribute()`` builtin preprocessor macro which allows
   users to dynamically detect whether a double square-bracket attribute is
   supported in C mode. This attribute syntax can be enabled with the
   ``-fdouble-square-bracket-attributes`` flag.
-  
-- The presence of __attribute__((availability(...))) on a declaration no longer
-  implies default visibility for that declaration on macOS.
 
-- Clang now supports configuration files. These are collections of driver
-  options, which can be applied by specifying the configuration file, either
-  using command line option `--config foo.cfg` or encoding it into executable
-  name `foo-clang`. Clang behaves as if the options from this file were inserted
-  before the options specified in command line. This feature is primary intended
-  to facilitate cross compilation. Details can be found in
-  `Clang Compiler User's Manual
-  <http://clang.llvm.org/docs/UsersManual.html#configuration-files>`.
+- The presence of ``__attribute__((availability(...)))`` on a declaration no
+  longer implies default visibility for that declaration on macOS.
 
-- ...
 
 Windows Support
 ---------------
@@ -185,18 +183,7 @@ Windows Support
 
 - clang-cl now exposes the ``--version`` flag.
 
-C Language Changes in Clang
----------------------------
 
-- ...
-
-...
-
-C11 Feature Support
-^^^^^^^^^^^^^^^^^^^
-
-...
-
 C++ Language Changes in Clang
 -----------------------------
 
@@ -205,20 +192,38 @@ C++ Language Changes in Clang
   conforming GNU extensions. Projects incompatible with C++14 can add
   ``-std=gnu++98`` to their build settings to restore the previous behaviour.
 
-C++1z Feature Support
-^^^^^^^^^^^^^^^^^^^^^
+- Added support for some features from the C++ standard after C++17
+  (provisionally known as C++2a but expected to be C++20). This support can be
+  enabled with the ``-std=c++2a`` flag. This enables:
 
-...
+  - Support for ``__VA_OPT__``, to allow variadic macros to easily provide
+    different expansions when they are invoked without variadic arguments.
 
-Objective-C Language Changes in Clang
--------------------------------------
+  - Recognition of the ``<=>`` token (the C++2a three-way comparison operator).
 
-...
+  - Support for default member initializers for bit-fields.
 
+  - Lambda capture of ``*this``.
+
+  - Pointer-to-member calls using ``const &``-qualified pointers on temporary objects.
+
+  All of these features other than ``__VA_OPT__`` and ``<=>`` are made
+  available with a warning in earlier C++ language modes.
+
+- A warning has been added for a ``<=`` token followed immediately by a ``>``
+  character. Code containing such constructs will change meaning in C++2a due
+  to the addition of the ``<=>`` operator.
+
+- Clang implements the "destroying operator delete" feature described in C++
+  committee paper `P0722R1
+  <http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0722r1.html>`,
+  which is targeting inclusion in C++2a but has not yet been voted into the C++
+  working draft. Support for this feature is enabled by the presence of the
+  standard library type ``std::destroying_delete_t``.
+
 OpenCL C Language Changes in Clang
 ----------------------------------
 
-
 - Added subgroup builtins to enqueue kernel support.
 
 - Added CL2.0 atomics as Clang builtins that now accept
@@ -258,77 +263,72 @@ OpenCL C Language Changes in Clang
 - Miscellaneous improvements in vector diagnostics.
 
 - Added half float load and store builtins without enabling half as a legal type
-  (``__builtin_store_half for double``, ``__builtin_store_halff`` for double,
-  ``__builtin_load_half for double``, ``__builtin_load_halff`` for float).
+  (``__builtin_store_half`` for double, ``__builtin_store_halff`` for float,
+  ``__builtin_load_half`` for double, ``__builtin_load_halff`` for float).
 
 
 OpenMP Support in Clang
 ----------------------------------
 
-- Added options `-f[no]-openmp-simd` that support code emission only for OpenMP
-  SIMD-based directives, like `#pragma omp simd`, `#pragma omp parallel for simd`
-  etc. The code is emitted only for simd-based part of the combined directives
+- Added options ``-f[no]-openmp-simd`` that support code emission only for OpenMP
+  SIMD-based directives, like ``#pragma omp simd``, ``#pragma omp parallel for simd``
+  etc. The code is emitted only for SIMD-based part of the combined directives
   and clauses.
 
 - Added support for almost all target-based directives except for
-  `#pragma omp target teams distribute parallel for [simd]`. Although, please
-  note that `depend` clauses on target-based directives are not supported yet.
+  ``#pragma omp target teams distribute parallel for [simd]``. Although, please
+  note that ``depend`` clauses on target-based directives are not supported yet.
   Clang supports offloading to X86_64, AArch64 and PPC64[LE] devices.
 
-- Added support for `reduction`-based clauses on `task`-based directives from
+- Added support for ``reduction``-based clauses on ``task``-based directives from
   upcoming OpenMP 5.0.
 
-- The LLVM OpenMP runtime `libomp` now supports the OpenMP Tools Interface (OMPT)
+- The LLVM OpenMP runtime ``libomp`` now supports the OpenMP Tools Interface (OMPT)
   on x86, x86_64, AArch64, and PPC64 on Linux, Windows, and macOS. If you observe
   a measurable performance impact on one of your applications without a tool
-  attached, please rebuild the runtime library with `-DLIBOMP_OMPT_SUPPORT=OFF` and
+  attached, please rebuild the runtime library with ``-DLIBOMP_OMPT_SUPPORT=OFF`` and
   file a bug at `LLVM's Bugzilla <https://bugs.llvm.org/>`_ or send a message to the
   `OpenMP development list <http://lists.llvm.org/cgi-bin/mailman/listinfo/openmp-dev>`_.
 
-Internal API Changes
---------------------
 
-These are major API changes that have happened since the 4.0.0 release of
-Clang. If upgrading an external codebase that uses Clang as a library,
-this section should help get you past the largest hurdles of upgrading.
-
--  ...
-
 AST Matchers
 ------------
 
-The hasDeclaration matcher now works the same for Type and QualType and only
+The ``hasDeclaration`` matcher now works the same for ``Type`` and ``QualType`` and only
 ever looks through one level of sugaring in a limited number of cases.
 
 There are two main patterns affected by this:
 
--  qualType(hasDeclaration(recordDecl(...))): previously, we would look through
-   sugar like TypedefType to get at the underlying recordDecl; now, we need
+-  ``qualType(hasDeclaration(recordDecl(...)))``: previously, we would look through
+   sugar like ``TypedefType`` to get at the underlying ``recordDecl``; now, we need
    to explicitly remove the sugaring:
-   qualType(hasUnqualifiedDesugaredType(hasDeclaration(recordDecl(...))))
+   ``qualType(hasUnqualifiedDesugaredType(hasDeclaration(recordDecl(...))))``
 
--  hasType(recordDecl(...)): hasType internally uses hasDeclaration; previously,
-   this matcher used to match for example TypedefTypes of the RecordType, but
+-  ``hasType(recordDecl(...))``: ``hasType`` internally uses ``hasDeclaration``; previously,
+   this matcher used to match for example ``TypedefTypes`` of the ``RecordType``, but
    after the change they don't; to fix, use:
 
-::
-   hasType(hasUnqualifiedDesugaredType(
-       recordType(hasDeclaration(recordDecl(...)))))
+   .. code-block:: c
 
--  templateSpecializationType(hasDeclaration(classTemplateDecl(...))):
-   previously, we would directly match the underlying ClassTemplateDecl;
-   now, we can explicitly match the ClassTemplateSpecializationDecl, but that
-   requires to explicitly get the ClassTemplateDecl:
+      hasType(hasUnqualifiedDesugaredType(
+          recordType(hasDeclaration(recordDecl(...)))))
 
-::
-   templateSpecializationType(hasDeclaration(
-       classTemplateSpecializationDecl(
-           hasSpecializedTemplate(classTemplateDecl(...)))))
+-  ``templateSpecializationType(hasDeclaration(classTemplateDecl(...)))``:
+   previously, we would directly match the underlying ``ClassTemplateDecl``;
+   now, we can explicitly match the ``ClassTemplateSpecializationDecl``, but that
+   requires to explicitly get the ``ClassTemplateDecl``:
 
+   .. code-block:: c
+
+      templateSpecializationType(hasDeclaration(
+          classTemplateSpecializationDecl(
+              hasSpecializedTemplate(classTemplateDecl(...)))))
+
+
 clang-format
 ------------
 
-* Option *IndentPPDirectives* added to indent preprocessor directives on
+* Option ``IndentPPDirectives`` added to indent preprocessor directives on
   conditionals.
 
   +----------------------+----------------------+
@@ -343,10 +343,10 @@ clang-format
   |    #endif            |   #endif             |
   +----------------------+----------------------+
 
-* Option -verbose added to the command line.
+* Option ``-verbose`` added to the command line.
   Shows the list of processed files.
 
-* Option *IncludeBlocks* added to merge and regroup multiple ``#include`` blocks during sorting.
+* Option ``IncludeBlocks`` added to merge and regroup multiple ``#include`` blocks during sorting.
 
   +-------------------------+-------------------------+-------------------------+
   | Before (Preserve)       | Merge                   | Regroup                 |
@@ -359,19 +359,13 @@ clang-format
   |   #include <lib/main.h> |                         |   #include <lib/main.h> |
   +-------------------------+-------------------------+-------------------------+
 
-libclang
---------
 
-...
-
-
 Static Analyzer
 ---------------
 
-- Static Analyzer can now properly detect and diagnose unary pre-/post-
+- The Static Analyzer can now properly detect and diagnose unary pre-/post-
   increment/decrement on an uninitialized value.
 
-...
 
 Undefined Behavior Sanitizer (UBSan)
 ------------------------------------
@@ -381,25 +375,6 @@ Undefined Behavior Sanitizer (UBSan)
   issue logging and deduplication, and does not support ``-fsanitize=vptr``
   checking.
 
-Core Analysis Improvements
-==========================
-
-- ...
-
-New Issues Found
-================
-
-- ...
-
-Python Binding Changes
-----------------------
-
-The following methods have been added:
-
--  ...
-
-Significant Known Problems
-==========================
 
 Additional Information
 ======================

Modified: vendor/clang/dist-release_60/include/clang/Basic/AttrDocs.td
==============================================================================
--- vendor/clang/dist-release_60/include/clang/Basic/AttrDocs.td	Sun Mar  4 15:03:47 2018	(r330376)
+++ vendor/clang/dist-release_60/include/clang/Basic/AttrDocs.td	Sun Mar  4 15:06:36 2018	(r330377)
@@ -353,7 +353,7 @@ available in C.
 
   int isdigit(int c);
   int isdigit(int c) __attribute__((enable_if(c <= -1 || c > 255, "chosen when 'c' is out of range"))) __attribute__((unavailable("'c' must have the value of an unsigned char or EOF")));
-  
+
   void foo(char c) {
     isdigit(c);
     isdigit(10);
@@ -406,7 +406,7 @@ overload out of a number of viable overloads using ena
 
   void f() __attribute__((enable_if(true, "")));  // #1
   void f() __attribute__((enable_if(true, ""))) __attribute__((enable_if(true, "")));  // #2
-  
+
   void g(int i, int j) __attribute__((enable_if(i, "")));  // #1
   void g(int i, int j) __attribute__((enable_if(j, ""))) __attribute__((enable_if(true)));  // #2
 
@@ -918,11 +918,11 @@ default name.
 can only be placed before an @protocol or @interface declaration:
         
 .. code-block:: objc
-        
+
   __attribute__((objc_runtime_name("MyLocalName")))
   @interface Message
   @end
-        
+
     }];
 }
 
@@ -1228,7 +1228,7 @@ potentially-evaluated discarded-value expression that 
 .. code-block: c++
   struct [[nodiscard]] error_info { /*...*/ };
   error_info enable_missile_safety_mode();
-  
+
   void launch_missiles();
   void test_missiles() {
     enable_missile_safety_mode(); // diagnoses
@@ -2641,23 +2641,23 @@ used to process multiple arguments from a single invoc
 concurrently.
 The syntax of the `declare simd` construct is as follows:
 
-  .. code-block:: c
+  .. code-block:: none
 
-  #pragma omp declare simd [clause[[,] clause] ...] new-line
-  [#pragma omp declare simd [clause[[,] clause] ...] new-line]
-  [...]
-  function definition or declaration
+    #pragma omp declare simd [clause[[,] clause] ...] new-line
+    [#pragma omp declare simd [clause[[,] clause] ...] new-line]
+    [...]
+    function definition or declaration
 
 where clause is one of the following:
 
-  .. code-block:: c
+  .. code-block:: none
 
-  simdlen(length)
-  linear(argument-list[:constant-linear-step])
-  aligned(argument-list[:alignment])
-  uniform(argument-list)
-  inbranch
-  notinbranch
+    simdlen(length)
+    linear(argument-list[:constant-linear-step])
+    aligned(argument-list[:alignment])
+    uniform(argument-list)
+    inbranch
+    notinbranch
 
   }];
 }
@@ -2673,9 +2673,9 @@ The syntax of the declare target directive is as follo
 
   .. code-block:: c
 
-  #pragma omp declare target new-line
-  declarations-definition-seq
-  #pragma omp end declare target new-line
+    #pragma omp declare target new-line
+    declarations-definition-seq
+    #pragma omp end declare target new-line
   }];
 }
 

Modified: vendor/clang/dist-release_60/lib/Basic/Version.cpp
==============================================================================
--- vendor/clang/dist-release_60/lib/Basic/Version.cpp	Sun Mar  4 15:03:47 2018	(r330376)
+++ vendor/clang/dist-release_60/lib/Basic/Version.cpp	Sun Mar  4 15:06:36 2018	(r330377)
@@ -36,7 +36,7 @@ std::string getClangRepositoryPath() {
 
   // If the SVN_REPOSITORY is empty, try to use the SVN keyword. This helps us
   // pick up a tag in an SVN export, for example.
-  StringRef SVNRepository("$URL: https://llvm.org/svn/llvm-project/cfe/branches/release_60/lib/Basic/Version.cpp $");
+  StringRef SVNRepository("$URL: https://llvm.org/svn/llvm-project/cfe/tags/RELEASE_600/final/lib/Basic/Version.cpp $");
   if (URL.empty()) {
     URL = SVNRepository.slice(SVNRepository.find(':'),
                               SVNRepository.find("/lib/Basic"));



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201803041506.w24F6bFx090050>