From owner-svn-src-vendor@freebsd.org Tue May 16 18:41:49 2017 Return-Path: Delivered-To: svn-src-vendor@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id C4FB0D70B61; Tue, 16 May 2017 18:41:49 +0000 (UTC) (envelope-from phil@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 081E31306; Tue, 16 May 2017 18:41:48 +0000 (UTC) (envelope-from phil@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v4GIfbNV069577; Tue, 16 May 2017 18:41:37 GMT (envelope-from phil@FreeBSD.org) Received: (from phil@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v4GIfblf069573; Tue, 16 May 2017 18:41:37 GMT (envelope-from phil@FreeBSD.org) Message-Id: <201705161841.v4GIfblf069573@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: phil set sender to phil@FreeBSD.org using -f From: Phil Shafer Date: Tue, 16 May 2017 18:41:37 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-vendor@freebsd.org Subject: svn commit: r318361 - in vendor/Juniper/libxo/dist: . doc libxo tests/core tests/core/saved tests/gettext tests/gettext/po/pig_latin tests/gettext/saved xo X-SVN-Group: vendor MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-vendor@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for the vendor work area tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 16 May 2017 18:41:49 -0000 Author: phil Date: Tue May 16 18:41:36 2017 New Revision: 318361 URL: https://svnweb.freebsd.org/changeset/base/318361 Log: Import libxo 0.7.2 Added: vendor/Juniper/libxo/dist/libxo/xo_options.7 (contents, props changed) Modified: vendor/Juniper/libxo/dist/configure.ac vendor/Juniper/libxo/dist/doc/Makefile.am vendor/Juniper/libxo/dist/doc/libxo-manual.html vendor/Juniper/libxo/dist/doc/libxo.txt vendor/Juniper/libxo/dist/libxo/Makefile.am vendor/Juniper/libxo/dist/libxo/libxo.c vendor/Juniper/libxo/dist/libxo/xo.h vendor/Juniper/libxo/dist/libxo/xo_buf.h vendor/Juniper/libxo/dist/libxo/xo_encoder.c vendor/Juniper/libxo/dist/libxo/xo_format.5 vendor/Juniper/libxo/dist/libxo/xo_syslog.c vendor/Juniper/libxo/dist/tests/core/saved/test_01.E.out vendor/Juniper/libxo/dist/tests/core/saved/test_01.J.out vendor/Juniper/libxo/dist/tests/core/saved/test_01.JP.out vendor/Juniper/libxo/dist/tests/core/saved/test_01.X.out vendor/Juniper/libxo/dist/tests/core/saved/test_01.XP.out vendor/Juniper/libxo/dist/tests/core/saved/test_10.X.out vendor/Juniper/libxo/dist/tests/core/saved/test_10.XP.out vendor/Juniper/libxo/dist/tests/core/saved/test_11.X.out vendor/Juniper/libxo/dist/tests/core/saved/test_11.XP.out vendor/Juniper/libxo/dist/tests/core/test_01.c vendor/Juniper/libxo/dist/tests/gettext/po/pig_latin/strerror.po vendor/Juniper/libxo/dist/tests/gettext/saved/gt_01.J.out vendor/Juniper/libxo/dist/tests/gettext/saved/gt_01.JP.out vendor/Juniper/libxo/dist/tests/gettext/strerror.pot vendor/Juniper/libxo/dist/xo/xo.c Modified: vendor/Juniper/libxo/dist/configure.ac ============================================================================== --- vendor/Juniper/libxo/dist/configure.ac Tue May 16 18:39:23 2017 (r318360) +++ vendor/Juniper/libxo/dist/configure.ac Tue May 16 18:41:36 2017 (r318361) @@ -12,7 +12,7 @@ # AC_PREREQ(2.2) -AC_INIT([libxo], [0.6.3], [phil@juniper.net]) +AC_INIT([libxo], [0.7.2], [phil@juniper.net]) AM_INIT_AUTOMAKE([-Wall -Werror foreign -Wno-portability]) # Support silent build rules. Requires at least automake-1.11. @@ -20,7 +20,6 @@ AM_INIT_AUTOMAKE([-Wall -Werror foreign m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])]) AC_PROG_CC -AM_PROG_AR AC_PROG_INSTALL AC_CONFIG_MACRO_DIR([m4]) AC_PROG_LN_S @@ -135,6 +134,21 @@ if test "$GETTEXT_ENABLE" != "no"; then AC_MSG_RESULT([$HAVE_GETTEXT]) fi + + if test "$HAVE_GETTEXT" != "yes"; then + GETTEXT_PREFIX=/usr/local + AC_MSG_CHECKING([gettext in ${GETTEXT_PREFIX}]) + + _save_cflags="$CFLAGS" + CFLAGS="$CFLAGS -I${GETTEXT_PREFIX}/include -L${GETTEXT_PREFIX}/lib -Werror -lintl" + AC_LINK_IFELSE([AC_LANG_SOURCE([[#include ] + [int main() {char *cp = dgettext(NULL, "xx"); return 0; }]])], + [HAVE_GETTEXT=yes], + [HAVE_GETTEXT=no]) + CFLAGS="$_save_cflags" + + AC_MSG_RESULT([$HAVE_GETTEXT]) + fi fi if test "$HAVE_GETTEXT" = "yes"; then @@ -278,6 +292,13 @@ AC_ARG_ENABLE([debug], AC_MSG_RESULT([$LIBXO_DEBUG]) AM_CONDITIONAL([LIBXO_DEBUG], [test "$LIBXO_DEBUG" != "no"]) +AC_MSG_CHECKING([whether to use int return codes]) +AC_ARG_ENABLE([int-return-codes], + [ --enable-int-return-codes Use int return codes (instead of ssize_t)], + [USE_INT_RETURN_CODES=yes; AC_DEFINE([USE_INT_RETURN_CODES], [1], [Use int return codes])], + [USE_INT_RETURN_CODES=no]) +AC_MSG_RESULT([$USE_INT_RETURN_CODES]) + AC_MSG_CHECKING([whether to build with text-only rendering]) AC_ARG_ENABLE([text-only], [ --enable-text-only Turn on text-only rendering], Modified: vendor/Juniper/libxo/dist/doc/Makefile.am ============================================================================== --- vendor/Juniper/libxo/dist/doc/Makefile.am Tue May 16 18:39:23 2017 (r318360) +++ vendor/Juniper/libxo/dist/doc/Makefile.am Tue May 16 18:41:36 2017 (r318361) @@ -61,9 +61,9 @@ xolint.txt: ${top_srcdir}/xolint/xolint. CLEANFILES = \ xolint.txt \ ${INPUT}.xml \ -${INPUT}.txt \ ${INPUT}.fxml \ -${INPUT}.html +${OUTPUT}.txt \ +${OUTPUT}.html else doc docs: @${ECHO} "The 'oxtradoc' tool is not installed; see libslax.org" Modified: vendor/Juniper/libxo/dist/doc/libxo-manual.html ============================================================================== --- vendor/Juniper/libxo/dist/doc/libxo-manual.html Tue May 16 18:39:23 2017 (r318360) +++ vendor/Juniper/libxo/dist/doc/libxo-manual.html Tue May 16 18:41:36 2017 (r318361) @@ -515,7 +515,7 @@ li.indline1 { } @top-right { - content: "May 2016"; + content: "May 2017"; } @top-center { @@ -22009,7 +22009,7 @@ jQuery(function ($) { -May 28, 2016 +May 15, 2017

libxo: The Easy Way to Generate text, XML, JSON, and HTML output
libxo-manual

@@ -22271,36 +22271,40 @@ jQuery(function ($) {
  • 3.1.4   
    -xo_set_style @@ -23879,7 +23883,7 @@ jQuery(function ($) {

    For strings, the 'h' and 'l' modifiers affect the interpretation of the bytes pointed to argument. The default '%s' string is a 'char *' pointer to a string encoded as UTF-8. Since UTF-8 is compatible with ASCII data, a normal 7-bit ASCII string can be used. '%ls' expects a 'wchar_t *' pointer to a wide-character string, encoded as a 32-bit Unicode values. '%hs' expects a 'char *' pointer to a multi-byte string encoded with the current locale, as given by the LC_CTYPE, LANG, or LC_ALL environment varibles. The first of this list of variables is used and if none of the variables are set, the locale defaults to "UTF‑8".

    libxo will convert these arguments as needed to either UTF-8 (for XML, JSON, and HTML styles) or locale-based strings for display in text style.

    -   xo_emit("Alll strings are utf-8 content {:tag/%ls}",
    +   xo_emit("All strings are utf-8 content {:tag/%ls}",
                L"except for wide strings");
     	    

    "%S" is equivalent to "%ls".

    @@ -24316,6 +24320,14 @@ jQuery(function ($) { + + + + + + + + @@ -24377,7 +24389,7 @@ jQuery(function ($) { - + @@ -24402,6 +24414,19 @@ jQuery(function ($) {
    Enable "Do The Right Thing" mode
    flushFlush after every libxo function call
    flush-lineFlush after every line (line-buffered)
    html Emit HTML output
    underscoresReplace XML-friendly "-"s with JSON friendly "_"s eReplace XML-friendly "-"s with JSON friendly "_"s
    units

    The brief options are detailed in Section 3.4.6.

    +

    Most of these option are simple and direct, but some require additional details:

    +

    +
      +
    • "flush‑line" performs line buffering, even when the output is not directed to a TTY device.
    • +
    • "info" generates additional data for HTML, encoded in attributes using names that state with "data‑".
    • +
    • "keys" adds a "key" attribute for XML output to indicate that a leaf is an identifier for the list member.
    • +
    • "no‑humanize"avoids "humanizing" numeric output (see humanize_number(3) for details).
    • +
    • "no‑locale" instructs libxo to avoid translating output to the current locale.
    • +
    • "no‑retain" disables the ability of libxo to internally retain "compiled" information about formatting strings.
    • +
    • "underscores" can be used with JSON output to change XML-friendly names with dashes into JSON-friendly name with underscores.
    • +
    • "warn" allows libxo to emit warnings on stderr when application code make incorrect calls.
    • +
    • "warn‑xml" causes those warnings to be placed in XML inside the output.
    • +

    @@ -24443,8 +24468,9 @@ jQuery(function ($) {
  • Section 3.1.2
  • Section 3.1.3
  • Section 3.1.4
  • -
  • Section 3.1.5
  • -
  • Section 3.1.6
  • +
  • Section 3.1.5
  • +
  • Section 3.1.6
  • +
  • Section 3.1.7
  • @@ -24460,7 +24486,7 @@ jQuery(function ($) { xo_handle_t *xop = xo_create(XO_STYLE_JSON, XOF_WARN); .... xo_emit_h(xop, "testing\n"); -

    See also Section 3.1.4.1 and Section 3.1.5.1.

    +

    See also Section 3.1.5.1 and Section 3.1.6.1.

    @@ -24499,18 +24525,31 @@ jQuery(function ($) {

    To use the default handle, pass a NULL handle:

         xo_set_style(NULL, XO_STYLE_XML);
    -	    

    Section Contents:

    +

    +
    +

    +
    +3.1.5 
    +xo_get_style +

    +

    To find the current style, use the xo_get_style() function:

    +
    +    xo_style_t xo_get_style(xo_handle_t *xop);
    +	    

    To use the default handle, pass a NULL handle:

    +
    +    style = xo_get_style(NULL);
    +	    

    Section Contents:

    -

    +

    +3.1.5.1 

    Output Styles (XO_STYLE_*) -

    The libxo functions accept a set of output styles:

    +

    The libxo functions accept a set of output styles:

    @@ -24537,45 +24576,45 @@ jQuery(function ($) {
    Flag
    -

    +

    +3.1.5.2 

    xo_set_style_name -

    The xo_set_style_name() can be used to set the style based on a name encoded as a string:

    -
    +

    The xo_set_style_name() can be used to set the style based on a name encoded as a string:

    +
         int xo_set_style_name (xo_handle_t *xop, const char *style);
    -	    

    The name can be any of the styles: "text", "xml", "json", or "html".

    -
    +	    

    The name can be any of the styles: "text", "xml", "json", or "html".

    +
         EXAMPLE:
             xo_set_style_name(NULL, "html");
     	    
    -

    +

    -3.1.5 
    +3.1.6 

    xo_set_flags -

    To set the flags, use the xo_set_flags() function:

    -
    +

    To set the flags, use the xo_set_flags() function:

    +
         void xo_set_flags(xo_handle_t *xop, unsigned flags);
    -	    

    To use the default handle, pass a NULL handle:

    -
    +	    

    To use the default handle, pass a NULL handle:

    +
         xo_set_style(NULL, XO_STYLE_XML);
    -	    

    Section Contents:

    +

    Section Contents:

    -

    +

    +3.1.6.1 

    Flags (XOF_*) -

    The set of valid flags include:

    +

    The set of valid flags include:

    @@ -24648,12 +24687,12 @@ jQuery(function ($) {
    Flag
    -

    The XOF_CLOSE_FP flag will trigger the call of the close_func (provided via xo_set_writer()) when the handle is destroyed.

    -

    The XOF_COLOR flag enables color and effects in output regardless of output device, while the XOF_COLOR_ALLOWED flag allows color and effects only if the output device is a terminal.

    -

    The XOF_PRETTY flag requests 'pretty printing', which will trigger the addition of indentation and newlines to enhance the readability of XML, JSON, and HTML output. Text output is not affected.

    -

    The XOF_WARN flag requests that warnings will trigger diagnostic output (on standard error) when the library notices errors during operations, or with arguments to functions. Without warnings enabled, such conditions are ignored.

    -

    Warnings allow developers to debug their interaction with libxo. The function "xo_failure" can used as a breakpoint for a debugger, regardless of whether warnings are enabled.

    -

    If the style is XO_STYLE_HTML, the following additional flags can be used:

    +

    The XOF_CLOSE_FP flag will trigger the call of the close_func (provided via xo_set_writer()) when the handle is destroyed.

    +

    The XOF_COLOR flag enables color and effects in output regardless of output device, while the XOF_COLOR_ALLOWED flag allows color and effects only if the output device is a terminal.

    +

    The XOF_PRETTY flag requests 'pretty printing', which will trigger the addition of indentation and newlines to enhance the readability of XML, JSON, and HTML output. Text output is not affected.

    +

    The XOF_WARN flag requests that warnings will trigger diagnostic output (on standard error) when the library notices errors during operations, or with arguments to functions. Without warnings enabled, such conditions are ignored.

    +

    Warnings allow developers to debug their interaction with libxo. The function "xo_failure" can used as a breakpoint for a debugger, regardless of whether warnings are enabled.

    +

    If the style is XO_STYLE_HTML, the following additional flags can be used:

    @@ -24670,9 +24709,9 @@ jQuery(function ($) {
    Flag
    -

    The XOF_XPATH flag enables the emission of XPath expressions detailing the hierarchy of XML elements used to encode the data field, if the XPATH style of output were requested.

    -

    The XOF_INFO flag encodes additional informational fields for HTML output. See Section 3.4.4 for details.

    -

    If the style is XO_STYLE_XML, the following additional flags can be used:

    +

    The XOF_XPATH flag enables the emission of XPath expressions detailing the hierarchy of XML elements used to encode the data field, if the XPATH style of output were requested.

    +

    The XOF_INFO flag encodes additional informational fields for HTML output. See Section 3.4.4 for details.

    +

    If the style is XO_STYLE_XML, the following additional flags can be used:

    @@ -24683,43 +24722,43 @@ jQuery(function ($) {
    FlagFlag 'key' fields for xml
    -

    The XOF_KEYS flag adds 'key' attribute to the XML encoding for field definitions that use the 'k' modifier. The key attribute has the value "key":

    -
    +

    The XOF_KEYS flag adds 'key' attribute to the XML encoding for field definitions that use the 'k' modifier. The key attribute has the value "key":

    +
         xo_emit("{k:name}", item);
     
       XML:
           <name key="key">truck</name>
     	    
    -

    +

    +3.1.6.2 

    xo_clear_flags -

    The xo_clear_flags() function turns off the given flags in a specific handle.

    -
    +

    The xo_clear_flags() function turns off the given flags in a specific handle.

    +
         void xo_clear_flags (xo_handle_t *xop, xo_xof_flags_t flags);
     	    
    -

    +

    +3.1.6.3 

    xo_set_options -

    The xo_set_options() function accepts a comma-separated list of styles and flags and enables them for a specific handle.

    -
    +

    The xo_set_options() function accepts a comma-separated list of styles and flags and enables them for a specific handle.

    +
         int xo_set_options (xo_handle_t *xop, const char *input);
    -	    

    The options are identical to those listed in Section 2.4.

    +

    The options are identical to those listed in Section 2.4.

    -

    +

    -3.1.6 
    +3.1.7 

    xo_destroy -

    The xo_destroy function releases a handle and any resources it is using. Calling xo_destroy with a NULL handle will release any resources associated with the default handle.

    -
    +

    The xo_destroy function releases a handle and any resources it is using. Calling xo_destroy with a NULL handle will release any resources associated with the default handle.

    +
         void xo_destroy(xo_handle_t *xop);
     	    
    @@ -24730,7 +24769,7 @@ jQuery(function ($) { Emitting Content (xo_emit)

    The following functions are used to emit output:

    -
    +
         int xo_emit (const char *fmt, ...);
         int xo_emit_h (xo_handle_t *xop, const char *fmt, ...);
         int xo_emit_hv (xo_handle_t *xop, const char *fmt, va_list vap);
    @@ -24750,7 +24789,7 @@ jQuery(function ($) {
     Single Field Emitting Functions (xo_emit_field)
     
     

    The following functions can also make output, but only make a single field at a time:

    -
    +
         int xo_emit_field_hv (xo_handle_t *xop, const char *rolmod,
                       const char *contents, const char *fmt, 
                       const char *efmt, va_list vap);
    @@ -24762,7 +24801,7 @@ jQuery(function ($) {
         int xo_emit_field (const char *rolmod, const char *contents,
                      const char *fmt, const char *efmt, ...);
     	    

    These functions are intended to avoid the scenario where one would otherwise need to compose a format descriptors using snprintf(). The individual parts of the format descriptor are passed in distinctly.

    -
    +
         xo_emit("T", "Host name is ", NULL, NULL);
         xo_emit("V", "host-name", NULL, NULL, host-name);
     	    
    @@ -24773,14 +24812,14 @@ jQuery(function ($) { Attributes (xo_attr)

    The xo_attr() function emits attributes for the XML output style.

    -
    +
         int xo_attr (const char *name, const char *fmt, ...);
         int xo_attr_h (xo_handle_t *xop, const char *name, 
                        const char *fmt, ...);
         int xo_attr_hv (xo_handle_t *xop, const char *name, 
                        const char *fmt, va_list vap);
     	    

    The name parameter give the name of the attribute to be encoded. The fmt parameter gives a printf-style format string used to format the value of the attribute using any remaining arguments, or the vap parameter passed to xo_attr_hv().

    -
    +
         EXAMPLE:
           xo_attr("seconds", "%ld", (unsigned long) login_time);
           struct tm *tmp = localtime(login_time);
    @@ -24798,7 +24837,7 @@ jQuery(function ($) {
     Flushing Output (xo_flush)
     
     

    libxo buffers data, both for performance and consistency, but also to allow some advanced features to work properly. At various times, the caller may wish to flush any data buffered within the library. The xo_flush() call is used for this:

    -
    +
         void xo_flush (void);
         void xo_flush_h (xo_handle_t *xop);
     	    

    Calling xo_flush also triggers the flush function associated with the handle. For the default handle, this is equivalent to "fflush(stdio);".

    @@ -24810,7 +24849,7 @@ jQuery(function ($) { Finishing Output (xo_finish)

    When the program is ready to exit or close a handle, a call to xo_finish() is required. This flushes any buffered data, closes open libxo constructs, and completes any pending operations.

    -
    +
         int xo_finish (void);
         int xo_finish_h (xo_handle_t *xop);
         void xo_finish_atexit (void);
    @@ -24826,7 +24865,7 @@ jQuery(function ($) {
     
     

    libxo represents to types of hierarchy: containers and lists. A container appears once under a given parent where a list contains instances that can appear multiple times. A container is used to hold related fields and to give the data organization and scope.

    To create a container, use the xo_open_container and xo_close_container functions:

    -
    +
         int xo_open_container (const char *name);
         int xo_open_container_h (xo_handle_t *xop, const char *name);
         int xo_open_container_hd (xo_handle_t *xop, const char *name);
    @@ -24840,7 +24879,7 @@ jQuery(function ($) {
     

    The close functions with the "_d" suffix are used in "Do The Right Thing" mode, where the name of the open containers, lists, and instances are maintained internally by libxo to allow the caller to avoid keeping track of the open container name.

    Use the XOF_WARN flag to generate a warning if the name given on the close does not match the current open container.

    For TEXT and HTML output, containers are not rendered into output text, though for HTML they are used when the XOF_XPATH flag is set.

    -
    +
         EXAMPLE:
            xo_open_container("system");
            xo_emit("The host name is {:host-name}\n", hn);
    @@ -24857,7 +24896,7 @@ jQuery(function ($) {
     
     

    Lists are sequences of instances of homogeneous data objects. Two distinct levels of calls are needed to represent them in our output styles. Calls must be made to open and close a list, and for each instance of data in that list, calls must be make to open and close that instance.

    The name given to all calls must be identical, and it is strongly suggested that the name be singular, not plural, as a matter of style and usage expectations.

    -
    +
         EXAMPLE:
             xo_open_list("user");
             for (i = 0; i < num_users; i++) {
    @@ -24926,7 +24965,7 @@ jQuery(function ($) {
     Parsing Command-line Arguments (xo_parse_args)
     
     

    The xo_parse_args() function is used to process a program's arguments. libxo-specific options are processed and removed from the argument list so the calling application does not need to process them. If successful, a new value for argc is returned. On failure, a message it emitted and -1 is returned.

    -
    +
         argc = xo_parse_args(argc, argv);
         if (argc < 0)
             exit(EXIT_FAILURE);
    @@ -24939,7 +24978,7 @@ jQuery(function ($) {
     xo_set_program
     
     

    The xo_set_program function sets name of the program as reported by functions like xo_failure, xo_warn, xo_err, etc. The program name is initialized by xo_parse_args, but subsequent calls to xo_set_program can override this value.

    -
    +
         xo_set_program(argv[0]);
     	    

    Note that the value is not copied, so the memory passed to xo_set_program (and xo_parse_args) must be maintained by the caller.

    @@ -24950,7 +24989,7 @@ jQuery(function ($) { xo_set_version

    The xo_set_version function records a version number to be emitted as part of the data for encoding styles (XML and JSON). This version number is suitable for tracking changes in the content, allowing a user of the data to discern which version of the data model is in use.

    -
    +
          void xo_set_version (const char *version);
          void xo_set_version_h (xo_handle_t *xop, const char *version);
     	    
    @@ -24963,7 +25002,7 @@ jQuery(function ($) {

    HTML data can include additional information in attributes that begin with "data‑". To enable this, three things must occur:

    First the application must build an array of xo_info_t structures, one per tag. The array must be sorted by name, since libxo uses a binary search to find the entry that matches names from format instructions.

    Second, the application must inform libxo about this information using the xo_set_info() call:

    -
    +
         typedef struct xo_info_s {
             const char *xi_name;    /* Name of the element */
             const char *xi_type;    /* Type of field */
    @@ -24973,7 +25012,7 @@ jQuery(function ($) {
         void xo_set_info (xo_handle_t *xop, xo_info_t *infop, int count);
     	    

    Like other libxo calls, passing NULL for the handle tells libxo to use the default handle.

    If the count is -1, libxo will count the elements of infop, but there must be an empty element at the end. More typically, the number is known to the application:

    -
    +
         xo_info_t info[] = {
             { "in-stock", "number", "Number of items in stock" },
             { "name", "string", "Name of the item" },
    @@ -24986,7 +25025,7 @@ jQuery(function ($) {
         xo_set_info(NULL, info, info_count);
     	    

    Third, the emission of info must be triggered with the XOF_INFO flag using either the xo_set_flags() function or the "‑‑libxo=info" command line argument.

    The type and help values, if present, are emitted as the "data‑type" and "data‑help" attributes:

    -
    +
       <div class="data" data-tag="sku" data-type="string" 
            data-help="Stock Keeping Unit">GRO-000-533</div>
     	    
    @@ -24997,7 +25036,7 @@ jQuery(function ($) { Memory Allocation

    The xo_set_allocator function allows libxo to be used in environments where the standard realloc() and free() functions are not available.

    -
    +
         void xo_set_allocator (xo_realloc_func_t realloc_func,
                                xo_free_func_t free_func);
     	    

    realloc_func should expect the same arguments as realloc(3) and return a pointer to memory following the same convention. free_func will receive the same argument as free(3) and should release it, as appropriate for the environment.

    @@ -25079,10 +25118,10 @@ jQuery(function ($) {

    For example, warnings can be enabled by:

    -
    +
         % env LIBXO_OPTIONS=W my-app
     	    

    Complete HTML output can be generated with:

    -
    +
         % env LIBXO_OPTIONS=HXI my-app
     	    

    Since environment variables are inherited, child processes will have the same options, which may be undesirable, making the use of the "‑‑libxo" option is preferable in most situations.

    @@ -25093,7 +25132,7 @@ jQuery(function ($) { Errors, Warnings, and Messages

    Many programs make use of the standard library functions err() and warn() to generate errors and warnings for the user. libxo wants to pass that information via the current output style, and provides compatible functions to allow this:

    -
    +
         void xo_warn (const char *fmt, ...);
         void xo_warnx (const char *fmt, ...);
         void xo_warn_c (int code, const char *fmt, ...);
    @@ -25109,7 +25148,7 @@ jQuery(function ($) {
         void xo_message_hcv (xo_handle_t *xop, int code, 
                              const char *fmt, va_list vap);
     	    

    These functions display the program name, a colon, a formatted message based on the arguments, and then optionally a colon and an error message associated with either "errno" or the "code" parameter.

    -
    +
         EXAMPLE:
             if (open(filename, O_RDONLY) < 0)
                 xo_err(1, "cannot open file '%s'", filename);
    @@ -25121,7 +25160,7 @@ jQuery(function ($) {
     xo_error
     
     

    The xo_error function can be used for generic errors that should be reported over the handle, rather than to stderr. The xo_error function behaves like xo_err for TEXT and HTML output styles, but puts the error into XML or JSON elements:

    -
    +
         EXAMPLE::
             xo_error("Does not %s", "compute");
         XML::
    @@ -25136,7 +25175,7 @@ jQuery(function ($) {
     xo_no_setlocale
     
     

    libxo automatically initializes the locale based on setting of the environment variables LC_CTYPE, LANG, and LC_ALL. The first of this list of variables is used and if none of the variables, the locale defaults to "UTF‑8". The caller may wish to avoid this behavior, and can do so by calling the xo_no_setlocale() function.

    -
    +
         void xo_no_setlocale (void);
     	    
    @@ -25152,7 +25191,7 @@ jQuery(function ($) {

    https://www.iana.org/assignments/enterprise-numbers/enterprise-numbers

    Use the Section 3.5.3.5() function to set the Enterprise ID, as needed.

    The message name should follow the conventions in Section 8.1.3, as should the fields within the message.

    -
    +
         /* Both of these calls are optional */
         xo_set_syslog_enterprise_id(32473);
         xo_open_log("my-program", 0, LOG_DAEMON);
    @@ -25180,7 +25219,7 @@ jQuery(function ($) {
     Priority, Facility, and Flags
     
     

    The xo_syslog, xo_vsyslog, and xo_open_log functions accept a set of flags which provide the priority of the message, the source facility, and some additional features. These values are OR'd together to create a single integer argument:

    -
    +
         xo_syslog(LOG_ERR | LOG_AUTH, "login-failed",
                  "Login failed; user '{:user}' from host '{:address}'",
                  user, addr);
    @@ -25325,7 +25364,7 @@ jQuery(function ($) {
     
     

    Use the xo_syslog function to generate syslog messages by calling it with a log priority and facility, a message name, a format string, and a set of arguments. The priority/facility argument are discussed above, as is the message name.

    The format string follows the same conventions as xo_emit's format string, with each field being rendered as an SD-PARAM pair.

    -
    +
         xo_syslog(LOG_ERR, "poofd-missing-file",
                   "'{:filename}' not found: {:error/%m}", filename);
     
    @@ -25354,7 +25393,7 @@ jQuery(function ($) {
     xo_vsyslog
     
     

    xo_vsyslog is identical in function to xo_syslog, but takes the set of arguments using a va_list.

    -
    +
         void my_log (const char *name, const char *fmt, ...)
         {
             va_list vap;
    @@ -25370,7 +25409,7 @@ jQuery(function ($) {
     xo_open_log
     
     

    xo_open_log functions similar to openlog(3), allowing customization of the program name, the log facility number, and the additional option flags described in Section 3.5.1.

    -
    +
         void
         xo_open_log (const char *ident, int logopt, int facility);
     	    
    @@ -25381,7 +25420,7 @@ jQuery(function ($) { xo_close_log

    xo_close_log functions similar to closelog(3), closing the log file and releasing any associated resources.

    -
    +
         void
         xo_close_log (void);
     	    
    @@ -25392,7 +25431,7 @@ jQuery(function ($) { xo_set_logmask

    xo_set_logmask function similar to setlogmask(3), restricting the set of generated log event to those whose associated bit is set in maskpri. Use LOG_MASK(pri) to find the appropriate bit, or LOG_UPTO(toppri) to create a mask for all priorities up to and including toppri.

    -
    +
         int
         xo_set_logmask (int maskpri);
     
    @@ -25407,7 +25446,7 @@ jQuery(function ($) {
     
     

    Use the xo_set_syslog_enterprise_id to supply a platform- or application-specific enterprise id. This value is used in any future syslog messages.

    Ideally, the operating system should supply a default value via the "kern.syslog.enterprise_id" sysctl value. Lacking that, the application should provide a suitable value.

    -
    +
         void
         xo_set_syslog_enterprise_id (unsigned short eid);
     	    

    Enterprise IDs are administered by IANA, the Internet Assigned Number Authority. The complete list is EIDs on their web site:

    @@ -25449,7 +25488,7 @@ jQuery(function ($) { Loading Encoders

    Encoders can be registered statically or discovered dynamically. Applications can choose to call the xo_encoder_register() function to explicitly register encoders, but more typically they are built as shared libraries, placed in the libxo/extensions directory, and loaded based on name. libxo looks for a file with the name of the encoder and an extension of ".enc". This can be a file or a symlink to the shared library file that supports the encoder.

    -
    +
         % ls -1 lib/libxo/extensions/*.enc
         lib/libxo/extensions/cbor.enc
         lib/libxo/extensions/test.enc
    @@ -25461,7 +25500,7 @@ jQuery(function ($) {
     Encoder Initialization
     
     

    Each encoder must export a symbol used to access the library, which must have the following signature:

    -
    +
         int xo_encoder_library_init (XO_ENCODER_INIT_ARGS);
     	    

    XO_ENCODER_INIT_ARGS is a macro defined in xo_encoder.h that defines an argument called "arg", a pointer of the type xo_encoder_init_args_t. This structure contains two fields:

    @@ -25566,7 +25605,7 @@ jQuery(function ($) {

    The "xo" utility allows command line access to the functionality of the libxo library. Using "xo", shell scripts can emit XML, JSON, and HTML using the same commands that emit text output.

    The style of output can be selected using a specific option: "‑X" for XML, "‑J" for JSON, "‑H" for HTML, or "‑T" for TEXT, which is the default. The "--style <style>" option can also be used. The LIBXO_OPTIONS environment variable can also be used to set the style, as well as other flags.

    The "xo" utility accepts a format string suitable for xo_emit() and a set of zero or more arguments used to supply data for that string.

    -
    +
         xo "The {k:name} weighs {:weight/%d} pounds.\n" fish 6
     
       TEXT:
    @@ -25586,7 +25625,7 @@ jQuery(function ($) {
           <div class="text"> pounds.</div>
         </div>
     	    

    The "--wrap <path>" option can be used to wrap emitted content in a specific hierarchy. The path is a set of hierarchical names separated by the '/' character.

    -
    +
         xo --wrap top/a/b/c '{:tag}' value
     
       XML:
    @@ -25610,7 +25649,7 @@ jQuery(function ($) {
           }
         }
     	    

    The "--open <path>" and "--close <path>" can be used to emit hierarchical information without the matching close and open tag. This allows a shell script to emit open tags, data, and then close tags. The "‑‑depth" option may be used to set the depth for indentation. The "‑‑leading‑xpath" may be used to prepend data to the XPath values used for HTML output style.

    -
    +
         #!/bin/sh
         xo --open top/data
         xo --depth 2 '{tag}' value
    @@ -25639,7 +25678,7 @@ jQuery(function ($) {
     Command Line Options
     
     

    Usage: xo [options] format [fields]

    -
    +
       --close <path>        Close tags for the given path
       --depth <num>         Set the depth for pretty printing
       --help                Display this help text
    @@ -25663,7 +25702,7 @@ jQuery(function ($) {
     4.2 
     Example
     
    -
    +
       % xo 'The {:product} is {:status}\n' stereo "in route"
       The stereo is in route
       % ./xo/xo -p -X 'The {:product} is {:status}\n' stereo "in route"
    @@ -25721,7 +25760,7 @@ jQuery(function ($) {
     
     
     

    The output message will contain the source filename and line number, the class of the message, the message, and, if -p is given, the line that contains the error:

    -
    +
         % xolint.pl -t xolint.c
         xolint.c: 16: error: anchor format should be "%d"
         16         xo_emit("{[:/%s}");
    @@ -25789,7 +25828,7 @@ jQuery(function ($) {
     
     
     
    -
    +
         EXAMPLE:
             % xopo -s "There are {:count/%u} {:event/%.6s} events\n"
             There are {:count} {:event} events\n
    @@ -25848,7 +25887,7 @@ jQuery(function ($) {
     Did the complex semantics of format strings evolve over time?
     
     

    The history is both long and short: libxo's functionality is based on what JUNOS does in a data modeling language called ODL (output definition language). In JUNOS, all subcomponents generate XML, which is feed to the CLI, where data from the ODL files tell is how to render that XML into text. ODL might had a set of tags like:

    -
    +
          tag docsis-state {
              help "State of the DOCSIS interface";
              type string;
    @@ -25927,7 +25966,7 @@ jQuery(function ($) {
     
    Reuse existing field names
    Nothing's worse than writing expressions like:
    -
    +
         if ($src1/process[pid == $pid]/name == 
             $src2/proc-table/proc-list
                        /proc-entry[process-id == $pid]/proc-name) {
    @@ -25988,10 +26027,10 @@ jQuery(function ($) {
     'A percent sign appearing in text is a literal'
     
     

    The message "A percent sign appearing in text is a literal" can be caused by code like:

    -
    +
         xo_emit("cost: %d", cost);
     	    

    This code should be replaced with code like:

    -
    +
         xo_emit("{L:cost}: {:cost/%d}", cost);
     	    

    This can be a bit surprising and could be a field that was not properly converted to a libxo-style format string.

    @@ -26002,10 +26041,10 @@ jQuery(function ($) { 'Unknown long name for role/modifier'

    The message "Unknown long name for role/modifier" can be caused by code like:

    -
    +
         xo_emit("{,humanization:value}", value);
     	    

    This code should be replaced with code like:

    -
    +
         xo_emit("{,humanize:value}", value);
     	    

    The hn-* modifiers (hn-decimal, hn-space, hn-1000) are only valid for fields with the {h:} modifier.

    @@ -26017,10 +26056,10 @@ jQuery(function ($) {

    The message "Last character before field definition is a field type" can be caused by code like:

    A common typo:

    -
    +
         xo_emit("{T:Min} T{:Max}");
     	    

    This code should be replaced with code like:

    -
    +
         xo_emit("{T:Min} {T:Max}");
     	    

    Twiddling the "{" and the field role is a common typo.

    @@ -26031,10 +26070,10 @@ jQuery(function ($) { 'Encoding format uses different number of arguments'

    The message "Encoding format uses different number of arguments" can be caused by code like:

    -
    +
         xo_emit("{:name/%6.6s %%04d/%s}", name, number);
     	    

    This code should be replaced with code like:

    -
    +
         xo_emit("{:name/%6.6s %04d/%s-%d}", name, number);
     	    

    Both format should consume the same number of arguments off the stack

    @@ -26045,10 +26084,10 @@ jQuery(function ($) { 'Only one field role can be used'

    The message "Only one field role can be used" can be caused by code like:

    -
    +
         xo_emit("{LT:Max}");
     	    

    This code should be replaced with code like:

    -
    +
         xo_emit("{T:Max}");
     	    
    @@ -26058,10 +26097,10 @@ jQuery(function ($) { 'Potential missing slash after C, D, N, L, or T with format'

    The message "Potential missing slash after C, D, N, L, or T with format" can be caused by code like:

    -
    +
         xo_emit("{T:%6.6s}\n", "Max");
     	    

    This code should be replaced with code like:

    -
    +
         xo_emit("{T:/%6.6s}\n", "Max");
     	    

    The "%6.6s" will be a literal, not a field format. While it's possibly valid, it's likely a missing "/".

    @@ -26072,7 +26111,7 @@ jQuery(function ($) { 'An encoding format cannot be given (roles: DNLT)'

    The message "An encoding format cannot be given (roles: DNLT)" can be caused by code like:

    -
    +
         xo_emit("{T:Max//%s}", "Max");
     	    

    Fields with the C, D, N, L, and T roles are not emitted in the 'encoding' style (JSON, XML), so an encoding format would make no sense.

    @@ -26083,7 +26122,7 @@ jQuery(function ($) { 'Format cannot be given when content is present (roles: CDLN)'

    The message "Format cannot be given when content is present (roles: CDLN)" can be caused by code like:

    -
    +
         xo_emit("{N:Max/%6.6s}", "Max");
     	    

    Fields with the C, D, L, or N roles can't have both static literal content ("{L:Label}") and a format ("{L:/%s}"). This error will also occur when the content has a backslash in it, like "{N:Type of I/O}"; backslashes should be escaped, like "{N:Type of I\\/O}". Note the double backslash, one for handling 'C' strings, and one for libxo.

    @@ -26094,10 +26133,10 @@ jQuery(function ($) { 'Field has color without fg- or bg- (role: C)'

    The message "Field has color without fg- or bg- (role: C)" can be caused by code like:

    -
    +
         xo_emit("{C:green}{:foo}{C:}", x);
     	    

    This code should be replaced with code like:

    -
    +
         xo_emit("{C:fg-green}{:foo}{C:}", x);
     	    

    Colors must be prefixed by either "fg‑" or "bg‑".

    @@ -26108,10 +26147,10 @@ jQuery(function ($) { 'Field has invalid color or effect (role: C)'

    The message "Field has invalid color or effect (role: C)" can be caused by code like:

    -
    +
         xo_emit("{C:fg-purple,bold}{:foo}{C:gween}", x);
     	    

    This code should be replaced with code like:

    -
    +
         xo_emit("{C:fg-red,bold}{:foo}{C:fg-green}", x);
     	    

    The list of colors and effects are limited. The set of colors includes default, black, red, green, yellow, blue, magenta, cyan, and white, which must be prefixed by either "fg‑" or "bg‑". Effects are limited to bold, no-bold, underline, no-underline, inverse, no-inverse, normal, and reset. Values must be separated by commas.

    @@ -26122,10 +26161,10 @@ jQuery(function ($) { 'Field has humanize modifier but no format string'

    The message "Field has humanize modifier but no format string" can be caused by code like:

    -
    +
         xo_emit("{h:value}", value);
     	    

    This code should be replaced with code like:

    -
    +
         xo_emit("{h:value/%d}", value);
     	    

    Humanization is only value for numbers, which are not likely to use the default format ("%s").

    @@ -26136,10 +26175,10 @@ jQuery(function ($) { 'Field has hn-* modifier but not 'h' modifier'

    The message "Field has hn-* modifier but not 'h' modifier" can be caused by code like:

    -
    +
         xo_emit("{,hn-1000:value}", value);
     	    

    This code should be replaced with code like:

    -
    +
         xo_emit("{h,hn-1000:value}", value);
     	    

    The hn-* modifiers (hn-decimal, hn-space, hn-1000) are only valid for fields with the {h:} modifier.

    @@ -26150,10 +26189,10 @@ jQuery(function ($) { 'Value field must have a name (as content)")'

    The message "Value field must have a name (as content)")" can be caused by code like:

    -
    +
         xo_emit("{:/%s}", "value");
     	    

    This code should be replaced with code like:

    -
    +
         xo_emit("{:tag-name/%s}", "value");
     	    

    The field name is used for XML and JSON encodings. These tags names are static and must appear directly in the field descriptor.

    @@ -26164,10 +26203,10 @@ jQuery(function ($) { 'Use hyphens, not underscores, for value field name'

    The message "Use hyphens, not underscores, for value field name" can be caused by code like:

    -
    +
         xo_emit("{:no_under_scores}", "bad");
     	    

    This code should be replaced with code like:

    -
    +
         xo_emit("{:no-under-scores}", "bad");
     	    

    Use of hyphens is traditional in XML, and the XOF_UNDERSCORES flag can be used to generate underscores in JSON, if desired. But the raw field name should use hyphens.

    @@ -26178,10 +26217,10 @@ jQuery(function ($) { 'Value field name cannot start with digit'

    The message "Value field name cannot start with digit" can be caused by code like:

    -
    +
         xo_emit("{:10-gig/}");
     	    

    This code should be replaced with code like:

    -
    +
         xo_emit("{:ten-gig/}");
     	    

    XML element names cannot start with a digit.

    @@ -26192,10 +26231,10 @@ jQuery(function ($) { 'Value field name should be lower case'

    The message "Value field name should be lower case" can be caused by code like:

    -
    +
         xo_emit("{:WHY-ARE-YOU-SHOUTING}", "NO REASON");
     	    

    This code should be replaced with code like:

    -
    +
         xo_emit("{:why-are-you-shouting}", "no reason");
     	    

    Lower case is more civilized. Even TLAs should be lower case to avoid scenarios where the differences between "XPath" and "Xpath" drive your users crazy. Lower case rules the seas.

    @@ -26206,10 +26245,10 @@ jQuery(function ($) { 'Value field name should be longer than two characters'

    The message "Value field name should be longer than two characters" can be caused by code like:

    -
    +
         xo_emit("{:x}", "mumble");
     	    

    This code should be replaced with code like:

    -
    +
         xo_emit("{:something-meaningful}", "mumble");
     	    

    Field names should be descriptive, and it's hard to be descriptive in less than two characters. Consider your users and try to make something more useful. Note that this error often occurs when the field type is placed after the colon ("{:T/%20s}"), instead of before it ("{T:/20s}").

    @@ -26220,10 +26259,10 @@ jQuery(function ($) { 'Value field name contains invalid character'

    The message "Value field name contains invalid character" can be caused by code like:

    -
    +
         xo_emit("{:cost-in-$$/%u}", 15);
     	    

    This code should be replaced with code like:

    -
    
    *** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
    
    From owner-svn-src-vendor@freebsd.org  Tue May 16 18:42:09 2017
    Return-Path: 
    Delivered-To: svn-src-vendor@mailman.ysv.freebsd.org
    Received: from mx1.freebsd.org (mx1.freebsd.org
     [IPv6:2001:1900:2254:206a::19:1])
     by mailman.ysv.freebsd.org (Postfix) with ESMTP id 11F9BD70BB3;
     Tue, 16 May 2017 18:42:09 +0000 (UTC)
     (envelope-from phil@FreeBSD.org)
    Received: from repo.freebsd.org (repo.freebsd.org
     [IPv6:2610:1c1:1:6068::e6a:0])
     (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
     (Client did not present a certificate)
     by mx1.freebsd.org (Postfix) with ESMTPS id BE5AD13AE;
     Tue, 16 May 2017 18:42:08 +0000 (UTC)
     (envelope-from phil@FreeBSD.org)
    Received: from repo.freebsd.org ([127.0.1.37])
     by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v4GIg7gF070361;
     Tue, 16 May 2017 18:42:07 GMT (envelope-from phil@FreeBSD.org)
    Received: (from phil@localhost)
     by repo.freebsd.org (8.15.2/8.15.2/Submit) id v4GIg7Tk070360;
     Tue, 16 May 2017 18:42:07 GMT (envelope-from phil@FreeBSD.org)
    Message-Id: <201705161842.v4GIg7Tk070360@repo.freebsd.org>
    X-Authentication-Warning: repo.freebsd.org: phil set sender to
     phil@FreeBSD.org using -f
    From: Phil Shafer 
    Date: Tue, 16 May 2017 18:42:07 +0000 (UTC)
    To: src-committers@freebsd.org, svn-src-all@freebsd.org,
     svn-src-vendor@freebsd.org
    Subject: svn commit: r318362 - vendor/Juniper/libxo/0.7.2
    X-SVN-Group: vendor
    MIME-Version: 1.0
    Content-Type: text/plain; charset=UTF-8
    Content-Transfer-Encoding: 8bit
    X-BeenThere: svn-src-vendor@freebsd.org
    X-Mailman-Version: 2.1.23
    Precedence: list
    List-Id: SVN commit messages for the vendor work area tree
     
    List-Unsubscribe: , 
     
    List-Archive: 
    List-Post: 
    List-Help: 
    List-Subscribe: ,
     
    X-List-Received-Date: Tue, 16 May 2017 18:42:09 -0000
    
    Author: phil
    Date: Tue May 16 18:42:07 2017
    New Revision: 318362
    URL: https://svnweb.freebsd.org/changeset/base/318362
    
    Log:
      Tag libxo 0.7.2
    
    Added:
         - copied from r318361, vendor/Juniper/libxo/dist/
    Directory Properties:
      vendor/Juniper/libxo/0.7.2/   (props changed)
    
    From owner-svn-src-vendor@freebsd.org  Tue May 16 19:46:57 2017
    Return-Path: 
    Delivered-To: svn-src-vendor@mailman.ysv.freebsd.org
    Received: from mx1.freebsd.org (mx1.freebsd.org
     [IPv6:2001:1900:2254:206a::19:1])
     by mailman.ysv.freebsd.org (Postfix) with ESMTP id 111A3D70293;
     Tue, 16 May 2017 19:46:57 +0000 (UTC) (envelope-from dim@FreeBSD.org)
    Received: from repo.freebsd.org (repo.freebsd.org
     [IPv6:2610:1c1:1:6068::e6a:0])
     (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
     (Client did not present a certificate)
     by mx1.freebsd.org (Postfix) with ESMTPS id 82D781BC6;
     Tue, 16 May 2017 19:46:56 +0000 (UTC) (envelope-from dim@FreeBSD.org)
    Received: from repo.freebsd.org ([127.0.1.37])
     by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v4GJktuv096818;
     Tue, 16 May 2017 19:46:55 GMT (envelope-from dim@FreeBSD.org)
    Received: (from dim@localhost)
     by repo.freebsd.org (8.15.2/8.15.2/Submit) id v4GJkrP6096799;
     Tue, 16 May 2017 19:46:53 GMT (envelope-from dim@FreeBSD.org)
    Message-Id: <201705161946.v4GJkrP6096799@repo.freebsd.org>
    X-Authentication-Warning: repo.freebsd.org: dim set sender to dim@FreeBSD.org
     using -f
    From: Dimitry Andric 
    Date: Tue, 16 May 2017 19:46:53 +0000 (UTC)
    To: src-committers@freebsd.org, svn-src-all@freebsd.org,
     svn-src-vendor@freebsd.org
    Subject: svn commit: r318368 - in vendor/llvm/dist: . cmake cmake/modules docs
     include/llvm include/llvm/ADT include/llvm/Analysis include/llvm/Bitcode
     include/llvm/CodeGen include/llvm/CodeGen/GlobalISel i...
    X-SVN-Group: vendor
    MIME-Version: 1.0
    Content-Type: text/plain; charset=UTF-8
    Content-Transfer-Encoding: 8bit
    X-BeenThere: svn-src-vendor@freebsd.org
    X-Mailman-Version: 2.1.23
    Precedence: list
    List-Id: SVN commit messages for the vendor work area tree
     
    List-Unsubscribe: , 
     
    List-Archive: 
    List-Post: 
    List-Help: 
    List-Subscribe: ,
     
    X-List-Received-Date: Tue, 16 May 2017 19:46:57 -0000
    
    Author: dim
    Date: Tue May 16 19:46:52 2017
    New Revision: 318368
    URL: https://svnweb.freebsd.org/changeset/base/318368
    
    Log:
      Vendor import of llvm trunk r303197:
      https://llvm.org/svn/llvm-project/llvm/trunk@303197
    
    Added:
      vendor/llvm/dist/include/llvm/CodeGen/ExpandReductions.h   (contents, props changed)
      vendor/llvm/dist/include/llvm/DebugInfo/CodeView/RandomAccessTypeVisitor.h   (contents, props changed)
      vendor/llvm/dist/include/llvm/Support/Parallel.h   (contents, props changed)
      vendor/llvm/dist/include/llvm/ToolDrivers/
      vendor/llvm/dist/include/llvm/ToolDrivers/llvm-lib/
      vendor/llvm/dist/include/llvm/ToolDrivers/llvm-lib/LibDriver.h   (contents, props changed)
      vendor/llvm/dist/lib/CodeGen/ExpandReductions.cpp   (contents, props changed)
      vendor/llvm/dist/lib/CodeGen/LiveRangeShrink.cpp   (contents, props changed)
      vendor/llvm/dist/lib/CodeGen/ScalarizeMaskedMemIntrin.cpp   (contents, props changed)
      vendor/llvm/dist/lib/DebugInfo/CodeView/RandomAccessTypeVisitor.cpp   (contents, props changed)
      vendor/llvm/dist/lib/Fuzzer/test/OverwriteInputTest.cpp   (contents, props changed)
      vendor/llvm/dist/lib/Fuzzer/test/afl-driver.test
      vendor/llvm/dist/lib/Fuzzer/test/overwrite-input.test
      vendor/llvm/dist/lib/Support/Parallel.cpp   (contents, props changed)
      vendor/llvm/dist/lib/Target/AMDGPU/AMDGPUMachineCFGStructurizer.cpp   (contents, props changed)
      vendor/llvm/dist/lib/ToolDrivers/
      vendor/llvm/dist/lib/ToolDrivers/CMakeLists.txt   (contents, props changed)
      vendor/llvm/dist/lib/ToolDrivers/LLVMBuild.txt   (contents, props changed)
      vendor/llvm/dist/lib/ToolDrivers/llvm-lib/
      vendor/llvm/dist/lib/ToolDrivers/llvm-lib/CMakeLists.txt   (contents, props changed)
      vendor/llvm/dist/lib/ToolDrivers/llvm-lib/LLVMBuild.txt   (contents, props changed)
      vendor/llvm/dist/lib/ToolDrivers/llvm-lib/LibDriver.cpp   (contents, props changed)
      vendor/llvm/dist/lib/ToolDrivers/llvm-lib/Options.td
      vendor/llvm/dist/test/Analysis/BasicAA/cs-cs-arm.ll
      vendor/llvm/dist/test/Analysis/BasicAA/intrinsics-arm.ll
      vendor/llvm/dist/test/Analysis/CostModel/AArch64/free-widening-casts.ll
      vendor/llvm/dist/test/Analysis/CostModel/AMDGPU/shufflevector.ll
      vendor/llvm/dist/test/Analysis/ScalarEvolution/different-loops-recs.ll
      vendor/llvm/dist/test/Assembler/globalvariable-attributes.ll
      vendor/llvm/dist/test/Bitcode/globalvariable-attributes.ll
      vendor/llvm/dist/test/Bitcode/thinlto-function-summary-callgraph-sample-profile-summary.ll
      vendor/llvm/dist/test/CodeGen/AArch64/macho-global-symbols.ll
      vendor/llvm/dist/test/CodeGen/AMDGPU/GlobalISel/legalize-constant.mir
      vendor/llvm/dist/test/CodeGen/AMDGPU/GlobalISel/lit.local.cfg
      vendor/llvm/dist/test/CodeGen/AVR/select-mbb-placement-bug.ll
      vendor/llvm/dist/test/CodeGen/Generic/expand-experimental-reductions.ll
      vendor/llvm/dist/test/CodeGen/Lanai/masking_setccs.ll
      vendor/llvm/dist/test/CodeGen/MIR/ARM/PR32721_ifcvt_triangle_unanalyzable.mir
      vendor/llvm/dist/test/CodeGen/MIR/ARM/ifcvt_canFallThroughTo.mir
      vendor/llvm/dist/test/CodeGen/MSP430/hwmult16.ll
      vendor/llvm/dist/test/CodeGen/MSP430/hwmult32.ll
      vendor/llvm/dist/test/CodeGen/MSP430/hwmultf5.ll
      vendor/llvm/dist/test/CodeGen/MSP430/libcalls.ll
      vendor/llvm/dist/test/CodeGen/MSP430/promote-i8-mul.ll
      vendor/llvm/dist/test/CodeGen/PowerPC/mtvsrdd.ll
      vendor/llvm/dist/test/CodeGen/PowerPC/testComparesieqsc.ll
      vendor/llvm/dist/test/CodeGen/PowerPC/testComparesieqsi.ll
      vendor/llvm/dist/test/CodeGen/PowerPC/testComparesieqss.ll
      vendor/llvm/dist/test/CodeGen/PowerPC/testComparesiequc.ll
      vendor/llvm/dist/test/CodeGen/PowerPC/testComparesiequi.ll
      vendor/llvm/dist/test/CodeGen/PowerPC/testComparesiequs.ll
      vendor/llvm/dist/test/CodeGen/PowerPC/testCompareslleqsc.ll
      vendor/llvm/dist/test/CodeGen/PowerPC/testCompareslleqsi.ll
      vendor/llvm/dist/test/CodeGen/PowerPC/testCompareslleqss.ll
      vendor/llvm/dist/test/CodeGen/PowerPC/testComparesllequc.ll
      vendor/llvm/dist/test/CodeGen/PowerPC/testComparesllequi.ll
      vendor/llvm/dist/test/CodeGen/PowerPC/testComparesllequs.ll
      vendor/llvm/dist/test/CodeGen/SPARC/inlineasm-v9.ll
      vendor/llvm/dist/test/CodeGen/SystemZ/list-ilp-crash.ll
      vendor/llvm/dist/test/CodeGen/SystemZ/lower-copy-undef-src.mir
      vendor/llvm/dist/test/CodeGen/X86/GlobalISel/add-scalar.ll
      vendor/llvm/dist/test/CodeGen/X86/GlobalISel/br.ll
      vendor/llvm/dist/test/CodeGen/X86/GlobalISel/cmp.ll
      vendor/llvm/dist/test/CodeGen/X86/GlobalISel/legalize-cmp.mir
      vendor/llvm/dist/test/CodeGen/X86/GlobalISel/memop-scalar-x32.ll
      vendor/llvm/dist/test/CodeGen/X86/GlobalISel/memop-scalar.ll
      vendor/llvm/dist/test/CodeGen/X86/GlobalISel/memop-vec.ll
      vendor/llvm/dist/test/CodeGen/X86/GlobalISel/select-br.mir
      vendor/llvm/dist/test/CodeGen/X86/GlobalISel/select-cmp.mir
      vendor/llvm/dist/test/CodeGen/X86/GlobalISel/select-memop-scalar-x32.mir
      vendor/llvm/dist/test/CodeGen/X86/GlobalISel/select-memop-scalar.mir
      vendor/llvm/dist/test/CodeGen/X86/GlobalISel/select-memop-v128.mir
      vendor/llvm/dist/test/CodeGen/X86/O0-pipeline.ll
      vendor/llvm/dist/test/CodeGen/X86/avx512-scalar_mask.ll
      vendor/llvm/dist/test/CodeGen/X86/avx512-vselect.ll
      vendor/llvm/dist/test/CodeGen/X86/leaFixup32.mir
      vendor/llvm/dist/test/CodeGen/X86/leaFixup64.mir
      vendor/llvm/dist/test/CodeGen/X86/lrshrink.ll
      vendor/llvm/dist/test/CodeGen/X86/replace_unsupported_masked_mem_intrin.ll
      vendor/llvm/dist/test/CodeGen/X86/vector-narrow-binop.ll
      vendor/llvm/dist/test/DebugInfo/COFF/no-cus.ll
      vendor/llvm/dist/test/DebugInfo/Inputs/typeunit-header.elf-x86-64   (contents, props changed)
      vendor/llvm/dist/test/DebugInfo/Inputs/typeunit-header.s   (contents, props changed)
      vendor/llvm/dist/test/DebugInfo/X86/dbg-declare-inalloca.ll
      vendor/llvm/dist/test/DebugInfo/typeunit-header.test
      vendor/llvm/dist/test/Instrumentation/MemorySanitizer/msan_x86intrinsics.ll
      vendor/llvm/dist/test/Instrumentation/MemorySanitizer/pr32842.ll
      vendor/llvm/dist/test/LTO/Resolution/X86/ifunc.ll
      vendor/llvm/dist/test/MC/AArch64/directive-cpu-err.s   (contents, props changed)
      vendor/llvm/dist/test/MC/AsmParser/altmacro_string_escape.s   (contents, props changed)
      vendor/llvm/dist/test/MC/Disassembler/PowerPC/ppc64-encoding-p9vector.txt   (contents, props changed)
      vendor/llvm/dist/test/Object/Inputs/COFF/empty-drectve.yaml
      vendor/llvm/dist/test/Object/X86/archive-symbol-table.s   (contents, props changed)
      vendor/llvm/dist/test/Object/coff-empty-drectve.test
      vendor/llvm/dist/test/Object/wasm-invalid-start.test
      vendor/llvm/dist/test/TableGen/RegisterEncoder.td
      vendor/llvm/dist/test/Transforms/CodeExtractor/PartialInlineEntryUpdate.ll
      vendor/llvm/dist/test/Transforms/CodeExtractor/PartialInlineHighCost.ll
      vendor/llvm/dist/test/Transforms/CodeGenPrepare/section-samplepgo.ll
      vendor/llvm/dist/test/Transforms/ConstProp/calls-math-finite.ll
      vendor/llvm/dist/test/Transforms/ConstProp/sse.ll
      vendor/llvm/dist/test/Transforms/Coroutines/coro-eh-aware-edge-split.ll
      vendor/llvm/dist/test/Transforms/GVN/PRE/nonintegral.ll
      vendor/llvm/dist/test/Transforms/InstCombine/AArch64/
      vendor/llvm/dist/test/Transforms/InstCombine/AArch64/2012-04-23-Neon-Intrinsics.ll
      vendor/llvm/dist/test/Transforms/InstCombine/AArch64/lit.local.cfg
      vendor/llvm/dist/test/Transforms/InstCombine/AMDGPU/
      vendor/llvm/dist/test/Transforms/InstCombine/AMDGPU/amdgcn-intrinsics.ll
      vendor/llvm/dist/test/Transforms/InstCombine/AMDGPU/lit.local.cfg
      vendor/llvm/dist/test/Transforms/InstCombine/ARM/2012-04-23-Neon-Intrinsics.ll
      vendor/llvm/dist/test/Transforms/InstCombine/ARM/constant-fold-hang.ll
      vendor/llvm/dist/test/Transforms/InstCombine/ARM/lit.local.cfg
      vendor/llvm/dist/test/Transforms/InstCombine/ARM/neon-intrinsics.ll
      vendor/llvm/dist/test/Transforms/InstCombine/PowerPC/
      vendor/llvm/dist/test/Transforms/InstCombine/PowerPC/aligned-altivec.ll
      vendor/llvm/dist/test/Transforms/InstCombine/PowerPC/aligned-qpx.ll
      vendor/llvm/dist/test/Transforms/InstCombine/PowerPC/lit.local.cfg
      vendor/llvm/dist/test/Transforms/InstCombine/PowerPC/vsx-unaligned.ll
      vendor/llvm/dist/test/Transforms/InstCombine/X86/
      vendor/llvm/dist/test/Transforms/InstCombine/X86/X86FsubCmpCombine.ll
      vendor/llvm/dist/test/Transforms/InstCombine/X86/blend_x86.ll
      vendor/llvm/dist/test/Transforms/InstCombine/X86/lit.local.cfg
      vendor/llvm/dist/test/Transforms/InstCombine/X86/pr2645-1.ll
      vendor/llvm/dist/test/Transforms/InstCombine/X86/shufflemask-undef.ll
      vendor/llvm/dist/test/Transforms/InstCombine/X86/x86-avx2.ll
      vendor/llvm/dist/test/Transforms/InstCombine/X86/x86-avx512.ll
      vendor/llvm/dist/test/Transforms/InstCombine/X86/x86-crc32-demanded.ll
      vendor/llvm/dist/test/Transforms/InstCombine/X86/x86-f16c.ll
      vendor/llvm/dist/test/Transforms/InstCombine/X86/x86-fma.ll
      vendor/llvm/dist/test/Transforms/InstCombine/X86/x86-insertps.ll
      vendor/llvm/dist/test/Transforms/InstCombine/X86/x86-masked-memops.ll
      vendor/llvm/dist/test/Transforms/InstCombine/X86/x86-movmsk.ll
      vendor/llvm/dist/test/Transforms/InstCombine/X86/x86-muldq.ll
      vendor/llvm/dist/test/Transforms/InstCombine/X86/x86-pack.ll
      vendor/llvm/dist/test/Transforms/InstCombine/X86/x86-pshufb.ll
      vendor/llvm/dist/test/Transforms/InstCombine/X86/x86-sse.ll
      vendor/llvm/dist/test/Transforms/InstCombine/X86/x86-sse2.ll
      vendor/llvm/dist/test/Transforms/InstCombine/X86/x86-sse41.ll
      vendor/llvm/dist/test/Transforms/InstCombine/X86/x86-sse4a.ll
      vendor/llvm/dist/test/Transforms/InstCombine/X86/x86-vec_demanded_elts.ll
      vendor/llvm/dist/test/Transforms/InstCombine/X86/x86-vector-shifts.ll
      vendor/llvm/dist/test/Transforms/InstCombine/X86/x86-vperm2.ll
      vendor/llvm/dist/test/Transforms/InstCombine/X86/x86-vpermil.ll
      vendor/llvm/dist/test/Transforms/InstCombine/X86/x86-xop.ll
      vendor/llvm/dist/test/Transforms/InstCombine/constant-fold-iteration.ll
      vendor/llvm/dist/test/Transforms/InstNamer/
      vendor/llvm/dist/test/Transforms/InstNamer/basic.ll
      vendor/llvm/dist/test/Transforms/InstSimplify/or.ll
      vendor/llvm/dist/test/Transforms/LoopIdiom/ARM/
      vendor/llvm/dist/test/Transforms/LoopIdiom/ARM/ctlz.ll
      vendor/llvm/dist/test/Transforms/LoopIdiom/X86/ctlz.ll
      vendor/llvm/dist/test/Transforms/LoopVectorize/X86/svml-calls-finite.ll
      vendor/llvm/dist/test/Transforms/LoopVectorize/pr32859.ll
      vendor/llvm/dist/test/Transforms/NewGVN/pr32934.ll
      vendor/llvm/dist/test/Transforms/NewGVN/pr32952.ll
      vendor/llvm/dist/test/Transforms/NewGVN/verify-memoryphi.ll
      vendor/llvm/dist/test/Transforms/SLPVectorizer/AArch64/64-bit-vector.ll
      vendor/llvm/dist/test/Transforms/SLPVectorizer/AArch64/remarks.ll
      vendor/llvm/dist/test/Transforms/SLPVectorizer/X86/arith-add.ll
      vendor/llvm/dist/test/Transforms/SLPVectorizer/X86/arith-mul.ll
      vendor/llvm/dist/test/Transforms/SLPVectorizer/X86/arith-sub.ll
      vendor/llvm/dist/test/Transforms/SLPVectorizer/X86/shift-ashr.ll
      vendor/llvm/dist/test/Transforms/SLPVectorizer/X86/shift-lshr.ll
      vendor/llvm/dist/test/Transforms/SLPVectorizer/X86/shift-shl.ll
      vendor/llvm/dist/test/tools/llvm-pdbdump/symbol-filters.test
      vendor/llvm/dist/test/tools/llvm-readobj/wasm-invalid.test
      vendor/llvm/dist/unittests/DebugInfo/CodeView/
      vendor/llvm/dist/unittests/DebugInfo/CodeView/CMakeLists.txt   (contents, props changed)
      vendor/llvm/dist/unittests/DebugInfo/CodeView/ErrorChecking.h   (contents, props changed)
      vendor/llvm/dist/unittests/DebugInfo/CodeView/RandomAccessVisitorTest.cpp   (contents, props changed)
      vendor/llvm/dist/unittests/Support/ParallelTest.cpp   (contents, props changed)
      vendor/llvm/dist/utils/vscode/
      vendor/llvm/dist/utils/vscode/README
      vendor/llvm/dist/utils/vscode/tablegen/
      vendor/llvm/dist/utils/vscode/tablegen/.vscode/
      vendor/llvm/dist/utils/vscode/tablegen/.vscode/launch.json
      vendor/llvm/dist/utils/vscode/tablegen/CHANGELOG.md
      vendor/llvm/dist/utils/vscode/tablegen/README.md
      vendor/llvm/dist/utils/vscode/tablegen/language-configuration.json
      vendor/llvm/dist/utils/vscode/tablegen/package.json
      vendor/llvm/dist/utils/vscode/tablegen/syntaxes/
      vendor/llvm/dist/utils/vscode/tablegen/syntaxes/TableGen.tmLanguage
      vendor/llvm/dist/utils/vscode/tablegen/vsc-extension-quickstart.md
    Deleted:
      vendor/llvm/dist/include/llvm/LibDriver/
      vendor/llvm/dist/lib/DebugInfo/CodeView/ModuleDebugUnknownFragment.cpp
      vendor/llvm/dist/lib/LibDriver/
      vendor/llvm/dist/test/CodeGen/MSP430/2009-11-05-8BitLibcalls.ll
      vendor/llvm/dist/test/CodeGen/X86/2012-11-30-handlemove-dbg.ll
      vendor/llvm/dist/test/CodeGen/X86/2012-11-30-misched-dbg.ll
      vendor/llvm/dist/test/CodeGen/X86/2012-11-30-regpres-dbg.ll
      vendor/llvm/dist/test/CodeGen/X86/GlobalISel/memop-x32.ll
      vendor/llvm/dist/test/CodeGen/X86/GlobalISel/memop.ll
      vendor/llvm/dist/test/CodeGen/X86/GlobalISel/select-memop-x32.mir
      vendor/llvm/dist/test/CodeGen/X86/GlobalISel/select-memop.mir
      vendor/llvm/dist/test/Transforms/InstCombine/2012-04-23-Neon-Intrinsics.ll
      vendor/llvm/dist/test/Transforms/InstCombine/X86FsubCmpCombine.ll
      vendor/llvm/dist/test/Transforms/InstCombine/aligned-altivec.ll
      vendor/llvm/dist/test/Transforms/InstCombine/aligned-qpx.ll
      vendor/llvm/dist/test/Transforms/InstCombine/amdgcn-intrinsics.ll
      vendor/llvm/dist/test/Transforms/InstCombine/bit-tracking.ll
      vendor/llvm/dist/test/Transforms/InstCombine/blend_x86.ll
      vendor/llvm/dist/test/Transforms/InstCombine/constant-fold-hang.ll
      vendor/llvm/dist/test/Transforms/InstCombine/neon-intrinsics.ll
      vendor/llvm/dist/test/Transforms/InstCombine/pr2645-1.ll
      vendor/llvm/dist/test/Transforms/InstCombine/shufflemask-undef.ll
      vendor/llvm/dist/test/Transforms/InstCombine/vsx-unaligned.ll
      vendor/llvm/dist/test/Transforms/InstCombine/x86-avx2.ll
      vendor/llvm/dist/test/Transforms/InstCombine/x86-avx512.ll
      vendor/llvm/dist/test/Transforms/InstCombine/x86-crc32-demanded.ll
      vendor/llvm/dist/test/Transforms/InstCombine/x86-f16c.ll
      vendor/llvm/dist/test/Transforms/InstCombine/x86-fma.ll
      vendor/llvm/dist/test/Transforms/InstCombine/x86-insertps.ll
      vendor/llvm/dist/test/Transforms/InstCombine/x86-masked-memops.ll
      vendor/llvm/dist/test/Transforms/InstCombine/x86-movmsk.ll
      vendor/llvm/dist/test/Transforms/InstCombine/x86-muldq.ll
      vendor/llvm/dist/test/Transforms/InstCombine/x86-pack.ll
      vendor/llvm/dist/test/Transforms/InstCombine/x86-pshufb.ll
      vendor/llvm/dist/test/Transforms/InstCombine/x86-sse.ll
      vendor/llvm/dist/test/Transforms/InstCombine/x86-sse2.ll
      vendor/llvm/dist/test/Transforms/InstCombine/x86-sse41.ll
      vendor/llvm/dist/test/Transforms/InstCombine/x86-sse4a.ll
      vendor/llvm/dist/test/Transforms/InstCombine/x86-vector-shifts.ll
      vendor/llvm/dist/test/Transforms/InstCombine/x86-vperm2.ll
      vendor/llvm/dist/test/Transforms/InstCombine/x86-vpermil.ll
      vendor/llvm/dist/test/Transforms/InstCombine/x86-xop.ll
      vendor/llvm/dist/test/Transforms/InstSimplify/apint-or.ll
      vendor/llvm/dist/test/Transforms/SpeculativeExecution/spec-other.ll
      vendor/llvm/dist/test/Transforms/SpeculativeExecution/spec-vector.ll
    Modified:
      vendor/llvm/dist/CREDITS.TXT
      vendor/llvm/dist/cmake/config-ix.cmake
      vendor/llvm/dist/cmake/modules/AddSphinxTarget.cmake
      vendor/llvm/dist/docs/CMakeLists.txt
      vendor/llvm/dist/docs/GettingStarted.rst
      vendor/llvm/dist/docs/LangRef.rst
      vendor/llvm/dist/docs/Lexicon.rst
      vendor/llvm/dist/docs/LibFuzzer.rst
      vendor/llvm/dist/docs/ReleaseNotes.rst
      vendor/llvm/dist/include/llvm/ADT/APInt.h
      vendor/llvm/dist/include/llvm/ADT/BitVector.h
      vendor/llvm/dist/include/llvm/ADT/STLExtras.h
      vendor/llvm/dist/include/llvm/ADT/StringExtras.h
      vendor/llvm/dist/include/llvm/Analysis/CallGraph.h
      vendor/llvm/dist/include/llvm/Analysis/ProfileSummaryInfo.h
      vendor/llvm/dist/include/llvm/Analysis/ScalarEvolution.h
      vendor/llvm/dist/include/llvm/Analysis/TargetLibraryInfo.def
      vendor/llvm/dist/include/llvm/Analysis/TargetTransformInfo.h
      vendor/llvm/dist/include/llvm/Analysis/TargetTransformInfoImpl.h
      vendor/llvm/dist/include/llvm/Analysis/ValueTracking.h
      vendor/llvm/dist/include/llvm/Bitcode/BitcodeReader.h
      vendor/llvm/dist/include/llvm/CodeGen/GlobalISel/LegalizerInfo.h
      vendor/llvm/dist/include/llvm/CodeGen/GlobalISel/Utils.h
      vendor/llvm/dist/include/llvm/CodeGen/ISDOpcodes.h
      vendor/llvm/dist/include/llvm/CodeGen/MachineCombinerPattern.h
      vendor/llvm/dist/include/llvm/CodeGen/Passes.h
      vendor/llvm/dist/include/llvm/CodeGen/SelectionDAG.h
      vendor/llvm/dist/include/llvm/DebugInfo/CodeView/CVTypeVisitor.h
      vendor/llvm/dist/include/llvm/DebugInfo/CodeView/TypeDatabase.h
      vendor/llvm/dist/include/llvm/DebugInfo/CodeView/TypeDatabaseVisitor.h
      vendor/llvm/dist/include/llvm/DebugInfo/CodeView/TypeDeserializer.h
      vendor/llvm/dist/include/llvm/DebugInfo/CodeView/TypeDumpVisitor.h
      vendor/llvm/dist/include/llvm/DebugInfo/CodeView/TypeIndex.h
      vendor/llvm/dist/include/llvm/DebugInfo/CodeView/TypeVisitorCallbackPipeline.h
      vendor/llvm/dist/include/llvm/DebugInfo/CodeView/TypeVisitorCallbacks.h
      vendor/llvm/dist/include/llvm/DebugInfo/DWARF/DWARFContext.h
      vendor/llvm/dist/include/llvm/DebugInfo/DWARF/DWARFDebugLine.h
      vendor/llvm/dist/include/llvm/DebugInfo/DWARF/DWARFDebugRangeList.h
      vendor/llvm/dist/include/llvm/DebugInfo/DWARF/DWARFRelocMap.h
      vendor/llvm/dist/include/llvm/DebugInfo/DWARF/DWARFVerifier.h
      vendor/llvm/dist/include/llvm/DebugInfo/PDB/Native/RawTypes.h
      vendor/llvm/dist/include/llvm/DebugInfo/PDB/Native/TpiStream.h
      vendor/llvm/dist/include/llvm/DebugInfo/PDB/Native/TpiStreamBuilder.h
      vendor/llvm/dist/include/llvm/ExecutionEngine/Orc/CompileOnDemandLayer.h
      vendor/llvm/dist/include/llvm/ExecutionEngine/Orc/OrcRemoteTargetClient.h
      vendor/llvm/dist/include/llvm/ExecutionEngine/Orc/RTDyldObjectLinkingLayer.h
      vendor/llvm/dist/include/llvm/ExecutionEngine/RTDyldMemoryManager.h
      vendor/llvm/dist/include/llvm/ExecutionEngine/RuntimeDyld.h
      vendor/llvm/dist/include/llvm/IR/Attributes.h
      vendor/llvm/dist/include/llvm/IR/CallingConv.h
      vendor/llvm/dist/include/llvm/IR/Constants.h
      vendor/llvm/dist/include/llvm/IR/DebugInfoMetadata.h
      vendor/llvm/dist/include/llvm/IR/DebugLoc.h
      vendor/llvm/dist/include/llvm/IR/DerivedTypes.h
      vendor/llvm/dist/include/llvm/IR/DiagnosticInfo.h
      vendor/llvm/dist/include/llvm/IR/Function.h
      vendor/llvm/dist/include/llvm/IR/GetElementPtrTypeIterator.h
      vendor/llvm/dist/include/llvm/IR/GlobalAlias.h
      vendor/llvm/dist/include/llvm/IR/GlobalIFunc.h
      vendor/llvm/dist/include/llvm/IR/GlobalObject.h
      vendor/llvm/dist/include/llvm/IR/GlobalValue.h
      vendor/llvm/dist/include/llvm/IR/GlobalVariable.h
      vendor/llvm/dist/include/llvm/IR/IRBuilder.h
      vendor/llvm/dist/include/llvm/IR/InstrTypes.h
      vendor/llvm/dist/include/llvm/IR/Instruction.h
      vendor/llvm/dist/include/llvm/IR/Instructions.h
      vendor/llvm/dist/include/llvm/IR/Intrinsics.td
      vendor/llvm/dist/include/llvm/IR/LLVMContext.h
      vendor/llvm/dist/include/llvm/IR/LegacyPassManager.h
      vendor/llvm/dist/include/llvm/IR/Module.h
      vendor/llvm/dist/include/llvm/IR/ModuleSummaryIndex.h
      vendor/llvm/dist/include/llvm/IR/PassManager.h
      vendor/llvm/dist/include/llvm/IR/PassManagerInternal.h
      vendor/llvm/dist/include/llvm/IR/PatternMatch.h
      vendor/llvm/dist/include/llvm/IR/ProfileSummary.h
      vendor/llvm/dist/include/llvm/IR/Statepoint.h
      vendor/llvm/dist/include/llvm/IR/SymbolTableListTraits.h
      vendor/llvm/dist/include/llvm/IR/TrackingMDRef.h
      vendor/llvm/dist/include/llvm/IR/Type.h
      vendor/llvm/dist/include/llvm/IR/TypeFinder.h
      vendor/llvm/dist/include/llvm/IR/Use.h
      vendor/llvm/dist/include/llvm/IR/UseListOrder.h
      vendor/llvm/dist/include/llvm/IR/User.h
      vendor/llvm/dist/include/llvm/IR/Value.h
      vendor/llvm/dist/include/llvm/IR/ValueHandle.h
      vendor/llvm/dist/include/llvm/IR/ValueMap.h
      vendor/llvm/dist/include/llvm/IR/ValueSymbolTable.h
      vendor/llvm/dist/include/llvm/IR/Verifier.h
      vendor/llvm/dist/include/llvm/InitializePasses.h
      vendor/llvm/dist/include/llvm/LinkAllPasses.h
      vendor/llvm/dist/include/llvm/Object/Wasm.h
      vendor/llvm/dist/include/llvm/ObjectYAML/WasmYAML.h
      vendor/llvm/dist/include/llvm/ProfileData/SampleProfWriter.h
      vendor/llvm/dist/include/llvm/Support/BinaryStreamArray.h
      vendor/llvm/dist/include/llvm/Support/Compiler.h
      vendor/llvm/dist/include/llvm/Support/KnownBits.h
      vendor/llvm/dist/include/llvm/Support/Wasm.h
      vendor/llvm/dist/include/llvm/Target/Target.td
      vendor/llvm/dist/include/llvm/Target/TargetInstrInfo.h
      vendor/llvm/dist/include/llvm/Target/TargetLowering.h
      vendor/llvm/dist/include/llvm/Target/TargetSchedule.td
      vendor/llvm/dist/include/llvm/Target/TargetSelectionDAG.td
      vendor/llvm/dist/include/llvm/Transforms/Utils/Cloning.h
      vendor/llvm/dist/include/llvm/Transforms/Utils/LoopUtils.h
      vendor/llvm/dist/include/llvm/Transforms/Vectorize/SLPVectorizer.h
      vendor/llvm/dist/include/llvm/module.modulemap
      vendor/llvm/dist/lib/Analysis/BasicAliasAnalysis.cpp
      vendor/llvm/dist/lib/Analysis/BranchProbabilityInfo.cpp
      vendor/llvm/dist/lib/Analysis/CallGraph.cpp
      vendor/llvm/dist/lib/Analysis/ConstantFolding.cpp
      vendor/llvm/dist/lib/Analysis/DemandedBits.cpp
      vendor/llvm/dist/lib/Analysis/InlineCost.cpp
      vendor/llvm/dist/lib/Analysis/InstructionSimplify.cpp
      vendor/llvm/dist/lib/Analysis/ModuleSummaryAnalysis.cpp
      vendor/llvm/dist/lib/Analysis/OptimizationDiagnosticInfo.cpp
      vendor/llvm/dist/lib/Analysis/ProfileSummaryInfo.cpp
      vendor/llvm/dist/lib/Analysis/ScalarEvolution.cpp
      vendor/llvm/dist/lib/Analysis/TargetLibraryInfo.cpp
      vendor/llvm/dist/lib/Analysis/TargetTransformInfo.cpp
      vendor/llvm/dist/lib/Analysis/ValueTracking.cpp
      vendor/llvm/dist/lib/Analysis/VectorUtils.cpp
      vendor/llvm/dist/lib/AsmParser/LLParser.cpp
      vendor/llvm/dist/lib/Bitcode/Reader/BitcodeReader.cpp
      vendor/llvm/dist/lib/Bitcode/Reader/MetadataLoader.cpp
      vendor/llvm/dist/lib/Bitcode/Writer/BitcodeWriter.cpp
      vendor/llvm/dist/lib/Bitcode/Writer/ValueEnumerator.cpp
      vendor/llvm/dist/lib/CMakeLists.txt
      vendor/llvm/dist/lib/CodeGen/AsmPrinter/CodeViewDebug.cpp
      vendor/llvm/dist/lib/CodeGen/AsmPrinter/DebugHandlerBase.cpp
      vendor/llvm/dist/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp
      vendor/llvm/dist/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h
      vendor/llvm/dist/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
      vendor/llvm/dist/lib/CodeGen/AsmPrinter/DwarfDebug.h
      vendor/llvm/dist/lib/CodeGen/AsmPrinter/DwarfFile.h
      vendor/llvm/dist/lib/CodeGen/AsmPrinter/DwarfUnit.cpp
      vendor/llvm/dist/lib/CodeGen/AsmPrinter/DwarfUnit.h
      vendor/llvm/dist/lib/CodeGen/AsmPrinter/WinException.cpp
      vendor/llvm/dist/lib/CodeGen/AtomicExpandPass.cpp
      vendor/llvm/dist/lib/CodeGen/CMakeLists.txt
      vendor/llvm/dist/lib/CodeGen/CodeGen.cpp
      vendor/llvm/dist/lib/CodeGen/CodeGenPrepare.cpp
      vendor/llvm/dist/lib/CodeGen/ExpandPostRAPseudos.cpp
      vendor/llvm/dist/lib/CodeGen/GlobalISel/LegalizerInfo.cpp
      vendor/llvm/dist/lib/CodeGen/GlobalISel/RegBankSelect.cpp
      vendor/llvm/dist/lib/CodeGen/GlobalISel/Utils.cpp
      vendor/llvm/dist/lib/CodeGen/IfConversion.cpp
      vendor/llvm/dist/lib/CodeGen/LiveVariables.cpp
      vendor/llvm/dist/lib/CodeGen/MachineBlockPlacement.cpp
      vendor/llvm/dist/lib/CodeGen/MachineVerifier.cpp
      vendor/llvm/dist/lib/CodeGen/PHIElimination.cpp
      vendor/llvm/dist/lib/CodeGen/RegisterCoalescer.cpp
      vendor/llvm/dist/lib/CodeGen/RegisterScavenging.cpp
      vendor/llvm/dist/lib/CodeGen/SafeStack.cpp
      vendor/llvm/dist/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
      vendor/llvm/dist/lib/CodeGen/SelectionDAG/FastISel.cpp
      vendor/llvm/dist/lib/CodeGen/SelectionDAG/FunctionLoweringInfo.cpp
      vendor/llvm/dist/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp
      vendor/llvm/dist/lib/CodeGen/SelectionDAG/LegalizeTypes.h
      vendor/llvm/dist/lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp
      vendor/llvm/dist/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
      vendor/llvm/dist/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
      vendor/llvm/dist/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.h
      vendor/llvm/dist/lib/CodeGen/SelectionDAG/SelectionDAGDumper.cpp
      vendor/llvm/dist/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp
      vendor/llvm/dist/lib/CodeGen/SelectionDAG/TargetLowering.cpp
      vendor/llvm/dist/lib/CodeGen/ShrinkWrap.cpp
      vendor/llvm/dist/lib/CodeGen/SjLjEHPrepare.cpp
      vendor/llvm/dist/lib/CodeGen/TargetLoweringObjectFileImpl.cpp
      vendor/llvm/dist/lib/CodeGen/TargetPassConfig.cpp
      vendor/llvm/dist/lib/CodeGen/TwoAddressInstructionPass.cpp
      vendor/llvm/dist/lib/CodeGen/UnreachableBlockElim.cpp
      vendor/llvm/dist/lib/DebugInfo/CodeView/CMakeLists.txt
      vendor/llvm/dist/lib/DebugInfo/CodeView/CVTypeVisitor.cpp
      vendor/llvm/dist/lib/DebugInfo/CodeView/TypeDatabase.cpp
      vendor/llvm/dist/lib/DebugInfo/CodeView/TypeDatabaseVisitor.cpp
      vendor/llvm/dist/lib/DebugInfo/CodeView/TypeDumpVisitor.cpp
      vendor/llvm/dist/lib/DebugInfo/DWARF/DWARFContext.cpp
      vendor/llvm/dist/lib/DebugInfo/DWARF/DWARFDebugAranges.cpp
      vendor/llvm/dist/lib/DebugInfo/DWARF/DWARFDebugRangeList.cpp
      vendor/llvm/dist/lib/DebugInfo/DWARF/DWARFDie.cpp
      vendor/llvm/dist/lib/DebugInfo/DWARF/DWARFTypeUnit.cpp
      vendor/llvm/dist/lib/DebugInfo/DWARF/DWARFUnit.cpp
      vendor/llvm/dist/lib/DebugInfo/DWARF/DWARFVerifier.cpp
      vendor/llvm/dist/lib/DebugInfo/PDB/Native/TpiStreamBuilder.cpp
      vendor/llvm/dist/lib/ExecutionEngine/Orc/OrcMCJITReplacement.h
      vendor/llvm/dist/lib/ExecutionEngine/RuntimeDyld/RTDyldMemoryManager.cpp
      vendor/llvm/dist/lib/ExecutionEngine/RuntimeDyld/RuntimeDyld.cpp
      vendor/llvm/dist/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldELF.cpp
      vendor/llvm/dist/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldELF.h
      vendor/llvm/dist/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldImpl.h
      vendor/llvm/dist/lib/ExecutionEngine/RuntimeDyld/Targets/RuntimeDyldCOFFI386.h
      vendor/llvm/dist/lib/ExecutionEngine/RuntimeDyld/Targets/RuntimeDyldCOFFThumb.h
      vendor/llvm/dist/lib/ExecutionEngine/RuntimeDyld/Targets/RuntimeDyldCOFFX86_64.h
      vendor/llvm/dist/lib/Fuzzer/FuzzerDriver.cpp
      vendor/llvm/dist/lib/Fuzzer/FuzzerFlags.def
      vendor/llvm/dist/lib/Fuzzer/FuzzerInternal.h
      vendor/llvm/dist/lib/Fuzzer/FuzzerLoop.cpp
      vendor/llvm/dist/lib/Fuzzer/FuzzerMutate.cpp
      vendor/llvm/dist/lib/Fuzzer/afl/afl_driver.cpp
      vendor/llvm/dist/lib/Fuzzer/test/AFLDriverTest.cpp
      vendor/llvm/dist/lib/Fuzzer/test/CMakeLists.txt
      vendor/llvm/dist/lib/IR/AsmWriter.cpp
      vendor/llvm/dist/lib/IR/AttributeImpl.h
      vendor/llvm/dist/lib/IR/Attributes.cpp
      vendor/llvm/dist/lib/IR/ConstantFold.cpp
      vendor/llvm/dist/lib/IR/ConstantRange.cpp
      vendor/llvm/dist/lib/IR/Constants.cpp
      vendor/llvm/dist/lib/IR/ConstantsContext.h
      vendor/llvm/dist/lib/IR/DebugInfoMetadata.cpp
      vendor/llvm/dist/lib/IR/DebugLoc.cpp
      vendor/llvm/dist/lib/IR/DiagnosticInfo.cpp
      vendor/llvm/dist/lib/IR/Function.cpp
      vendor/llvm/dist/lib/IR/Globals.cpp
      vendor/llvm/dist/lib/IR/IRBuilder.cpp
      vendor/llvm/dist/lib/IR/Instruction.cpp
      vendor/llvm/dist/lib/IR/Instructions.cpp
      vendor/llvm/dist/lib/IR/LegacyPassManager.cpp
      vendor/llvm/dist/lib/IR/Module.cpp
      vendor/llvm/dist/lib/IR/Type.cpp
      vendor/llvm/dist/lib/IR/Verifier.cpp
      vendor/llvm/dist/lib/LLVMBuild.txt
      vendor/llvm/dist/lib/LTO/LTO.cpp
      vendor/llvm/dist/lib/LTO/LTOCodeGenerator.cpp
      vendor/llvm/dist/lib/LTO/ThinLTOCodeGenerator.cpp
      vendor/llvm/dist/lib/Linker/IRMover.cpp
      vendor/llvm/dist/lib/MC/MCObjectStreamer.cpp
      vendor/llvm/dist/lib/MC/MCParser/AsmParser.cpp
      vendor/llvm/dist/lib/Object/COFFObjectFile.cpp
      vendor/llvm/dist/lib/Object/WasmObjectFile.cpp
      vendor/llvm/dist/lib/ObjectYAML/WasmYAML.cpp
      vendor/llvm/dist/lib/ProfileData/SampleProfWriter.cpp
      vendor/llvm/dist/lib/Support/APInt.cpp
      vendor/llvm/dist/lib/Support/CMakeLists.txt
      vendor/llvm/dist/lib/Support/Unix/Path.inc
      vendor/llvm/dist/lib/Support/Unix/Process.inc
      vendor/llvm/dist/lib/Target/AArch64/AArch64.td
      vendor/llvm/dist/lib/Target/AArch64/AArch64CallLowering.cpp
      vendor/llvm/dist/lib/Target/AArch64/AArch64FastISel.cpp
      vendor/llvm/dist/lib/Target/AArch64/AArch64ISelLowering.cpp
      vendor/llvm/dist/lib/Target/AArch64/AArch64InstrInfo.cpp
      vendor/llvm/dist/lib/Target/AArch64/AArch64InstrInfo.td
      vendor/llvm/dist/lib/Target/AArch64/AArch64RegisterBankInfo.cpp
      vendor/llvm/dist/lib/Target/AArch64/AArch64SchedFalkorDetails.td
      vendor/llvm/dist/lib/Target/AArch64/AArch64SchedFalkorWriteRes.td
      vendor/llvm/dist/lib/Target/AArch64/AArch64Subtarget.cpp
      vendor/llvm/dist/lib/Target/AArch64/AArch64Subtarget.h
      vendor/llvm/dist/lib/Target/AArch64/AArch64TargetObjectFile.cpp
      vendor/llvm/dist/lib/Target/AArch64/AArch64TargetObjectFile.h
      vendor/llvm/dist/lib/Target/AArch64/AArch64TargetTransformInfo.cpp
      vendor/llvm/dist/lib/Target/AArch64/AArch64TargetTransformInfo.h
      vendor/llvm/dist/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp
      vendor/llvm/dist/lib/Target/AArch64/MCTargetDesc/AArch64MCAsmInfo.cpp
      vendor/llvm/dist/lib/Target/AMDGPU/AMDGPU.h
      vendor/llvm/dist/lib/Target/AMDGPU/AMDGPU.td
      vendor/llvm/dist/lib/Target/AMDGPU/AMDGPUISelDAGToDAG.cpp
      vendor/llvm/dist/lib/Target/AMDGPU/AMDGPUISelLowering.cpp
      vendor/llvm/dist/lib/Target/AMDGPU/AMDGPUISelLowering.h
      vendor/llvm/dist/lib/Target/AMDGPU/AMDGPUInstructionSelector.cpp
      vendor/llvm/dist/lib/Target/AMDGPU/AMDGPULegalizerInfo.cpp
      vendor/llvm/dist/lib/Target/AMDGPU/AMDGPUPromoteAlloca.cpp
      vendor/llvm/dist/lib/Target/AMDGPU/AMDGPUSubtarget.cpp
      vendor/llvm/dist/lib/Target/AMDGPU/AMDGPUSubtarget.h
      vendor/llvm/dist/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp
      vendor/llvm/dist/lib/Target/AMDGPU/AMDGPUTargetTransformInfo.cpp
      vendor/llvm/dist/lib/Target/AMDGPU/AMDGPUTargetTransformInfo.h
      vendor/llvm/dist/lib/Target/AMDGPU/CMakeLists.txt
      vendor/llvm/dist/lib/Target/AMDGPU/FLATInstructions.td
      vendor/llvm/dist/lib/Target/AMDGPU/GCNRegPressure.cpp
      vendor/llvm/dist/lib/Target/AMDGPU/GCNRegPressure.h
      vendor/llvm/dist/lib/Target/AMDGPU/GCNSchedStrategy.cpp
      vendor/llvm/dist/lib/Target/AMDGPU/GCNSchedStrategy.h
      vendor/llvm/dist/lib/Target/AMDGPU/SIAnnotateControlFlow.cpp
      vendor/llvm/dist/lib/Target/AMDGPU/SIISelLowering.cpp
      vendor/llvm/dist/lib/Target/AMDGPU/SIISelLowering.h
      vendor/llvm/dist/lib/Target/AMDGPU/SIInstrInfo.cpp
      vendor/llvm/dist/lib/Target/AMDGPU/SIInstrInfo.h
      vendor/llvm/dist/lib/Target/AMDGPU/SIInstructions.td
      vendor/llvm/dist/lib/Target/AMDGPU/VOP2Instructions.td
      vendor/llvm/dist/lib/Target/AMDGPU/VOP3Instructions.td
      vendor/llvm/dist/lib/Target/ARM/ARMBaseInstrInfo.h
      vendor/llvm/dist/lib/Target/ARM/ARMCallLowering.cpp
      vendor/llvm/dist/lib/Target/ARM/ARMFastISel.cpp
      vendor/llvm/dist/lib/Target/ARM/ARMISelLowering.cpp
      vendor/llvm/dist/lib/Target/ARM/ARMISelLowering.h
      vendor/llvm/dist/lib/Target/ARM/ARMInstrInfo.td
      vendor/llvm/dist/lib/Target/ARM/ARMInstrThumb.td
      vendor/llvm/dist/lib/Target/ARM/ARMInstructionSelector.cpp
      vendor/llvm/dist/lib/Target/ARM/ARMLegalizerInfo.cpp
      vendor/llvm/dist/lib/Target/ARM/ARMOptimizeBarriersPass.cpp
      vendor/llvm/dist/lib/Target/ARM/ARMRegisterBankInfo.cpp
      vendor/llvm/dist/lib/Target/ARM/ARMTargetMachine.cpp
      vendor/llvm/dist/lib/Target/AVR/AVRFrameLowering.cpp
      vendor/llvm/dist/lib/Target/AVR/AVRISelLowering.cpp
      vendor/llvm/dist/lib/Target/AVR/AVRInstrInfo.td
      vendor/llvm/dist/lib/Target/AVR/AVRRegisterInfo.cpp
      vendor/llvm/dist/lib/Target/BPF/BPFISelLowering.cpp
      vendor/llvm/dist/lib/Target/BPF/BPFInstrInfo.td
      vendor/llvm/dist/lib/Target/Hexagon/HexagonISelLowering.cpp
      vendor/llvm/dist/lib/Target/Hexagon/HexagonLoopIdiomRecognition.cpp
      vendor/llvm/dist/lib/Target/Hexagon/HexagonPatterns.td
      vendor/llvm/dist/lib/Target/Hexagon/HexagonPseudo.td
      vendor/llvm/dist/lib/Target/Lanai/LanaiISelLowering.cpp
      vendor/llvm/dist/lib/Target/Lanai/LanaiISelLowering.h
      vendor/llvm/dist/lib/Target/Lanai/LanaiInstrInfo.td
      vendor/llvm/dist/lib/Target/MSP430/MSP430FrameLowering.cpp
      vendor/llvm/dist/lib/Target/MSP430/MSP430ISelLowering.cpp
      vendor/llvm/dist/lib/Target/MSP430/MSP430InstrInfo.h
      vendor/llvm/dist/lib/Target/MSP430/MSP430InstrInfo.td
      vendor/llvm/dist/lib/Target/MSP430/MSP430RegisterInfo.cpp
      vendor/llvm/dist/lib/Target/Mips/MipsFastISel.cpp
      vendor/llvm/dist/lib/Target/Mips/MipsISelLowering.cpp
      vendor/llvm/dist/lib/Target/Mips/MipsInstrInfo.td
      vendor/llvm/dist/lib/Target/Mips/MipsOptimizePICCall.cpp
      vendor/llvm/dist/lib/Target/NVPTX/NVPTXISelLowering.cpp
      vendor/llvm/dist/lib/Target/NVPTX/NVPTXInstrInfo.td
      vendor/llvm/dist/lib/Target/PowerPC/Disassembler/PPCDisassembler.cpp
      vendor/llvm/dist/lib/Target/PowerPC/InstPrinter/PPCInstPrinter.cpp
      vendor/llvm/dist/lib/Target/PowerPC/PPCFastISel.cpp
      vendor/llvm/dist/lib/Target/PowerPC/PPCISelDAGToDAG.cpp
      vendor/llvm/dist/lib/Target/PowerPC/PPCISelLowering.cpp
      vendor/llvm/dist/lib/Target/PowerPC/PPCISelLowering.h
      vendor/llvm/dist/lib/Target/PowerPC/PPCInstr64Bit.td
      vendor/llvm/dist/lib/Target/PowerPC/PPCInstrAltivec.td
      vendor/llvm/dist/lib/Target/PowerPC/PPCInstrInfo.td
      vendor/llvm/dist/lib/Target/PowerPC/PPCInstrVSX.td
      vendor/llvm/dist/lib/Target/PowerPC/PPCTLSDynamicCall.cpp
      vendor/llvm/dist/lib/Target/Sparc/SparcISelLowering.cpp
      vendor/llvm/dist/lib/Target/Sparc/SparcInstrInfo.td
      vendor/llvm/dist/lib/Target/Sparc/SparcRegisterInfo.td
      vendor/llvm/dist/lib/Target/SystemZ/AsmParser/SystemZAsmParser.cpp
      vendor/llvm/dist/lib/Target/SystemZ/Disassembler/SystemZDisassembler.cpp
      vendor/llvm/dist/lib/Target/SystemZ/MCTargetDesc/SystemZMCCodeEmitter.cpp
      vendor/llvm/dist/lib/Target/SystemZ/README.txt
      vendor/llvm/dist/lib/Target/SystemZ/SystemZFeatures.td
      vendor/llvm/dist/lib/Target/SystemZ/SystemZISelLowering.cpp
      vendor/llvm/dist/lib/Target/SystemZ/SystemZISelLowering.h
      vendor/llvm/dist/lib/Target/SystemZ/SystemZInstrFP.td
      vendor/llvm/dist/lib/Target/SystemZ/SystemZInstrFormats.td
      vendor/llvm/dist/lib/Target/SystemZ/SystemZInstrInfo.td
      vendor/llvm/dist/lib/Target/SystemZ/SystemZOperands.td
      vendor/llvm/dist/lib/Target/SystemZ/SystemZOperators.td
      vendor/llvm/dist/lib/Target/SystemZ/SystemZSchedule.td
      vendor/llvm/dist/lib/Target/SystemZ/SystemZScheduleZ13.td
      vendor/llvm/dist/lib/Target/SystemZ/SystemZScheduleZ196.td
      vendor/llvm/dist/lib/Target/SystemZ/SystemZScheduleZEC12.td
      vendor/llvm/dist/lib/Target/SystemZ/SystemZSubtarget.cpp
      vendor/llvm/dist/lib/Target/SystemZ/SystemZSubtarget.h
      vendor/llvm/dist/lib/Target/WebAssembly/WebAssemblyInstrCall.td
      vendor/llvm/dist/lib/Target/WebAssembly/WebAssemblyInstrInfo.td
      vendor/llvm/dist/lib/Target/X86/X86.td
      vendor/llvm/dist/lib/Target/X86/X86FastISel.cpp
      vendor/llvm/dist/lib/Target/X86/X86FixupLEAs.cpp
      vendor/llvm/dist/lib/Target/X86/X86ISelDAGToDAG.cpp
      vendor/llvm/dist/lib/Target/X86/X86ISelLowering.cpp
      vendor/llvm/dist/lib/Target/X86/X86InstrCompiler.td
      vendor/llvm/dist/lib/Target/X86/X86InstrInfo.cpp
      vendor/llvm/dist/lib/Target/X86/X86InstrInfo.h
      vendor/llvm/dist/lib/Target/X86/X86InstrInfo.td
      vendor/llvm/dist/lib/Target/X86/X86InstrSSE.td
      vendor/llvm/dist/lib/Target/X86/X86InstructionSelector.cpp
      vendor/llvm/dist/lib/Target/X86/X86IntrinsicsInfo.h
      vendor/llvm/dist/lib/Target/X86/X86LegalizerInfo.cpp
      vendor/llvm/dist/lib/Target/X86/X86RegisterInfo.cpp
      vendor/llvm/dist/lib/Target/X86/X86Subtarget.h
      vendor/llvm/dist/lib/Target/X86/X86TargetMachine.cpp
      vendor/llvm/dist/lib/Target/X86/X86TargetTransformInfo.cpp
      vendor/llvm/dist/lib/Target/X86/X86WinEHState.cpp
      vendor/llvm/dist/lib/Target/XCore/XCoreISelLowering.cpp
      vendor/llvm/dist/lib/Target/XCore/XCoreInstrInfo.td
      vendor/llvm/dist/lib/Transforms/Coroutines/CoroFrame.cpp
      vendor/llvm/dist/lib/Transforms/IPO/FunctionImport.cpp
      vendor/llvm/dist/lib/Transforms/IPO/Inliner.cpp
      vendor/llvm/dist/lib/Transforms/IPO/PartialInlining.cpp
      vendor/llvm/dist/lib/Transforms/IPO/ThinLTOBitcodeWriter.cpp
      vendor/llvm/dist/lib/Transforms/InstCombine/InstCombineAddSub.cpp
      vendor/llvm/dist/lib/Transforms/InstCombine/InstCombineAndOrXor.cpp
      vendor/llvm/dist/lib/Transforms/InstCombine/InstCombineCalls.cpp
      vendor/llvm/dist/lib/Transforms/InstCombine/InstCombineCasts.cpp
      vendor/llvm/dist/lib/Transforms/InstCombine/InstCombineCompares.cpp
      vendor/llvm/dist/lib/Transforms/InstCombine/InstCombineInternal.h
      vendor/llvm/dist/lib/Transforms/InstCombine/InstCombineLoadStoreAlloca.cpp
      vendor/llvm/dist/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp
      vendor/llvm/dist/lib/Transforms/InstCombine/InstCombineSimplifyDemanded.cpp
      vendor/llvm/dist/lib/Transforms/InstCombine/InstructionCombining.cpp
      vendor/llvm/dist/lib/Transforms/Instrumentation/AddressSanitizer.cpp
      vendor/llvm/dist/lib/Transforms/Instrumentation/DataFlowSanitizer.cpp
      vendor/llvm/dist/lib/Transforms/Instrumentation/EfficiencySanitizer.cpp
      vendor/llvm/dist/lib/Transforms/Instrumentation/MemorySanitizer.cpp
      vendor/llvm/dist/lib/Transforms/Scalar/CorrelatedValuePropagation.cpp
      vendor/llvm/dist/lib/Transforms/Scalar/LoopIdiomRecognize.cpp
      vendor/llvm/dist/lib/Transforms/Scalar/NewGVN.cpp
      vendor/llvm/dist/lib/Transforms/Scalar/SimpleLoopUnswitch.cpp
      vendor/llvm/dist/lib/Transforms/Scalar/SpeculativeExecution.cpp
      vendor/llvm/dist/lib/Transforms/Utils/BypassSlowDivision.cpp
      vendor/llvm/dist/lib/Transforms/Utils/CloneFunction.cpp
      vendor/llvm/dist/lib/Transforms/Utils/CloneModule.cpp
      vendor/llvm/dist/lib/Transforms/Utils/EscapeEnumerator.cpp
      vendor/llvm/dist/lib/Transforms/Utils/InlineFunction.cpp
      vendor/llvm/dist/lib/Transforms/Utils/InstructionNamer.cpp
      vendor/llvm/dist/lib/Transforms/Utils/Local.cpp
      vendor/llvm/dist/lib/Transforms/Utils/LoopUtils.cpp
      vendor/llvm/dist/lib/Transforms/Utils/ModuleUtils.cpp
      vendor/llvm/dist/lib/Transforms/Utils/SimplifyLibCalls.cpp
      vendor/llvm/dist/lib/Transforms/Utils/VNCoercion.cpp
      vendor/llvm/dist/lib/Transforms/Utils/ValueMapper.cpp
      vendor/llvm/dist/lib/Transforms/Vectorize/LoadStoreVectorizer.cpp
      vendor/llvm/dist/lib/Transforms/Vectorize/LoopVectorize.cpp
      vendor/llvm/dist/lib/Transforms/Vectorize/SLPVectorizer.cpp
      vendor/llvm/dist/lib/XRay/Trace.cpp
      vendor/llvm/dist/projects/CMakeLists.txt
      vendor/llvm/dist/test/Analysis/BasicAA/cs-cs.ll
      vendor/llvm/dist/test/Analysis/BasicAA/intrinsics.ll
      vendor/llvm/dist/test/Analysis/BranchProbabilityInfo/basic.ll
      vendor/llvm/dist/test/Analysis/CostModel/AMDGPU/extractelement.ll
      vendor/llvm/dist/test/Analysis/CostModel/AMDGPU/insertelement.ll
      vendor/llvm/dist/test/Analysis/CostModel/X86/div.ll
      vendor/llvm/dist/test/Analysis/CostModel/X86/vshift-ashr-cost.ll
      vendor/llvm/dist/test/Analysis/CostModel/X86/vshift-lshr-cost.ll
      vendor/llvm/dist/test/Analysis/CostModel/X86/vshift-shl-cost.ll
      vendor/llvm/dist/test/Analysis/TypeBasedAliasAnalysis/intrinsics.ll
      vendor/llvm/dist/test/Bitcode/ptest-old.ll
      vendor/llvm/dist/test/Bitcode/thinlto-function-summary-callgraph-profile-summary.ll
      vendor/llvm/dist/test/CodeGen/AArch64/GlobalISel/arm64-regbankselect.mir
      vendor/llvm/dist/test/CodeGen/AArch64/GlobalISel/call-translator.ll
      vendor/llvm/dist/test/CodeGen/AArch64/arm64-ccmp.ll
      vendor/llvm/dist/test/CodeGen/AArch64/arm64-fml-combines.ll
      vendor/llvm/dist/test/CodeGen/AArch64/arm64-hello.ll
      vendor/llvm/dist/test/CodeGen/AArch64/arm64-misched-multimmo.ll
      vendor/llvm/dist/test/CodeGen/AArch64/misched-fusion-aes.ll
      vendor/llvm/dist/test/CodeGen/AArch64/stackmap-frame-setup.ll
      vendor/llvm/dist/test/CodeGen/AMDGPU/GlobalISel/inst-select-load-flat.mir
      vendor/llvm/dist/test/CodeGen/AMDGPU/GlobalISel/inst-select-store-flat.mir
      vendor/llvm/dist/test/CodeGen/AMDGPU/constant-fold-imm-immreg.mir
      vendor/llvm/dist/test/CodeGen/AMDGPU/constant-fold-mi-operands.ll
      vendor/llvm/dist/test/CodeGen/AMDGPU/ctpop.ll
      vendor/llvm/dist/test/CodeGen/AMDGPU/ctpop64.ll
      vendor/llvm/dist/test/CodeGen/AMDGPU/fneg-combines.ll
      vendor/llvm/dist/test/CodeGen/AMDGPU/fneg.f16.ll
      vendor/llvm/dist/test/CodeGen/AMDGPU/inserted-wait-states.mir
      vendor/llvm/dist/test/CodeGen/AMDGPU/limit-coalesce.mir
      vendor/llvm/dist/test/CodeGen/AMDGPU/llvm.amdgcn.cvt.pkrtz.ll
      vendor/llvm/dist/test/CodeGen/AMDGPU/llvm.amdgcn.mbcnt.ll
      vendor/llvm/dist/test/CodeGen/AMDGPU/madak.ll
      vendor/llvm/dist/test/CodeGen/AMDGPU/promote-alloca-volatile.ll
      vendor/llvm/dist/test/CodeGen/AMDGPU/v_madak_f16.ll
      vendor/llvm/dist/test/CodeGen/AMDGPU/waitcnt.mir
      vendor/llvm/dist/test/CodeGen/ARM/GlobalISel/arm-instruction-select.mir
      vendor/llvm/dist/test/CodeGen/ARM/GlobalISel/arm-irtranslator.ll
      vendor/llvm/dist/test/CodeGen/ARM/GlobalISel/arm-legalizer.mir
      vendor/llvm/dist/test/CodeGen/ARM/GlobalISel/arm-regbankselect.mir
      vendor/llvm/dist/test/CodeGen/ARM/divmod-eabi.ll
      vendor/llvm/dist/test/CodeGen/ARM/divmod.ll
      vendor/llvm/dist/test/CodeGen/Hexagon/regalloc-bad-undef.mir
      vendor/llvm/dist/test/CodeGen/Lanai/peephole-compare.mir
      vendor/llvm/dist/test/CodeGen/MIR/X86/frame-info-save-restore-points.mir
      vendor/llvm/dist/test/CodeGen/MSP430/jumptable.ll
      vendor/llvm/dist/test/CodeGen/NVPTX/bug17709.ll
      vendor/llvm/dist/test/CodeGen/NVPTX/ctlz.ll
      vendor/llvm/dist/test/CodeGen/NVPTX/ctpop.ll
      vendor/llvm/dist/test/CodeGen/NVPTX/cttz.ll
      vendor/llvm/dist/test/CodeGen/NVPTX/f16-instructions.ll
      vendor/llvm/dist/test/CodeGen/NVPTX/f16x2-instructions.ll
      vendor/llvm/dist/test/CodeGen/NVPTX/fma.ll
      vendor/llvm/dist/test/CodeGen/NVPTX/i8-param.ll
      vendor/llvm/dist/test/CodeGen/NVPTX/param-load-store.ll
      vendor/llvm/dist/test/CodeGen/NVPTX/sched1.ll
      vendor/llvm/dist/test/CodeGen/NVPTX/sched2.ll
      vendor/llvm/dist/test/CodeGen/NVPTX/simple-call.ll
      vendor/llvm/dist/test/CodeGen/NVPTX/vec8.ll
      vendor/llvm/dist/test/CodeGen/NVPTX/vector-call.ll
      vendor/llvm/dist/test/CodeGen/NVPTX/zeroext-32bit.ll
      vendor/llvm/dist/test/CodeGen/PowerPC/setcc-logic.ll
      vendor/llvm/dist/test/CodeGen/PowerPC/stackmap-frame-setup.ll
      vendor/llvm/dist/test/CodeGen/PowerPC/tail-dup-layout.ll
      vendor/llvm/dist/test/CodeGen/SPARC/LeonItinerariesUT.ll
      vendor/llvm/dist/test/CodeGen/SPARC/inlineasm.ll
      vendor/llvm/dist/test/CodeGen/Thumb2/v8_IT_5.ll
      vendor/llvm/dist/test/CodeGen/X86/2007-01-08-InstrSched.ll
      vendor/llvm/dist/test/CodeGen/X86/2010-01-18-DbgValue.ll
      vendor/llvm/dist/test/CodeGen/X86/GlobalISel/binop.ll
      vendor/llvm/dist/test/CodeGen/X86/GlobalISel/ext-x86-64.ll
      vendor/llvm/dist/test/CodeGen/X86/GlobalISel/ext.ll
      vendor/llvm/dist/test/CodeGen/X86/GlobalISel/legalize-ext-x86-64.mir
      vendor/llvm/dist/test/CodeGen/X86/GlobalISel/legalize-ext.mir
      vendor/llvm/dist/test/CodeGen/X86/GlobalISel/regbankselect-X86_64.mir
      vendor/llvm/dist/test/CodeGen/X86/GlobalISel/select-ext-x86-64.mir
      vendor/llvm/dist/test/CodeGen/X86/GlobalISel/select-ext.mir
      vendor/llvm/dist/test/CodeGen/X86/all-ones-vector.ll
      vendor/llvm/dist/test/CodeGen/X86/avg.ll
      vendor/llvm/dist/test/CodeGen/X86/avx-basic.ll
      vendor/llvm/dist/test/CodeGen/X86/avx-cvt-3.ll
      vendor/llvm/dist/test/CodeGen/X86/avx-intrinsics-fast-isel.ll
      vendor/llvm/dist/test/CodeGen/X86/avx-schedule.ll
      vendor/llvm/dist/test/CodeGen/X86/avx.ll
      vendor/llvm/dist/test/CodeGen/X86/avx512-cmp-kor-sequence.ll
      vendor/llvm/dist/test/CodeGen/X86/avx512-gather-scatter-intrin.ll
      vendor/llvm/dist/test/CodeGen/X86/avx512-intrinsics-upgrade.ll
      vendor/llvm/dist/test/CodeGen/X86/avx512-intrinsics.ll
      vendor/llvm/dist/test/CodeGen/X86/avx512-mask-spills.ll
      vendor/llvm/dist/test/CodeGen/X86/avx512bw-intrinsics-upgrade.ll
      vendor/llvm/dist/test/CodeGen/X86/avx512bw-intrinsics.ll
      vendor/llvm/dist/test/CodeGen/X86/avx512bwvl-intrinsics-upgrade.ll
      vendor/llvm/dist/test/CodeGen/X86/avx512cdvl-intrinsics-upgrade.ll
      vendor/llvm/dist/test/CodeGen/X86/avx512cdvl-intrinsics.ll
      vendor/llvm/dist/test/CodeGen/X86/avx512dq-intrinsics-upgrade.ll
      vendor/llvm/dist/test/CodeGen/X86/avx512dq-intrinsics.ll
      vendor/llvm/dist/test/CodeGen/X86/avx512dqvl-intrinsics-upgrade.ll
      vendor/llvm/dist/test/CodeGen/X86/avx512dqvl-intrinsics.ll
      vendor/llvm/dist/test/CodeGen/X86/avx512er-intrinsics.ll
      vendor/llvm/dist/test/CodeGen/X86/avx512ifma-intrinsics.ll
      vendor/llvm/dist/test/CodeGen/X86/avx512ifmavl-intrinsics.ll
      vendor/llvm/dist/test/CodeGen/X86/avx512vl-intrinsics-upgrade.ll
      vendor/llvm/dist/test/CodeGen/X86/avx512vl-intrinsics.ll
      vendor/llvm/dist/test/CodeGen/X86/bmi.ll
      vendor/llvm/dist/test/CodeGen/X86/bswap_tree2.ll
      vendor/llvm/dist/test/CodeGen/X86/cast-vsel.ll
      vendor/llvm/dist/test/CodeGen/X86/combine-abs.ll
      vendor/llvm/dist/test/CodeGen/X86/combine-shl.ll
      vendor/llvm/dist/test/CodeGen/X86/combine-srl.ll
      vendor/llvm/dist/test/CodeGen/X86/constructor.ll
      vendor/llvm/dist/test/CodeGen/X86/dbg-baseptr.ll
      vendor/llvm/dist/test/CodeGen/X86/elf-associated.ll
      vendor/llvm/dist/test/CodeGen/X86/fold-tied-op.ll
      vendor/llvm/dist/test/CodeGen/X86/fp128-i128.ll
      vendor/llvm/dist/test/CodeGen/X86/haddsub-2.ll
      vendor/llvm/dist/test/CodeGen/X86/known-signbits-vector.ll
      vendor/llvm/dist/test/CodeGen/X86/madd.ll
      vendor/llvm/dist/test/CodeGen/X86/masked_gather_scatter.ll
      vendor/llvm/dist/test/CodeGen/X86/merge-consecutive-loads-128.ll
      vendor/llvm/dist/test/CodeGen/X86/misched-matrix.ll
      vendor/llvm/dist/test/CodeGen/X86/not-and-simplify.ll
      vendor/llvm/dist/test/CodeGen/X86/oddshuffles.ll
      vendor/llvm/dist/test/CodeGen/X86/packss.ll
      vendor/llvm/dist/test/CodeGen/X86/pmul.ll
      vendor/llvm/dist/test/CodeGen/X86/pr28129.ll
      vendor/llvm/dist/test/CodeGen/X86/pr29112.ll
      vendor/llvm/dist/test/CodeGen/X86/pr30562.ll
      vendor/llvm/dist/test/CodeGen/X86/pr31088.ll
      vendor/llvm/dist/test/CodeGen/X86/pr32284.ll
      vendor/llvm/dist/test/CodeGen/X86/pr32907.ll
      vendor/llvm/dist/test/CodeGen/X86/rotate.ll
      vendor/llvm/dist/test/CodeGen/X86/sad.ll
      vendor/llvm/dist/test/CodeGen/X86/select.ll
      vendor/llvm/dist/test/CodeGen/X86/setcc-wide-types.ll
      vendor/llvm/dist/test/CodeGen/X86/shrink_vmul_sse.ll
      vendor/llvm/dist/test/CodeGen/X86/shuffle-of-splat-multiuses.ll
      vendor/llvm/dist/test/CodeGen/X86/sse-intrinsics-fast-isel.ll
      vendor/llvm/dist/test/CodeGen/X86/sse1.ll
      vendor/llvm/dist/test/CodeGen/X86/sse3-avx-addsub-2.ll
      vendor/llvm/dist/test/CodeGen/X86/sse41.ll
      vendor/llvm/dist/test/CodeGen/X86/stackmap-frame-setup.ll
      vendor/llvm/dist/test/CodeGen/X86/vec_int_to_fp.ll
      vendor/llvm/dist/test/CodeGen/X86/vec_set-2.ll
      vendor/llvm/dist/test/CodeGen/X86/vec_set-3.ll
      vendor/llvm/dist/test/CodeGen/X86/vec_set-4.ll
      vendor/llvm/dist/test/CodeGen/X86/vec_set-6.ll
      vendor/llvm/dist/test/CodeGen/X86/vec_set-7.ll
      vendor/llvm/dist/test/CodeGen/X86/vec_set-8.ll
      vendor/llvm/dist/test/CodeGen/X86/vec_set-A.ll
      vendor/llvm/dist/test/CodeGen/X86/vec_set-B.ll
      vendor/llvm/dist/test/CodeGen/X86/vec_set-C.ll
      vendor/llvm/dist/test/CodeGen/X86/vec_set.ll
      vendor/llvm/dist/test/CodeGen/X86/vector-bitreverse.ll
      vendor/llvm/dist/test/CodeGen/X86/vector-blend.ll
      vendor/llvm/dist/test/CodeGen/X86/vector-lzcnt-128.ll
      vendor/llvm/dist/test/CodeGen/X86/vector-lzcnt-256.ll
      vendor/llvm/dist/test/CodeGen/X86/vector-pcmp.ll
      vendor/llvm/dist/test/CodeGen/X86/vector-shift-ashr-256.ll
      vendor/llvm/dist/test/CodeGen/X86/vector-shift-lshr-256.ll
      vendor/llvm/dist/test/CodeGen/X86/vector-shift-shl-256.ll
      vendor/llvm/dist/test/CodeGen/X86/vector-shuffle-512-v32.ll
      vendor/llvm/dist/test/CodeGen/X86/vector-sqrt.ll
      vendor/llvm/dist/test/CodeGen/X86/viabs.ll
      vendor/llvm/dist/test/CodeGen/X86/vselect-pcmp.ll
      vendor/llvm/dist/test/CodeGen/X86/x86-interleaved-access.ll
      vendor/llvm/dist/test/CodeGen/X86/x86-no_caller_saved_registers-preserve.ll
      vendor/llvm/dist/test/CodeGen/X86/x86-no_caller_saved_registers.ll
      vendor/llvm/dist/test/CodeGen/X86/x86-shrink-wrapping.ll
      vendor/llvm/dist/test/CodeGen/X86/xop-intrinsics-fast-isel.ll
      vendor/llvm/dist/test/DebugInfo/COFF/local-variables.ll
      vendor/llvm/dist/test/DebugInfo/PDB/DIA/pdbdump-symbol-format.test
      vendor/llvm/dist/test/DebugInfo/X86/split-dwarf-cross-unit-reference.ll
      vendor/llvm/dist/test/Feature/intrinsic-noduplicate.ll
      vendor/llvm/dist/test/Instrumentation/MemorySanitizer/msan_basic.ll
      vendor/llvm/dist/test/Instrumentation/MemorySanitizer/vector_arith.ll
      vendor/llvm/dist/test/Instrumentation/MemorySanitizer/vector_cmp.ll
      vendor/llvm/dist/test/Instrumentation/MemorySanitizer/vector_cvt.ll
      vendor/llvm/dist/test/Instrumentation/MemorySanitizer/vector_pack.ll
      vendor/llvm/dist/test/Instrumentation/MemorySanitizer/vector_shift.ll
      vendor/llvm/dist/test/MC/AArch64/label-arithmetic-diags-elf.s
      vendor/llvm/dist/test/MC/AMDGPU/flat.s
      vendor/llvm/dist/test/MC/AMDGPU/literal16.s
      vendor/llvm/dist/test/MC/AMDGPU/vop2.s
      vendor/llvm/dist/test/MC/AMDGPU/vop3-convert.s
      vendor/llvm/dist/test/MC/Disassembler/AMDGPU/flat_vi.txt
      vendor/llvm/dist/test/MC/Disassembler/AMDGPU/literal16_vi.txt
      vendor/llvm/dist/test/MC/Disassembler/AMDGPU/vop2_vi.txt
      vendor/llvm/dist/test/MC/Disassembler/AMDGPU/vop3_vi.txt
      vendor/llvm/dist/test/MC/Disassembler/SystemZ/insns-z13.txt
      vendor/llvm/dist/test/MC/Disassembler/SystemZ/insns.txt
      vendor/llvm/dist/test/MC/SystemZ/insn-bad-z13.s
      vendor/llvm/dist/test/MC/SystemZ/insn-bad-z196.s
      vendor/llvm/dist/test/MC/SystemZ/insn-bad-zEC12.s
      vendor/llvm/dist/test/MC/SystemZ/insn-bad.s
      vendor/llvm/dist/test/MC/SystemZ/insn-good-z13.s
      vendor/llvm/dist/test/MC/SystemZ/insn-good-z196.s
      vendor/llvm/dist/test/MC/SystemZ/insn-good-zEC12.s
      vendor/llvm/dist/test/MC/SystemZ/insn-good.s
      vendor/llvm/dist/test/Object/X86/nm-ir.ll
      vendor/llvm/dist/test/Object/invalid.test
      vendor/llvm/dist/test/ObjectYAML/wasm/export_section.yaml
      vendor/llvm/dist/test/ObjectYAML/wasm/function_section.yaml
      vendor/llvm/dist/test/ObjectYAML/wasm/import_section.yaml
      vendor/llvm/dist/test/ObjectYAML/wasm/start_section.yaml
      vendor/llvm/dist/test/TableGen/AsmVariant.td
      vendor/llvm/dist/test/Transforms/CodeExtractor/ExtractedFnEntryCount.ll
      vendor/llvm/dist/test/Transforms/CodeExtractor/MultipleExitBranchProb.ll
      vendor/llvm/dist/test/Transforms/CodeExtractor/PartialInlineAnd.ll
      vendor/llvm/dist/test/Transforms/CodeExtractor/PartialInlineOr.ll
      vendor/llvm/dist/test/Transforms/CodeExtractor/PartialInlineOrAnd.ll
      vendor/llvm/dist/test/Transforms/CodeExtractor/SingleCondition.ll
      vendor/llvm/dist/test/Transforms/CodeExtractor/X86/InheritTargetAttributes.ll
      vendor/llvm/dist/test/Transforms/CodeGenPrepare/section.ll
      vendor/llvm/dist/test/Transforms/ConstProp/calls.ll
      vendor/llvm/dist/test/Transforms/GVN/PRE/2011-06-01-NonLocalMemdepMiscompile.ll
      vendor/llvm/dist/test/Transforms/IndVarSimplify/2011-10-27-lftrnull.ll
      vendor/llvm/dist/test/Transforms/InferFunctionAttrs/annotate.ll
      vendor/llvm/dist/test/Transforms/InferFunctionAttrs/no-proto.ll
      vendor/llvm/dist/test/Transforms/Inline/inline-cold.ll
      vendor/llvm/dist/test/Transforms/Inline/inline-constexpr-addrspacecast-argument.ll
      vendor/llvm/dist/test/Transforms/Inline/partial-inline-act.ll
      vendor/llvm/dist/test/Transforms/Inline/prof-update.ll
      vendor/llvm/dist/test/Transforms/InstCombine/add.ll
      vendor/llvm/dist/test/Transforms/InstCombine/and.ll
      vendor/llvm/dist/test/Transforms/InstCombine/cast.ll
      vendor/llvm/dist/test/Transforms/InstCombine/demorgan.ll
      vendor/llvm/dist/test/Transforms/InstCombine/icmp.ll
      vendor/llvm/dist/test/Transforms/InstCombine/intrinsics.ll
      vendor/llvm/dist/test/Transforms/InstCombine/logical-select.ll
      vendor/llvm/dist/test/Transforms/InstCombine/not.ll
      vendor/llvm/dist/test/Transforms/InstCombine/or-xor.ll
      vendor/llvm/dist/test/Transforms/InstCombine/or.ll
      vendor/llvm/dist/test/Transforms/InstCombine/sext.ll
      vendor/llvm/dist/test/Transforms/InstCombine/trunc.ll
      vendor/llvm/dist/test/Transforms/InstCombine/vec_demanded_elts.ll
      vendor/llvm/dist/test/Transforms/InstCombine/xor2.ll
      vendor/llvm/dist/test/Transforms/InstSimplify/AndOrXor.ll
      vendor/llvm/dist/test/Transforms/InstSimplify/compare.ll
      vendor/llvm/dist/test/Transforms/LoopUnroll/not-rotated.ll
      vendor/llvm/dist/test/Transforms/LoopVectorize/induction.ll
      vendor/llvm/dist/test/Transforms/SLPVectorizer/AArch64/getelementptr.ll
      vendor/llvm/dist/test/Transforms/SLPVectorizer/AArch64/horizontal.ll
      vendor/llvm/dist/test/Transforms/SimpleLoopUnswitch/trivial-unswitch.ll
      vendor/llvm/dist/test/Transforms/Util/split-bit-piece.ll
      vendor/llvm/dist/test/Verifier/metadata-function-dbg.ll
      vendor/llvm/dist/test/tools/llvm-pdbdump/Inputs/FilterTest.cpp
      vendor/llvm/dist/test/tools/llvm-pdbdump/Inputs/FilterTest.pdb
      vendor/llvm/dist/test/tools/llvm-pdbdump/regex-filter.test
      vendor/llvm/dist/test/tools/llvm-profdata/sample-profile-basic.test
      vendor/llvm/dist/tools/bugpoint/ExtractFunction.cpp
      vendor/llvm/dist/tools/llc/llc.cpp
      vendor/llvm/dist/tools/lli/RemoteJITUtils.h
      vendor/llvm/dist/tools/llvm-ar/llvm-ar.cpp
      vendor/llvm/dist/tools/llvm-pdbdump/LLVMOutputStyle.cpp
      vendor/llvm/dist/tools/llvm-pdbdump/PrettyCompilandDumper.cpp
      vendor/llvm/dist/tools/llvm-pdbdump/PrettyFunctionDumper.cpp
      vendor/llvm/dist/tools/llvm-pdbdump/llvm-pdbdump.cpp
      vendor/llvm/dist/tools/llvm-pdbdump/llvm-pdbdump.h
      vendor/llvm/dist/tools/llvm-readobj/COFFDumper.cpp
      vendor/llvm/dist/tools/llvm-readobj/llvm-readobj.cpp
      vendor/llvm/dist/tools/llvm-rtdyld/llvm-rtdyld.cpp
      vendor/llvm/dist/tools/obj2yaml/wasm2yaml.cpp
      vendor/llvm/dist/tools/opt/opt.cpp
      vendor/llvm/dist/tools/yaml2obj/yaml2wasm.cpp
      vendor/llvm/dist/unittests/Analysis/ProfileSummaryInfoTest.cpp
      vendor/llvm/dist/unittests/Analysis/TargetLibraryInfoTest.cpp
      vendor/llvm/dist/unittests/DebugInfo/CMakeLists.txt
      vendor/llvm/dist/unittests/ExecutionEngine/Orc/ObjectTransformLayerTest.cpp
      vendor/llvm/dist/unittests/ExecutionEngine/Orc/OrcTestCommon.h
      vendor/llvm/dist/unittests/ExecutionEngine/Orc/RTDyldObjectLinkingLayerTest.cpp
      vendor/llvm/dist/unittests/IR/ConstantRangeTest.cpp
      vendor/llvm/dist/unittests/IR/InstructionsTest.cpp
      vendor/llvm/dist/unittests/IR/TypeBuilderTest.cpp
      vendor/llvm/dist/unittests/Support/CMakeLists.txt
      vendor/llvm/dist/unittests/Support/DynamicLibrary/DynamicLibraryTest.cpp
      vendor/llvm/dist/unittests/Support/Path.cpp
      vendor/llvm/dist/unittests/Transforms/Utils/Cloning.cpp
      vendor/llvm/dist/utils/TableGen/CodeGenInstruction.cpp
      vendor/llvm/dist/utils/TableGen/SubtargetEmitter.cpp
      vendor/llvm/dist/utils/TableGen/X86RecognizableInstr.cpp
      vendor/llvm/dist/utils/TableGen/X86RecognizableInstr.h
      vendor/llvm/dist/utils/git-svn/git-llvm
      vendor/llvm/dist/utils/release/build_llvm_package.bat
    
    Modified: vendor/llvm/dist/CREDITS.TXT
    ==============================================================================
    --- vendor/llvm/dist/CREDITS.TXT	Tue May 16 19:35:25 2017	(r318367)
    +++ vendor/llvm/dist/CREDITS.TXT	Tue May 16 19:46:52 2017	(r318368)
    @@ -265,7 +265,7 @@ D: Release manager (1.7+)
     N: Sylvestre Ledru
     E: sylvestre@debian.org
     W: http://sylvestre.ledru.info/
    -W: http://llvm.org/apt/
    +W: http://apt.llvm.org/
     D: Debian and Ubuntu packaging
     D: Continuous integration with jenkins
     
    
    Modified: vendor/llvm/dist/cmake/config-ix.cmake
    ==============================================================================
    --- vendor/llvm/dist/cmake/config-ix.cmake	Tue May 16 19:35:25 2017	(r318367)
    +++ vendor/llvm/dist/cmake/config-ix.cmake	Tue May 16 19:46:52 2017	(r318368)
    @@ -530,16 +530,6 @@ else()
       message(STATUS "Doxygen disabled.")
     endif()
     
    -if (LLVM_ENABLE_SPHINX)
    -  message(STATUS "Sphinx enabled.")
    -  find_package(Sphinx REQUIRED)
    -  if (LLVM_BUILD_DOCS)
    -    add_custom_target(sphinx ALL)
    -  endif()
    -else()
    -  message(STATUS "Sphinx disabled.")
    -endif()
    -
     set(LLVM_BINDINGS "")
     if(WIN32)
       message(STATUS "Go bindings disabled.")
    
    Modified: vendor/llvm/dist/cmake/modules/AddSphinxTarget.cmake
    ==============================================================================
    --- vendor/llvm/dist/cmake/modules/AddSphinxTarget.cmake	Tue May 16 19:35:25 2017	(r318367)
    +++ vendor/llvm/dist/cmake/modules/AddSphinxTarget.cmake	Tue May 16 19:46:52 2017	(r318368)
    @@ -1,3 +1,16 @@
    +
    +# Create sphinx target
    +if (LLVM_ENABLE_SPHINX)
    +  message(STATUS "Sphinx enabled.")
    +  find_package(Sphinx REQUIRED)
    +  if (LLVM_BUILD_DOCS AND NOT TARGET sphinx)
    +    add_custom_target(sphinx ALL)
    +  endif()
    +else()
    +  message(STATUS "Sphinx disabled.")
    +endif()
    +
    +
     # Handy function for creating the different Sphinx targets.
     #
     # ``builder`` should be one of the supported builders used by
    
    Modified: vendor/llvm/dist/docs/CMakeLists.txt
    ==============================================================================
    --- vendor/llvm/dist/docs/CMakeLists.txt	Tue May 16 19:35:25 2017	(r318367)
    +++ vendor/llvm/dist/docs/CMakeLists.txt	Tue May 16 19:46:52 2017	(r318368)
    @@ -103,8 +103,8 @@ endif()
     endif()
     
     if (LLVM_ENABLE_SPHINX)
    +  include(AddSphinxTarget)
       if (SPHINX_FOUND)
    -    include(AddSphinxTarget)
         if (${SPHINX_OUTPUT_HTML})
           add_sphinx_target(html llvm)
         endif()
    
    Modified: vendor/llvm/dist/docs/GettingStarted.rst
    ==============================================================================
    --- vendor/llvm/dist/docs/GettingStarted.rst	Tue May 16 19:35:25 2017	(r318367)
    +++ vendor/llvm/dist/docs/GettingStarted.rst	Tue May 16 19:46:52 2017	(r318368)
    @@ -699,14 +699,14 @@ For developers to work with a git monore
     
     .. note::
     
    -   This set-up is using unofficial mirror hosted on GitHub, use with caution.
    +   This set-up is using an unofficial mirror hosted on GitHub, use with caution.
     
     To set up a clone of all the llvm projects using a unified repository:
     
     .. code-block:: console
     
       % export TOP_LEVEL_DIR=`pwd`
    -  % git clone https://github.com/llvm-project/llvm-project/
    +  % git clone https://github.com/llvm-project/llvm-project-20170507/ llvm-project
       % cd llvm-project
       % git config branch.master.rebase true
     
    
    Modified: vendor/llvm/dist/docs/LangRef.rst
    ==============================================================================
    --- vendor/llvm/dist/docs/LangRef.rst	Tue May 16 19:35:25 2017	(r318367)
    +++ vendor/llvm/dist/docs/LangRef.rst	Tue May 16 19:46:52 2017	(r318368)
    @@ -641,8 +641,9 @@ assume that the globals are densely pack
     iterate over them as an array, alignment padding would break this
     iteration. The maximum alignment is ``1 << 29``.
     
    -Globals can also have a :ref:`DLL storage class ` and
    -an optional list of attached :ref:`metadata `,
    +Globals can also have a :ref:`DLL storage class `,
    +an optional :ref:`global attributes ` and
    +an optional list of attached :ref:`metadata `.
     
     Variables and aliases can have a
     :ref:`Thread Local Storage Model `.
    @@ -1624,6 +1625,14 @@ example:
         the ELF x86-64 abi, but it can be disabled for some compilation
         units.
     
    +.. _glattrs:
    +
    +Global Attributes
    +-----------------
    +
    +Attributes may be set to communicate additional information about a global variable.
    +Unlike :ref:`function attributes `, attributes on a global variable
    +are grouped into a single :ref:`attribute group `.
     
     .. _opbundles:
     
    @@ -3664,6 +3673,9 @@ Sparc:
     
     - ``I``: An immediate 13-bit signed integer.
     - ``r``: A 32-bit integer register.
    +- ``f``: Any floating-point register on SparcV8, or a floating point
    +  register in the "low" half of the registers on SparcV9.
    +- ``e``: Any floating point register. (Same as ``f`` on SparcV8.)
     
     SystemZ:
     
    @@ -11687,6 +11699,338 @@ Examples:
     
           %r2 = call float @llvm.fmuladd.f32(float %a, float %b, float %c) ; yields float:r2 = (a * b) + c
     
    +
    +Experimental Vector Reduction Intrinsics
    +----------------------------------------
    +
    +Horizontal reductions of vectors can be expressed using the following
    +intrinsics. Each one takes a vector operand as an input and applies its
    +respective operation across all elements of the vector, returning a single
    +scalar result of the same element type.
    +
    +
    +'``llvm.experimental.vector.reduce.add.*``' Intrinsic
    +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    +
    +Syntax:
    +"""""""
    +
    +::
    +
    +      declare i32 @llvm.experimental.vector.reduce.add.i32.v4i32(<4 x i32> %a)
    +      declare i64 @llvm.experimental.vector.reduce.add.i64.v2i64(<2 x i64> %a)
    +
    +Overview:
    +"""""""""
    +
    +The '``llvm.experimental.vector.reduce.add.*``' intrinsics do an integer ``ADD``
    +reduction of a vector, returning the result as a scalar. The return type matches
    +the element-type of the vector input.
    +
    +Arguments:
    +""""""""""
    +The argument to this intrinsic must be a vector of integer values.
    +
    +'``llvm.experimental.vector.reduce.fadd.*``' Intrinsic
    +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    +
    +Syntax:
    +"""""""
    +
    +::
    +
    +      declare float @llvm.experimental.vector.reduce.fadd.f32.v4f32(float %acc, <4 x float> %a)
    +      declare double @llvm.experimental.vector.reduce.fadd.f64.v2f64(double %acc, <2 x double> %a)
    +
    +Overview:
    +"""""""""
    +
    +The '``llvm.experimental.vector.reduce.fadd.*``' intrinsics do a floating point
    +``ADD`` reduction of a vector, returning the result as a scalar. The return type
    +matches the element-type of the vector input.
    +
    +If the intrinsic call has fast-math flags, then the reduction will not preserve
    +the associativity of an equivalent scalarized counterpart. If it does not have
    +fast-math flags, then the reduction will be *ordered*, implying that the
    +operation respects the associativity of a scalarized reduction.
    +
    +
    +Arguments:
    +""""""""""
    +The first argument to this intrinsic is a scalar accumulator value, which is
    +only used when there are no fast-math flags attached. This argument may be undef
    +when fast-math flags are used.
    +
    +The second argument must be a vector of floating point values.
    +
    +Examples:
    +"""""""""
    +
    +.. code-block:: llvm
    +
    +      %fast = call fast float @llvm.experimental.vector.reduce.fadd.f32.v4f32(float undef, <4 x float> %input) ; fast reduction
    +      %ord = call float @llvm.experimental.vector.reduce.fadd.f32.v4f32(float %acc, <4 x float> %input) ; ordered reduction
    +
    +
    +'``llvm.experimental.vector.reduce.mul.*``' Intrinsic
    +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    +
    +Syntax:
    +"""""""
    +
    +::
    +
    +      declare i32 @llvm.experimental.vector.reduce.mul.i32.v4i32(<4 x i32> %a)
    +      declare i64 @llvm.experimental.vector.reduce.mul.i64.v2i64(<2 x i64> %a)
    +
    +Overview:
    +"""""""""
    +
    +The '``llvm.experimental.vector.reduce.mul.*``' intrinsics do an integer ``MUL``
    +reduction of a vector, returning the result as a scalar. The return type matches
    +the element-type of the vector input.
    +
    +Arguments:
    +""""""""""
    +The argument to this intrinsic must be a vector of integer values.
    +
    +'``llvm.experimental.vector.reduce.fmul.*``' Intrinsic
    +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    +
    +Syntax:
    +"""""""
    +
    +::
    +
    +      declare float @llvm.experimental.vector.reduce.fmul.f32.v4f32(float %acc, <4 x float> %a)
    +      declare double @llvm.experimental.vector.reduce.fmul.f64.v2f64(double %acc, <2 x double> %a)
    +
    +Overview:
    +"""""""""
    +
    +The '``llvm.experimental.vector.reduce.fmul.*``' intrinsics do a floating point
    +``MUL`` reduction of a vector, returning the result as a scalar. The return type
    +matches the element-type of the vector input.
    +
    +If the intrinsic call has fast-math flags, then the reduction will not preserve
    +the associativity of an equivalent scalarized counterpart. If it does not have
    +fast-math flags, then the reduction will be *ordered*, implying that the
    +operation respects the associativity of a scalarized reduction.
    +
    +
    +Arguments:
    +""""""""""
    +The first argument to this intrinsic is a scalar accumulator value, which is
    +only used when there are no fast-math flags attached. This argument may be undef
    +when fast-math flags are used.
    +
    +The second argument must be a vector of floating point values.
    +
    +Examples:
    +"""""""""
    +
    +.. code-block:: llvm
    +
    +      %fast = call fast float @llvm.experimental.vector.reduce.fmul.f32.v4f32(float undef, <4 x float> %input) ; fast reduction
    +      %ord = call float @llvm.experimental.vector.reduce.fmul.f32.v4f32(float %acc, <4 x float> %input) ; ordered reduction
    +
    +'``llvm.experimental.vector.reduce.and.*``' Intrinsic
    +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    +
    +Syntax:
    +"""""""
    +
    +::
    +
    +      declare i32 @llvm.experimental.vector.reduce.and.i32.v4i32(<4 x i32> %a)
    +
    +Overview:
    +"""""""""
    +
    +The '``llvm.experimental.vector.reduce.and.*``' intrinsics do a bitwise ``AND``
    +reduction of a vector, returning the result as a scalar. The return type matches
    +the element-type of the vector input.
    +
    +Arguments:
    +""""""""""
    +The argument to this intrinsic must be a vector of integer values.
    +
    +'``llvm.experimental.vector.reduce.or.*``' Intrinsic
    +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    +
    +Syntax:
    +"""""""
    +
    +::
    +
    +      declare i32 @llvm.experimental.vector.reduce.or.i32.v4i32(<4 x i32> %a)
    +
    +Overview:
    +"""""""""
    +
    +The '``llvm.experimental.vector.reduce.or.*``' intrinsics do a bitwise ``OR`` reduction
    +of a vector, returning the result as a scalar. The return type matches the
    +element-type of the vector input.
    +
    +Arguments:
    +""""""""""
    +The argument to this intrinsic must be a vector of integer values.
    +
    +'``llvm.experimental.vector.reduce.xor.*``' Intrinsic
    +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    +
    +Syntax:
    +"""""""
    +
    +::
    +
    +      declare i32 @llvm.experimental.vector.reduce.xor.i32.v4i32(<4 x i32> %a)
    +
    +Overview:
    +"""""""""
    +
    +The '``llvm.experimental.vector.reduce.xor.*``' intrinsics do a bitwise ``XOR``
    +reduction of a vector, returning the result as a scalar. The return type matches
    +the element-type of the vector input.
    +
    +Arguments:
    +""""""""""
    +The argument to this intrinsic must be a vector of integer values.
    +
    +'``llvm.experimental.vector.reduce.smax.*``' Intrinsic
    +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    +
    +Syntax:
    +"""""""
    +
    +::
    +
    +      declare i32 @llvm.experimental.vector.reduce.smax.i32.v4i32(<4 x i32> %a)
    +
    +Overview:
    +"""""""""
    +
    +The '``llvm.experimental.vector.reduce.smax.*``' intrinsics do a signed integer
    +``MAX`` reduction of a vector, returning the result as a scalar. The return type
    +matches the element-type of the vector input.
    +
    +Arguments:
    +""""""""""
    +The argument to this intrinsic must be a vector of integer values.
    +
    +'``llvm.experimental.vector.reduce.smin.*``' Intrinsic
    +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    +
    +Syntax:
    +"""""""
    +
    +::
    +
    +      declare i32 @llvm.experimental.vector.reduce.smin.i32.v4i32(<4 x i32> %a)
    +
    +Overview:
    +"""""""""
    +
    +The '``llvm.experimental.vector.reduce.smin.*``' intrinsics do a signed integer
    +``MIN`` reduction of a vector, returning the result as a scalar. The return type
    +matches the element-type of the vector input.
    +
    +Arguments:
    +""""""""""
    +The argument to this intrinsic must be a vector of integer values.
    +
    +'``llvm.experimental.vector.reduce.umax.*``' Intrinsic
    +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    +
    +Syntax:
    +"""""""
    +
    +::
    +
    +      declare i32 @llvm.experimental.vector.reduce.umax.i32.v4i32(<4 x i32> %a)
    +
    +Overview:
    +"""""""""
    +
    +The '``llvm.experimental.vector.reduce.umax.*``' intrinsics do an unsigned
    +integer ``MAX`` reduction of a vector, returning the result as a scalar. The
    +return type matches the element-type of the vector input.
    +
    +Arguments:
    +""""""""""
    +The argument to this intrinsic must be a vector of integer values.
    +
    +'``llvm.experimental.vector.reduce.umin.*``' Intrinsic
    +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    +
    +Syntax:
    +"""""""
    +
    +::
    +
    +      declare i32 @llvm.experimental.vector.reduce.umin.i32.v4i32(<4 x i32> %a)
    +
    +Overview:
    +"""""""""
    +
    +The '``llvm.experimental.vector.reduce.umin.*``' intrinsics do an unsigned
    +integer ``MIN`` reduction of a vector, returning the result as a scalar. The
    +return type matches the element-type of the vector input.
    +
    +Arguments:
    +""""""""""
    +The argument to this intrinsic must be a vector of integer values.
    +
    +'``llvm.experimental.vector.reduce.fmax.*``' Intrinsic
    +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    +
    +Syntax:
    +"""""""
    +
    +::
    +
    +      declare float @llvm.experimental.vector.reduce.fmax.f32.v4f32(<4 x float> %a)
    +      declare double @llvm.experimental.vector.reduce.fmax.f64.v2f64(<2 x double> %a)
    +
    +Overview:
    +"""""""""
    +
    +The '``llvm.experimental.vector.reduce.fmax.*``' intrinsics do a floating point
    +``MAX`` reduction of a vector, returning the result as a scalar. The return type
    +matches the element-type of the vector input.
    +
    +If the intrinsic call has the ``nnan`` fast-math flag then the operation can
    +assume that NaNs are not present in the input vector.
    +
    +Arguments:
    +""""""""""
    +The argument to this intrinsic must be a vector of floating point values.
    +
    +'``llvm.experimental.vector.reduce.fmin.*``' Intrinsic
    +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    +
    +Syntax:
    +"""""""
    +
    +::
    +
    +      declare float @llvm.experimental.vector.reduce.fmin.f32.v4f32(<4 x float> %a)
    +      declare double @llvm.experimental.vector.reduce.fmin.f64.v2f64(<2 x double> %a)
    +
    +Overview:
    +"""""""""
    +
    +The '``llvm.experimental.vector.reduce.fmin.*``' intrinsics do a floating point
    +``MIN`` reduction of a vector, returning the result as a scalar. The return type
    +matches the element-type of the vector input.
    +
    +If the intrinsic call has the ``nnan`` fast-math flag then the operation can
    +assume that NaNs are not present in the input vector.
    +
    +Arguments:
    +""""""""""
    +The argument to this intrinsic must be a vector of floating point values.
    +
     Half Precision Floating Point Intrinsics
     ----------------------------------------
     
    
    Modified: vendor/llvm/dist/docs/Lexicon.rst
    ==============================================================================
    --- vendor/llvm/dist/docs/Lexicon.rst	Tue May 16 19:35:25 2017	(r318367)
    +++ vendor/llvm/dist/docs/Lexicon.rst	Tue May 16 19:46:52 2017	(r318368)
    @@ -249,6 +249,14 @@ S
         Superword-Level Parallelism, same as :ref:`Basic-Block Vectorization
         `.
     
    +**Splat**
    +    Splat refers to a vector of identical scalar elements.
    +
    +    The term is based on the PowerPC Altivec instructions that provided
    +    this functionality in hardware. For example, "vsplth" and the corresponding
    +    software intrinsic "vec_splat()". Examples of other hardware names for this
    +    action include "duplicate" (ARM) and "broadcast" (x86).
    +
     **SRoA**
         Scalar Replacement of Aggregates
     
    
    Modified: vendor/llvm/dist/docs/LibFuzzer.rst
    ==============================================================================
    --- vendor/llvm/dist/docs/LibFuzzer.rst	Tue May 16 19:35:25 2017	(r318367)
    +++ vendor/llvm/dist/docs/LibFuzzer.rst	Tue May 16 19:46:52 2017	(r318368)
    @@ -305,6 +305,10 @@ The most important command line options 
        - 1 : close ``stdout``
        - 2 : close ``stderr``
        - 3 : close both ``stdout`` and ``stderr``.
    +``-print_coverage``
    +   If 1, print coverage information as text at exit.
    +``-dump_coverage``
    +   If 1, dump coverage information as a .sancov file at exit.
     
     For the full list of flags run the fuzzer binary with ``-help=1``.
     
    @@ -543,12 +547,19 @@ You can get the coverage for your corpus
     
     .. code-block:: console
     
    -  ASAN_OPTIONS=coverage=1 ./fuzzer CORPUS_DIR -runs=0
    +  ./fuzzer CORPUS_DIR -runs=0 -print_coverage=1
     
     This will run all tests in the CORPUS_DIR but will not perform any fuzzing.
    -At the end of the process it will dump a single ``.sancov`` file with coverage 
    -information.  See SanitizerCoverage_ for details on querying the file using the
    -``sancov`` tool.
    +At the end of the process it will print text describing what code has been covered and what hasn't.
    +
    +Alternatively, use
    +
    +.. code-block:: console
    +
    +  ./fuzzer CORPUS_DIR -runs=0 -dump_coverage=1
    +
    +which will dump a ``.sancov`` file with coverage information.
    +See SanitizerCoverage_ for details on querying the file using the ``sancov`` tool.
     
     You may also use other ways to visualize coverage,
     e.g. using `Clang coverage `_,
    
    Modified: vendor/llvm/dist/docs/ReleaseNotes.rst
    ==============================================================================
    --- vendor/llvm/dist/docs/ReleaseNotes.rst	Tue May 16 19:35:25 2017	(r318367)
    +++ vendor/llvm/dist/docs/ReleaseNotes.rst	Tue May 16 19:46:52 2017	(r318368)
    @@ -40,6 +40,10 @@ Non-comprehensive list of changes in thi
        functionality, or simply have a lot to talk about), see the `NOTE` below
        for adding a new subsection.
     
    +* LLVM's ``WeakVH`` has been renamed to ``WeakTrackingVH`` and a new ``WeakVH``
    +  has been introduced.  The new ``WeakVH`` nulls itself out on deletion, but
    +  does not track values across RAUW.
    +
     * ... next change ...
     
     .. NOTE
    
    Modified: vendor/llvm/dist/include/llvm/ADT/APInt.h
    ==============================================================================
    --- vendor/llvm/dist/include/llvm/ADT/APInt.h	Tue May 16 19:35:25 2017	(r318367)
    +++ vendor/llvm/dist/include/llvm/ADT/APInt.h	Tue May 16 19:46:52 2017	(r318368)
    @@ -157,6 +157,11 @@ private:
         return isSingleWord() ? U.VAL : U.pVal[whichWord(bitPosition)];
       }
     
    +  /// Utility method to change the bit width of this APInt to new bit width,
    +  /// allocating and/or deallocating as necessary. There is no guarantee on the
    +  /// value of any bits upon return. Caller should populate the bits after.
    +  void reallocate(unsigned NewBitWidth);
    +
       /// \brief Convert a char array into an APInt
       ///
       /// \param radix 2, 8, 10, 16, or 36
    @@ -1437,6 +1442,12 @@ public:
       /// as "bitPosition".
       void flipBit(unsigned bitPosition);
     
    +  /// Negate this APInt in place.
    +  void negate() {
    +    flipAllBits();
    +    ++(*this);
    +  }
    +
       /// Insert the bits from a smaller APInt starting at bitPosition.
       void insertBits(const APInt &SubBits, unsigned bitPosition);
     
    @@ -1646,12 +1657,7 @@ public:
       /// re-interprets the bits as a double. Note that it is valid to do this on
       /// any bit width. Exactly 64 bits will be translated.
       double bitsToDouble() const {
    -    union {
    -      uint64_t I;
    -      double D;
    -    } T;
    -    T.I = (isSingleWord() ? U.VAL : U.pVal[0]);
    -    return T.D;
    +    return BitsToDouble(getWord(0));
       }
     
       /// \brief Converts APInt bits to a double
    @@ -1660,12 +1666,7 @@ public:
       /// re-interprets the bits as a float. Note that it is valid to do this on
       /// any bit width. Exactly 32 bits will be translated.
       float bitsToFloat() const {
    -    union {
    -      unsigned I;
    -      float F;
    -    } T;
    -    T.I = unsigned((isSingleWord() ? U.VAL : U.pVal[0]));
    -    return T.F;
    +    return BitsToFloat(getWord(0));
       }
     
       /// \brief Converts a double to APInt bits.
    @@ -1673,12 +1674,7 @@ public:
       /// The conversion does not do a translation from double to integer, it just
       /// re-interprets the bits of the double.
       static APInt doubleToBits(double V) {
    -    union {
    -      uint64_t I;
    -      double D;
    -    } T;
    -    T.D = V;
    -    return APInt(sizeof T * CHAR_BIT, T.I);
    +    return APInt(sizeof(double) * CHAR_BIT, DoubleToBits(V));
       }
     
       /// \brief Converts a float to APInt bits.
    @@ -1686,12 +1682,7 @@ public:
       /// The conversion does not do a translation from float to integer, it just
       /// re-interprets the bits of the float.
       static APInt floatToBits(float V) {
    -    union {
    -      unsigned I;
    -      float F;
    -    } T;
    -    T.F = V;
    -    return APInt(sizeof T * CHAR_BIT, T.I);
    +    return APInt(sizeof(float) * CHAR_BIT, FloatToBits(V));
       }
     
       /// @}
    @@ -1852,10 +1843,9 @@ public:
                             unsigned);
     
       /// DST = LHS * RHS, where DST has width the sum of the widths of the
    -  /// operands.  No overflow occurs.  DST must be disjoint from both
    -  /// operands. Returns the number of parts required to hold the result.
    -  static unsigned tcFullMultiply(WordType *, const WordType *,
    -                                 const WordType *, unsigned, unsigned);
    +  /// operands. No overflow occurs. DST must be disjoint from both operands.
    +  static void tcFullMultiply(WordType *, const WordType *,
    +                             const WordType *, unsigned, unsigned);
     
       /// If RHS is zero LHS and REMAINDER are left unchanged, return one.
       /// Otherwise set LHS to LHS / RHS with the fractional part discarded, set
    @@ -1997,8 +1987,7 @@ inline raw_ostream &operator<<(raw_ostre
     }
     
     inline APInt operator-(APInt v) {
    -  v.flipAllBits();
    -  ++v;
    +  v.negate();
       return v;
     }
     
    
    Modified: vendor/llvm/dist/include/llvm/ADT/BitVector.h
    ==============================================================================
    --- vendor/llvm/dist/include/llvm/ADT/BitVector.h	Tue May 16 19:35:25 2017	(r318367)
    +++ vendor/llvm/dist/include/llvm/ADT/BitVector.h	Tue May 16 19:46:52 2017	(r318368)
    @@ -255,7 +255,7 @@ public:
     
       /// find_prev - Returns the index of the first set bit that precedes the
       /// the bit at \p PriorTo.  Returns -1 if all previous bits are unset.
    -  int find_prev(unsigned PriorTo) {
    +  int find_prev(unsigned PriorTo) const {
         if (PriorTo == 0)
           return -1;
     
    
    Modified: vendor/llvm/dist/include/llvm/ADT/STLExtras.h
    ==============================================================================
    --- vendor/llvm/dist/include/llvm/ADT/STLExtras.h	Tue May 16 19:35:25 2017	(r318367)
    +++ vendor/llvm/dist/include/llvm/ADT/STLExtras.h	Tue May 16 19:46:52 2017	(r318368)
    @@ -706,6 +706,18 @@ struct is_one_of {
           std::is_same::value || is_one_of::value;
     };
     
    +/// \brief traits class for checking whether type T is a base class for all
    +///  the given types in the variadic list.
    +template  struct are_base_of {
    +  static const bool value = true;
    +};
    +
    +template 
    +struct are_base_of {
    +  static const bool value =
    +      std::is_base_of::value && are_base_of::value;
    +};
    +
     //===----------------------------------------------------------------------===//
     //     Extra additions for arrays
     //===----------------------------------------------------------------------===//
    @@ -1079,7 +1091,7 @@ private:
     ///
     /// std::vector Items = {'A', 'B', 'C', 'D'};
     /// for (auto X : enumerate(Items)) {
    -///   printf("Item %d - %c\n", X.Index, X.Value);
    +///   printf("Item %d - %c\n", X.index(), X.value());
     /// }
     ///
     /// Output:
    
    Modified: vendor/llvm/dist/include/llvm/ADT/StringExtras.h
    ==============================================================================
    --- vendor/llvm/dist/include/llvm/ADT/StringExtras.h	Tue May 16 19:35:25 2017	(r318367)
    +++ vendor/llvm/dist/include/llvm/ADT/StringExtras.h	Tue May 16 19:46:52 2017	(r318368)
    @@ -106,6 +106,13 @@ static inline std::string fromHex(String
       return Output;
     }
     
    +/// \brief Convert the string \p S to an integer of the specified type using
    +/// the radix \p Base.  If \p Base is 0, auto-detects the radix.
    +/// Returns true if the number was successfully converted, false otherwise.
    +template  bool to_integer(StringRef S, N &Num, unsigned Base = 0) {
    +  return !S.getAsInteger(Base, Num);
    +}
    +
     static inline std::string utostr(uint64_t X, bool isNeg = false) {
       char Buffer[21];
       char *BufPtr = std::end(Buffer);
    
    Modified: vendor/llvm/dist/include/llvm/Analysis/CallGraph.h
    ==============================================================================
    --- vendor/llvm/dist/include/llvm/Analysis/CallGraph.h	Tue May 16 19:35:25 2017	(r318367)
    +++ vendor/llvm/dist/include/llvm/Analysis/CallGraph.h	Tue May 16 19:46:52 2017	(r318368)
    @@ -41,12 +41,6 @@
     /// of all of the caller-callee relationships, which is useful for
     /// transformations.
     ///
    -/// The CallGraph class also attempts to figure out what the root of the
    -/// CallGraph is, which it currently does by looking for a function named
    -/// 'main'. If no function named 'main' is found, the external node is used as
    -/// the entry node, reflecting the fact that any function without internal
    -/// linkage could be called into (which is common for libraries).
    -///
     //===----------------------------------------------------------------------===//
     
     #ifndef LLVM_ANALYSIS_CALLGRAPH_H
    @@ -82,10 +76,6 @@ class CallGraph {
       /// \brief A map from \c Function* to \c CallGraphNode*.
       FunctionMapTy FunctionMap;
     
    -  /// \brief Root is root of the call graph, or the external node if a 'main'
    -  /// function couldn't be found.
    -  CallGraphNode *Root;
    -
       /// \brief This node has edges to all external functions and those internal
       /// functions that have their address taken.
       CallGraphNode *ExternalCallingNode;
    
    Modified: vendor/llvm/dist/include/llvm/Analysis/ProfileSummaryInfo.h
    ==============================================================================
    --- vendor/llvm/dist/include/llvm/Analysis/ProfileSummaryInfo.h	Tue May 16 19:35:25 2017	(r318367)
    +++ vendor/llvm/dist/include/llvm/Analysis/ProfileSummaryInfo.h	Tue May 16 19:46:52 2017	(r318368)
    @@ -67,8 +67,8 @@ public:
       }
     
       /// Returns the profile count for \p CallInst.
    -  static Optional getProfileCount(const Instruction *CallInst,
    -                                            BlockFrequencyInfo *BFI);
    +  Optional getProfileCount(const Instruction *CallInst,
    +                                     BlockFrequencyInfo *BFI);
       /// \brief Returns true if \p F has hot function entry.
       bool isFunctionEntryHot(const Function *F);
       /// Returns true if \p F has hot function entry or hot call edge.
    
    Modified: vendor/llvm/dist/include/llvm/Analysis/ScalarEvolution.h
    ==============================================================================
    --- vendor/llvm/dist/include/llvm/Analysis/ScalarEvolution.h	Tue May 16 19:35:25 2017	(r318367)
    +++ vendor/llvm/dist/include/llvm/Analysis/ScalarEvolution.h	Tue May 16 19:46:52 2017	(r318368)
    @@ -568,27 +568,16 @@ private:
           Predicates.insert(P);
         }
     
    -    /*implicit*/ ExitLimit(const SCEV *E)
    -        : ExactNotTaken(E), MaxNotTaken(E), MaxOrZero(false) {}
    +    /*implicit*/ ExitLimit(const SCEV *E);
     
         ExitLimit(
             const SCEV *E, const SCEV *M, bool MaxOrZero,
    -        ArrayRef *> PredSetList)
    -        : ExactNotTaken(E), MaxNotTaken(M), MaxOrZero(MaxOrZero) {
    -      assert((isa(ExactNotTaken) ||
    -              !isa(MaxNotTaken)) &&
    -             "Exact is not allowed to be less precise than Max");
    -      for (auto *PredSet : PredSetList)
    -        for (auto *P : *PredSet)
    -          addPredicate(P);
    -    }
    +        ArrayRef *> PredSetList);
     
         ExitLimit(const SCEV *E, const SCEV *M, bool MaxOrZero,
    -              const SmallPtrSetImpl &PredSet)
    -        : ExitLimit(E, M, MaxOrZero, {&PredSet}) {}
    +              const SmallPtrSetImpl &PredSet);
     
    -    ExitLimit(const SCEV *E, const SCEV *M, bool MaxOrZero)
    -        : ExitLimit(E, M, MaxOrZero, None) {}
    +    ExitLimit(const SCEV *E, const SCEV *M, bool MaxOrZero);
     
         /// Test whether this ExitLimit contains any computed information, or
         /// whether it's all SCEVCouldNotCompute values.
    @@ -782,7 +771,7 @@ private:
     
       /// Set the memoized range for the given SCEV.
       const ConstantRange &setRange(const SCEV *S, RangeSignHint Hint,
    -                                ConstantRange &&CR) {
    +                                ConstantRange CR) {
         DenseMap &Cache =
             Hint == HINT_RANGE_UNSIGNED ? UnsignedRanges : SignedRanges;
     
    
    Modified: vendor/llvm/dist/include/llvm/Analysis/TargetLibraryInfo.def
    ==============================================================================
    --- vendor/llvm/dist/include/llvm/Analysis/TargetLibraryInfo.def	Tue May 16 19:35:25 2017	(r318367)
    +++ vendor/llvm/dist/include/llvm/Analysis/TargetLibraryInfo.def	Tue May 16 19:46:52 2017	(r318368)
    @@ -161,6 +161,60 @@ TLI_DEFINE_STRING_INTERNAL("_Znwm")
     /// void *new(unsigned long, nothrow);
     TLI_DEFINE_ENUM_INTERNAL(ZnwmRKSt9nothrow_t)
     TLI_DEFINE_STRING_INTERNAL("_ZnwmRKSt9nothrow_t")
    +/// double __acos_finite(double x);
    +TLI_DEFINE_ENUM_INTERNAL(acos_finite)
    +TLI_DEFINE_STRING_INTERNAL("__acos_finite")
    +/// float __acosf_finite(float x);
    +TLI_DEFINE_ENUM_INTERNAL(acosf_finite)
    +TLI_DEFINE_STRING_INTERNAL("__acosf_finite")
    +/// double __acosh_finite(double x);
    +TLI_DEFINE_ENUM_INTERNAL(acosh_finite)
    +TLI_DEFINE_STRING_INTERNAL("__acosh_finite")
    +/// float __acoshf_finite(float x);
    +TLI_DEFINE_ENUM_INTERNAL(acoshf_finite)
    +TLI_DEFINE_STRING_INTERNAL("__acoshf_finite")
    +/// long double __acoshl_finite(long double x);
    +TLI_DEFINE_ENUM_INTERNAL(acoshl_finite)
    +TLI_DEFINE_STRING_INTERNAL("__acoshl_finite")
    +/// long double __acosl_finite(long double x);
    +TLI_DEFINE_ENUM_INTERNAL(acosl_finite)
    +TLI_DEFINE_STRING_INTERNAL("__acosl_finite")
    +/// double __asin_finite(double x);
    +TLI_DEFINE_ENUM_INTERNAL(asin_finite)
    +TLI_DEFINE_STRING_INTERNAL("__asin_finite")
    +/// float __asinf_finite(float x);
    +TLI_DEFINE_ENUM_INTERNAL(asinf_finite)
    +TLI_DEFINE_STRING_INTERNAL("__asinf_finite")
    +/// long double __asinl_finite(long double x);
    +TLI_DEFINE_ENUM_INTERNAL(asinl_finite)
    +TLI_DEFINE_STRING_INTERNAL("__asinl_finite")
    +/// double atan2_finite(double y, double x);
    +TLI_DEFINE_ENUM_INTERNAL(atan2_finite)
    +TLI_DEFINE_STRING_INTERNAL("__atan2_finite")
    +/// float atan2f_finite(float y, float x);
    +TLI_DEFINE_ENUM_INTERNAL(atan2f_finite)
    +TLI_DEFINE_STRING_INTERNAL("__atan2f_finite")
    +/// long double atan2l_finite(long double y, long double x);
    +TLI_DEFINE_ENUM_INTERNAL(atan2l_finite)
    +TLI_DEFINE_STRING_INTERNAL("__atan2l_finite")
    +/// double __atanh_finite(double x);
    +TLI_DEFINE_ENUM_INTERNAL(atanh_finite)
    +TLI_DEFINE_STRING_INTERNAL("__atanh_finite")
    +/// float __atanhf_finite(float x);
    +TLI_DEFINE_ENUM_INTERNAL(atanhf_finite)
    +TLI_DEFINE_STRING_INTERNAL("__atanhf_finite")
    +/// long double __atanhl_finite(long double x);
    +TLI_DEFINE_ENUM_INTERNAL(atanhl_finite)
    +TLI_DEFINE_STRING_INTERNAL("__atanhl_finite")
    +/// double __cosh_finite(double x);
    +TLI_DEFINE_ENUM_INTERNAL(cosh_finite)
    +TLI_DEFINE_STRING_INTERNAL("__cosh_finite")
    +/// float __coshf_finite(float x);
    +TLI_DEFINE_ENUM_INTERNAL(coshf_finite)
    +TLI_DEFINE_STRING_INTERNAL("__coshf_finite")
    +/// long double __coshl_finite(long double x);
    +TLI_DEFINE_ENUM_INTERNAL(coshl_finite)
    +TLI_DEFINE_STRING_INTERNAL("__coshl_finite")
     /// double __cospi(double x);
     TLI_DEFINE_ENUM_INTERNAL(cospi)
     TLI_DEFINE_STRING_INTERNAL("__cospi")
    @@ -180,12 +234,66 @@ TLI_DEFINE_STRING_INTERNAL("__cxa_guard_
     /// void __cxa_guard_release(guard_t *guard);
     TLI_DEFINE_ENUM_INTERNAL(cxa_guard_release)
     TLI_DEFINE_STRING_INTERNAL("__cxa_guard_release")
    +/// double __exp10_finite(double x);
    +TLI_DEFINE_ENUM_INTERNAL(exp10_finite)
    +TLI_DEFINE_STRING_INTERNAL("__exp10_finite")
    +/// float __exp10f_finite(float x);
    +TLI_DEFINE_ENUM_INTERNAL(exp10f_finite)
    +TLI_DEFINE_STRING_INTERNAL("__exp10f_finite")
    +/// long double __exp10l_finite(long double x);
    +TLI_DEFINE_ENUM_INTERNAL(exp10l_finite)
    +TLI_DEFINE_STRING_INTERNAL("__exp10l_finite")
    +/// double __exp2_finite(double x);
    +TLI_DEFINE_ENUM_INTERNAL(exp2_finite)
    +TLI_DEFINE_STRING_INTERNAL("__exp2_finite")
    +/// float __exp2f_finite(float x);
    +TLI_DEFINE_ENUM_INTERNAL(exp2f_finite)
    +TLI_DEFINE_STRING_INTERNAL("__exp2f_finite")
    +/// long double __exp2l_finite(long double x);
    +TLI_DEFINE_ENUM_INTERNAL(exp2l_finite)
    +TLI_DEFINE_STRING_INTERNAL("__exp2l_finite")
    +/// double __exp_finite(double x);
    +TLI_DEFINE_ENUM_INTERNAL(exp_finite)
    +TLI_DEFINE_STRING_INTERNAL("__exp_finite")
    +/// float __expf_finite(float x);
    +TLI_DEFINE_ENUM_INTERNAL(expf_finite)
    +TLI_DEFINE_STRING_INTERNAL("__expf_finite")
    +/// long double __expl_finite(long double x);
    +TLI_DEFINE_ENUM_INTERNAL(expl_finite)
    +TLI_DEFINE_STRING_INTERNAL("__expl_finite")
     /// int __isoc99_scanf (const char *format, ...)
     TLI_DEFINE_ENUM_INTERNAL(dunder_isoc99_scanf)
     TLI_DEFINE_STRING_INTERNAL("__isoc99_scanf")
     /// int __isoc99_sscanf(const char *s, const char *format, ...)
     TLI_DEFINE_ENUM_INTERNAL(dunder_isoc99_sscanf)
     TLI_DEFINE_STRING_INTERNAL("__isoc99_sscanf")
    +/// double __log10_finite(double x);
    +TLI_DEFINE_ENUM_INTERNAL(log10_finite)
    +TLI_DEFINE_STRING_INTERNAL("__log10_finite")
    +/// float __log10f_finite(float x);
    +TLI_DEFINE_ENUM_INTERNAL(log10f_finite)
    +TLI_DEFINE_STRING_INTERNAL("__log10f_finite")
    +/// long double __log10l_finite(long double x);
    +TLI_DEFINE_ENUM_INTERNAL(log10l_finite)
    +TLI_DEFINE_STRING_INTERNAL("__log10l_finite")
    +/// double __log2_finite(double x);
    +TLI_DEFINE_ENUM_INTERNAL(log2_finite)
    +TLI_DEFINE_STRING_INTERNAL("__log2_finite")
    +/// float __log2f_finite(float x);
    +TLI_DEFINE_ENUM_INTERNAL(log2f_finite)
    +TLI_DEFINE_STRING_INTERNAL("__log2f_finite")
    +/// long double __log2l_finite(long double x);
    +TLI_DEFINE_ENUM_INTERNAL(log2l_finite)
    +TLI_DEFINE_STRING_INTERNAL("__log2l_finite")
    +/// double __log_finite(double x);
    +TLI_DEFINE_ENUM_INTERNAL(log_finite)
    +TLI_DEFINE_STRING_INTERNAL("__log_finite")
    +/// float __logf_finite(float x);
    +TLI_DEFINE_ENUM_INTERNAL(logf_finite)
    +TLI_DEFINE_STRING_INTERNAL("__logf_finite")
    +/// long double __logl_finite(long double x);
    +TLI_DEFINE_ENUM_INTERNAL(logl_finite)
    +TLI_DEFINE_STRING_INTERNAL("__logl_finite")
     /// void *__memcpy_chk(void *s1, const void *s2, size_t n, size_t s1size);
     TLI_DEFINE_ENUM_INTERNAL(memcpy_chk)
     TLI_DEFINE_STRING_INTERNAL("__memcpy_chk")
    @@ -199,13 +307,30 @@ TLI_DEFINE_STRING_INTERNAL("__memset_chk
     // int __nvvm_reflect(const char *)
     TLI_DEFINE_ENUM_INTERNAL(nvvm_reflect)
     TLI_DEFINE_STRING_INTERNAL("__nvvm_reflect")
    -
    +/// double __pow_finite(double x, double y);
    +TLI_DEFINE_ENUM_INTERNAL(pow_finite)
    +TLI_DEFINE_STRING_INTERNAL("__pow_finite")
    +/// float _powf_finite(float x, float y);
    +TLI_DEFINE_ENUM_INTERNAL(powf_finite)
    +TLI_DEFINE_STRING_INTERNAL("__powf_finite")
    +/// long double __powl_finite(long double x, long double y);
    +TLI_DEFINE_ENUM_INTERNAL(powl_finite)
    +TLI_DEFINE_STRING_INTERNAL("__powl_finite")
     /// double __sincospi_stret(double x);
     TLI_DEFINE_ENUM_INTERNAL(sincospi_stret)
     TLI_DEFINE_STRING_INTERNAL("__sincospi_stret")
     /// float __sincospif_stret(float x);
     TLI_DEFINE_ENUM_INTERNAL(sincospif_stret)
     TLI_DEFINE_STRING_INTERNAL("__sincospif_stret")
    +/// double __sinh_finite(double x);
    +TLI_DEFINE_ENUM_INTERNAL(sinh_finite)
    +TLI_DEFINE_STRING_INTERNAL("__sinh_finite")
    +/// float _sinhf_finite(float x);
    +TLI_DEFINE_ENUM_INTERNAL(sinhf_finite)
    +TLI_DEFINE_STRING_INTERNAL("__sinhf_finite")
    +/// long double __sinhl_finite(long double x);
    +TLI_DEFINE_ENUM_INTERNAL(sinhl_finite)
    +TLI_DEFINE_STRING_INTERNAL("__sinhl_finite")
     /// double __sinpi(double x);
     TLI_DEFINE_ENUM_INTERNAL(sinpi)
     TLI_DEFINE_STRING_INTERNAL("__sinpi")
    
    Modified: vendor/llvm/dist/include/llvm/Analysis/TargetTransformInfo.h
    ==============================================================================
    --- vendor/llvm/dist/include/llvm/Analysis/TargetTransformInfo.h	Tue May 16 19:35:25 2017	(r318367)
    +++ vendor/llvm/dist/include/llvm/Analysis/TargetTransformInfo.h	Tue May 16 19:46:52 2017	(r318368)
    @@ -537,6 +537,9 @@ public:
       /// \return The width of the largest scalar or vector register type.
       unsigned getRegisterBitWidth(bool Vector) const;
     
    +  /// \return The width of the smallest vector register type.
    +  unsigned getMinVectorRegisterBitWidth() const;
    +
       /// \return True if it should be considered for address type promotion.
       /// \p AllowPromotionWithoutCommonHeader Set true if promoting \p I is
       /// profitable without finding other extensions fed by the same input.
    @@ -740,6 +743,22 @@ public:
                                     unsigned ChainSizeInBytes,
                                     VectorType *VecTy) const;
     
    +  /// Flags describing the kind of vector reduction.
    +  struct ReductionFlags {
    +    ReductionFlags() : IsMaxOp(false), IsSigned(false), NoNaN(false) {}
    +    bool IsMaxOp;  ///< If the op a min/max kind, true if it's a max operation.
    +    bool IsSigned; ///< Whether the operation is a signed int reduction.
    +    bool NoNaN;    ///< If op is an fp min/max, whether NaNs may be present.
    +  };
    +
    +  /// \returns True if the target wants to handle the given reduction idiom in
    +  /// the intrinsics form instead of the shuffle form.
    +  bool useReductionIntrinsic(unsigned Opcode, Type *Ty,
    +                             ReductionFlags Flags) const;
    +
    +  /// \returns True if the target wants to expand the given reduction intrinsic
    +  /// into a shuffle sequence.
    +  bool shouldExpandReduction(const IntrinsicInst *II) const;
       /// @}
     
     private:
    @@ -824,6 +843,7 @@ public:
                                 Type *Ty) = 0;
       virtual unsigned getNumberOfRegisters(bool Vector) = 0;
       virtual unsigned getRegisterBitWidth(bool Vector) = 0;
    +  virtual unsigned getMinVectorRegisterBitWidth() = 0;
       virtual bool shouldConsiderAddressTypePromotion(
           const Instruction &I, bool &AllowPromotionWithoutCommonHeader) = 0;
       virtual unsigned getCacheLineSize() = 0;
    @@ -895,6 +915,9 @@ public:
       virtual unsigned getStoreVectorFactor(unsigned VF, unsigned StoreSize,
                                             unsigned ChainSizeInBytes,
                                             VectorType *VecTy) const = 0;
    +  virtual bool useReductionIntrinsic(unsigned Opcode, Type *Ty,
    +                                     ReductionFlags) const = 0;
    +  virtual bool shouldExpandReduction(const IntrinsicInst *II) const = 0;
     };
     
     template 
    @@ -1057,6 +1080,9 @@ public:
       unsigned getRegisterBitWidth(bool Vector) override {
         return Impl.getRegisterBitWidth(Vector);
       }
    +  unsigned getMinVectorRegisterBitWidth() override {
    +    return Impl.getMinVectorRegisterBitWidth();
    +  }
       bool shouldConsiderAddressTypePromotion(
           const Instruction &I, bool &AllowPromotionWithoutCommonHeader) override {
         return Impl.shouldConsiderAddressTypePromotion(
    @@ -1200,6 +1226,13 @@ public:
                                     VectorType *VecTy) const override {
         return Impl.getStoreVectorFactor(VF, StoreSize, ChainSizeInBytes, VecTy);
       }
    
    *** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
    
    From owner-svn-src-vendor@freebsd.org  Tue May 16 19:47:01 2017
    Return-Path: 
    Delivered-To: svn-src-vendor@mailman.ysv.freebsd.org
    Received: from mx1.freebsd.org (mx1.freebsd.org
     [IPv6:2001:1900:2254:206a::19:1])
     by mailman.ysv.freebsd.org (Postfix) with ESMTP id 9BFAAD70298;
     Tue, 16 May 2017 19:47:01 +0000 (UTC) (envelope-from dim@FreeBSD.org)
    Received: from repo.freebsd.org (repo.freebsd.org
     [IPv6:2610:1c1:1:6068::e6a:0])
     (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
     (Client did not present a certificate)
     by mx1.freebsd.org (Postfix) with ESMTPS id 549E81BCE;
     Tue, 16 May 2017 19:47:01 +0000 (UTC) (envelope-from dim@FreeBSD.org)
    Received: from repo.freebsd.org ([127.0.1.37])
     by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v4GJl0en096869;
     Tue, 16 May 2017 19:47:00 GMT (envelope-from dim@FreeBSD.org)
    Received: (from dim@localhost)
     by repo.freebsd.org (8.15.2/8.15.2/Submit) id v4GJl0xp096868;
     Tue, 16 May 2017 19:47:00 GMT (envelope-from dim@FreeBSD.org)
    Message-Id: <201705161947.v4GJl0xp096868@repo.freebsd.org>
    X-Authentication-Warning: repo.freebsd.org: dim set sender to dim@FreeBSD.org
     using -f
    From: Dimitry Andric 
    Date: Tue, 16 May 2017 19:47:00 +0000 (UTC)
    To: src-committers@freebsd.org, svn-src-all@freebsd.org,
     svn-src-vendor@freebsd.org
    Subject: svn commit: r318369 - vendor/llvm/llvm-trunk-r303197
    X-SVN-Group: vendor
    MIME-Version: 1.0
    Content-Type: text/plain; charset=UTF-8
    Content-Transfer-Encoding: 8bit
    X-BeenThere: svn-src-vendor@freebsd.org
    X-Mailman-Version: 2.1.23
    Precedence: list
    List-Id: SVN commit messages for the vendor work area tree
     
    List-Unsubscribe: , 
     
    List-Archive: 
    List-Post: 
    List-Help: 
    List-Subscribe: ,
     
    X-List-Received-Date: Tue, 16 May 2017 19:47:01 -0000
    
    Author: dim
    Date: Tue May 16 19:47:00 2017
    New Revision: 318369
    URL: https://svnweb.freebsd.org/changeset/base/318369
    
    Log:
      Tag llvm trunk r303197.
    
    Added:
      vendor/llvm/llvm-trunk-r303197/
         - copied from r318368, vendor/llvm/dist/
    
    From owner-svn-src-vendor@freebsd.org  Tue May 16 19:47:14 2017
    Return-Path: 
    Delivered-To: svn-src-vendor@mailman.ysv.freebsd.org
    Received: from mx1.freebsd.org (mx1.freebsd.org
     [IPv6:2001:1900:2254:206a::19:1])
     by mailman.ysv.freebsd.org (Postfix) with ESMTP id 00D93D70300;
     Tue, 16 May 2017 19:47:14 +0000 (UTC) (envelope-from dim@FreeBSD.org)
    Received: from repo.freebsd.org (repo.freebsd.org
     [IPv6:2610:1c1:1:6068::e6a:0])
     (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
     (Client did not present a certificate)
     by mx1.freebsd.org (Postfix) with ESMTPS id 715D61C93;
     Tue, 16 May 2017 19:47:13 +0000 (UTC) (envelope-from dim@FreeBSD.org)
    Received: from repo.freebsd.org ([127.0.1.37])
     by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v4GJlCRA096945;
     Tue, 16 May 2017 19:47:12 GMT (envelope-from dim@FreeBSD.org)
    Received: (from dim@localhost)
     by repo.freebsd.org (8.15.2/8.15.2/Submit) id v4GJl98T096916;
     Tue, 16 May 2017 19:47:09 GMT (envelope-from dim@FreeBSD.org)
    Message-Id: <201705161947.v4GJl98T096916@repo.freebsd.org>
    X-Authentication-Warning: repo.freebsd.org: dim set sender to dim@FreeBSD.org
     using -f
    From: Dimitry Andric 
    Date: Tue, 16 May 2017 19:47:09 +0000 (UTC)
    To: src-committers@freebsd.org, svn-src-all@freebsd.org,
     svn-src-vendor@freebsd.org
    Subject: svn commit: r318370 - in vendor/clang/dist: . cmake/caches docs
     include/clang-c include/clang/AST include/clang/Basic include/clang/Driver
     include/clang/Format include/clang/Frontend include/clang/...
    X-SVN-Group: vendor
    MIME-Version: 1.0
    Content-Type: text/plain; charset=UTF-8
    Content-Transfer-Encoding: 8bit
    X-BeenThere: svn-src-vendor@freebsd.org
    X-Mailman-Version: 2.1.23
    Precedence: list
    List-Id: SVN commit messages for the vendor work area tree
     
    List-Unsubscribe: , 
     
    List-Archive: 
    List-Post: 
    List-Help: 
    List-Subscribe: ,
     
    X-List-Received-Date: Tue, 16 May 2017 19:47:14 -0000
    
    Author: dim
    Date: Tue May 16 19:47:09 2017
    New Revision: 318370
    URL: https://svnweb.freebsd.org/changeset/base/318370
    
    Log:
      Vendor import of clang trunk r303197:
      https://llvm.org/svn/llvm-project/cfe/trunk@303197
    
    Added:
      vendor/clang/dist/test/Analysis/builtin-assume.c   (contents, props changed)
      vendor/clang/dist/test/CXX/drs/dr20xx.cpp   (contents, props changed)
      vendor/clang/dist/test/CodeGen/asan-no-globals-no-comdat.cpp   (contents, props changed)
      vendor/clang/dist/test/CodeGen/mips-aggregate-arg.c   (contents, props changed)
      vendor/clang/dist/test/CodeGen/sparcv8-inline-asm.c   (contents, props changed)
      vendor/clang/dist/test/CodeGen/x86_64-mno-sse.c   (contents, props changed)
      vendor/clang/dist/test/CodeGen/xray-customevent.cpp   (contents, props changed)
      vendor/clang/dist/test/CodeGenCXX/array-default-argument.cpp   (contents, props changed)
      vendor/clang/dist/test/Import/conflicting-struct/
      vendor/clang/dist/test/Import/conflicting-struct/Inputs/
      vendor/clang/dist/test/Import/conflicting-struct/Inputs/S1.cpp   (contents, props changed)
      vendor/clang/dist/test/Import/conflicting-struct/Inputs/S2.cpp   (contents, props changed)
      vendor/clang/dist/test/Import/conflicting-struct/test.cpp   (contents, props changed)
      vendor/clang/dist/test/Index/Core/index-dependent-source.cpp   (contents, props changed)
      vendor/clang/dist/test/Index/Core/index-instantiated-source.cpp   (contents, props changed)
      vendor/clang/dist/test/Index/complete-available.m
      vendor/clang/dist/test/Modules/DebugInfoNamespace.cpp   (contents, props changed)
      vendor/clang/dist/test/Modules/Inputs/DebugInfoNamespace/
      vendor/clang/dist/test/Modules/Inputs/DebugInfoNamespace/A.h   (contents, props changed)
      vendor/clang/dist/test/Modules/Inputs/DebugInfoNamespace/B.h   (contents, props changed)
      vendor/clang/dist/test/Modules/Inputs/DebugInfoNamespace/module.modulemap
      vendor/clang/dist/test/Modules/Inputs/MainA.framework/
      vendor/clang/dist/test/Modules/Inputs/MainA.framework/Frameworks/
      vendor/clang/dist/test/Modules/Inputs/MainA.framework/Frameworks/Sub.framework/
      vendor/clang/dist/test/Modules/Inputs/MainA.framework/Frameworks/Sub.framework/Headers/
      vendor/clang/dist/test/Modules/Inputs/MainA.framework/Frameworks/Sub.framework/Headers/B.h   (contents, props changed)
      vendor/clang/dist/test/Modules/Inputs/MainA.framework/Frameworks/Sub.framework/Headers/Sub.h   (contents, props changed)
      vendor/clang/dist/test/Modules/Inputs/MainA.framework/Frameworks/Sub.framework/PrivateHeaders/
      vendor/clang/dist/test/Modules/Inputs/MainA.framework/Frameworks/Sub.framework/PrivateHeaders/BPriv.h   (contents, props changed)
      vendor/clang/dist/test/Modules/Inputs/MainA.framework/Frameworks/Sub.framework/PrivateHeaders/SubPriv.h   (contents, props changed)
      vendor/clang/dist/test/Modules/Inputs/MainA.framework/Headers/
      vendor/clang/dist/test/Modules/Inputs/MainA.framework/Headers/A.h   (contents, props changed)
      vendor/clang/dist/test/Modules/Inputs/MainA.framework/Headers/Main.h   (contents, props changed)
      vendor/clang/dist/test/Modules/Inputs/MainA.framework/Modules/
      vendor/clang/dist/test/Modules/Inputs/MainA.framework/Modules/module.modulemap
      vendor/clang/dist/test/Modules/Inputs/MainA.framework/Modules/module.private.modulemap
      vendor/clang/dist/test/Modules/Inputs/MainA.framework/PrivateHeaders/
      vendor/clang/dist/test/Modules/Inputs/MainA.framework/PrivateHeaders/APriv.h   (contents, props changed)
      vendor/clang/dist/test/Modules/Inputs/MainA.framework/PrivateHeaders/MainPriv.h   (contents, props changed)
      vendor/clang/dist/test/Modules/Inputs/SameHeader/
      vendor/clang/dist/test/Modules/Inputs/SameHeader/A.h   (contents, props changed)
      vendor/clang/dist/test/Modules/Inputs/SameHeader/B.h   (contents, props changed)
      vendor/clang/dist/test/Modules/Inputs/SameHeader/C.h   (contents, props changed)
      vendor/clang/dist/test/Modules/Inputs/SameHeader/module.modulemap
      vendor/clang/dist/test/Modules/redefinition-same-header.m
      vendor/clang/dist/test/OpenMP/report_default_DSA.cpp   (contents, props changed)
      vendor/clang/dist/test/Sema/redefinition-same-header.c   (contents, props changed)
      vendor/clang/dist/test/Sema/vector-gcc-compat.c   (contents, props changed)
      vendor/clang/dist/test/Sema/vector-gcc-compat.cpp   (contents, props changed)
      vendor/clang/dist/test/SemaObjCXX/interface-return-type.mm
      vendor/clang/dist/test/SemaObjCXX/is-base-of.mm
      vendor/clang/dist/test/SemaOpenCL/array-init.cl
      vendor/clang/dist/test/SemaTemplate/typo-template-name.cpp   (contents, props changed)
    Modified:
      vendor/clang/dist/CMakeLists.txt
      vendor/clang/dist/cmake/caches/Apple-stage2.cmake
      vendor/clang/dist/cmake/caches/DistributionExample.cmake
      vendor/clang/dist/docs/CMakeLists.txt
      vendor/clang/dist/docs/ClangFormatStyleOptions.rst
      vendor/clang/dist/docs/ThreadSafetyAnalysis.rst
      vendor/clang/dist/include/clang-c/Index.h
      vendor/clang/dist/include/clang/AST/CXXInheritance.h
      vendor/clang/dist/include/clang/AST/Decl.h
      vendor/clang/dist/include/clang/AST/DeclCXX.h
      vendor/clang/dist/include/clang/AST/ExternalASTMerger.h
      vendor/clang/dist/include/clang/AST/RecursiveASTVisitor.h
      vendor/clang/dist/include/clang/Basic/Attr.td
      vendor/clang/dist/include/clang/Basic/Builtins.def
      vendor/clang/dist/include/clang/Basic/DiagnosticGroups.td
      vendor/clang/dist/include/clang/Basic/DiagnosticSemaKinds.td
      vendor/clang/dist/include/clang/Basic/TargetOptions.h
      vendor/clang/dist/include/clang/Driver/Options.td
      vendor/clang/dist/include/clang/Driver/SanitizerArgs.h
      vendor/clang/dist/include/clang/Format/Format.h
      vendor/clang/dist/include/clang/Frontend/CodeGenOptions.def
      vendor/clang/dist/include/clang/Lex/MacroInfo.h
      vendor/clang/dist/include/clang/Lex/Preprocessor.h
      vendor/clang/dist/include/clang/Parse/Parser.h
      vendor/clang/dist/include/clang/Sema/Sema.h
      vendor/clang/dist/include/clang/Tooling/RefactoringCallbacks.h
      vendor/clang/dist/lib/AST/ASTImporter.cpp
      vendor/clang/dist/lib/AST/ASTStructuralEquivalence.cpp
      vendor/clang/dist/lib/AST/CXXInheritance.cpp
      vendor/clang/dist/lib/AST/DeclCXX.cpp
      vendor/clang/dist/lib/AST/ExternalASTMerger.cpp
      vendor/clang/dist/lib/AST/ODRHash.cpp
      vendor/clang/dist/lib/AST/Stmt.cpp
      vendor/clang/dist/lib/AST/Type.cpp
      vendor/clang/dist/lib/Basic/Targets.cpp
      vendor/clang/dist/lib/CodeGen/BackendUtil.cpp
      vendor/clang/dist/lib/CodeGen/CGBlocks.cpp
      vendor/clang/dist/lib/CodeGen/CGBuiltin.cpp
      vendor/clang/dist/lib/CodeGen/CGCUDANV.cpp
      vendor/clang/dist/lib/CodeGen/CGCleanup.cpp
      vendor/clang/dist/lib/CodeGen/CGDebugInfo.cpp
      vendor/clang/dist/lib/CodeGen/CGDebugInfo.h
      vendor/clang/dist/lib/CodeGen/CGDecl.cpp
      vendor/clang/dist/lib/CodeGen/CGException.cpp
      vendor/clang/dist/lib/CodeGen/CGExpr.cpp
      vendor/clang/dist/lib/CodeGen/CGExprAgg.cpp
      vendor/clang/dist/lib/CodeGen/CGExprConstant.cpp
      vendor/clang/dist/lib/CodeGen/CGExprScalar.cpp
      vendor/clang/dist/lib/CodeGen/CGObjCGNU.cpp
      vendor/clang/dist/lib/CodeGen/CGObjCMac.cpp
      vendor/clang/dist/lib/CodeGen/CGOpenMPRuntime.cpp
      vendor/clang/dist/lib/CodeGen/CodeGenAction.cpp
      vendor/clang/dist/lib/CodeGen/CodeGenModule.cpp
      vendor/clang/dist/lib/CodeGen/CodeGenTypes.cpp
      vendor/clang/dist/lib/CodeGen/ItaniumCXXABI.cpp
      vendor/clang/dist/lib/CodeGen/TargetInfo.cpp
      vendor/clang/dist/lib/Driver/SanitizerArgs.cpp
      vendor/clang/dist/lib/Driver/ToolChains/Arch/Mips.cpp
      vendor/clang/dist/lib/Driver/ToolChains/Myriad.cpp
      vendor/clang/dist/lib/Driver/ToolChains/WebAssembly.cpp
      vendor/clang/dist/lib/Format/ContinuationIndenter.cpp
      vendor/clang/dist/lib/Format/Format.cpp
      vendor/clang/dist/lib/Format/TokenAnnotator.cpp
      vendor/clang/dist/lib/Format/UnwrappedLineParser.cpp
      vendor/clang/dist/lib/Format/WhitespaceManager.cpp
      vendor/clang/dist/lib/Frontend/CompilerInvocation.cpp
      vendor/clang/dist/lib/Headers/avxintrin.h
      vendor/clang/dist/lib/Headers/emmintrin.h
      vendor/clang/dist/lib/Headers/intrin.h
      vendor/clang/dist/lib/Headers/mmintrin.h
      vendor/clang/dist/lib/Headers/opencl-c.h
      vendor/clang/dist/lib/Headers/pmmintrin.h
      vendor/clang/dist/lib/Headers/prfchwintrin.h
      vendor/clang/dist/lib/Headers/smmintrin.h
      vendor/clang/dist/lib/Headers/tmmintrin.h
      vendor/clang/dist/lib/Headers/x86intrin.h
      vendor/clang/dist/lib/Headers/xmmintrin.h
      vendor/clang/dist/lib/Index/IndexBody.cpp
      vendor/clang/dist/lib/Index/IndexDecl.cpp
      vendor/clang/dist/lib/Index/IndexTypeSourceInfo.cpp
      vendor/clang/dist/lib/Index/IndexingContext.cpp
      vendor/clang/dist/lib/Lex/MacroInfo.cpp
      vendor/clang/dist/lib/Lex/ModuleMap.cpp
      vendor/clang/dist/lib/Lex/PPDirectives.cpp
      vendor/clang/dist/lib/Lex/Preprocessor.cpp
      vendor/clang/dist/lib/Parse/ParseDecl.cpp
      vendor/clang/dist/lib/Parse/ParseDeclCXX.cpp
      vendor/clang/dist/lib/Parse/ParseExpr.cpp
      vendor/clang/dist/lib/Parse/ParseExprCXX.cpp
      vendor/clang/dist/lib/Parse/ParseTemplate.cpp
      vendor/clang/dist/lib/Sema/CMakeLists.txt
      vendor/clang/dist/lib/Sema/Sema.cpp
      vendor/clang/dist/lib/Sema/SemaCast.cpp
      vendor/clang/dist/lib/Sema/SemaCodeComplete.cpp
      vendor/clang/dist/lib/Sema/SemaDecl.cpp
      vendor/clang/dist/lib/Sema/SemaDeclAttr.cpp
      vendor/clang/dist/lib/Sema/SemaExpr.cpp
      vendor/clang/dist/lib/Sema/SemaExprCXX.cpp
      vendor/clang/dist/lib/Sema/SemaExprObjC.cpp
      vendor/clang/dist/lib/Sema/SemaInit.cpp
      vendor/clang/dist/lib/Sema/SemaLookup.cpp
      vendor/clang/dist/lib/Sema/SemaOverload.cpp
      vendor/clang/dist/lib/Sema/SemaStmt.cpp
      vendor/clang/dist/lib/Sema/SemaTemplate.cpp
      vendor/clang/dist/lib/Sema/SemaTemplateInstantiateDecl.cpp
      vendor/clang/dist/lib/Sema/SemaType.cpp
      vendor/clang/dist/lib/Serialization/ASTReader.cpp
      vendor/clang/dist/lib/Serialization/ASTWriter.cpp
      vendor/clang/dist/lib/StaticAnalyzer/Checkers/BasicObjCFoundationChecks.cpp
      vendor/clang/dist/lib/StaticAnalyzer/Checkers/BuiltinFunctionChecker.cpp
      vendor/clang/dist/lib/StaticAnalyzer/Checkers/NoReturnFunctionChecker.cpp
      vendor/clang/dist/lib/StaticAnalyzer/Checkers/RetainCountChecker.cpp
      vendor/clang/dist/lib/StaticAnalyzer/Checkers/SelectorExtras.h
      vendor/clang/dist/lib/StaticAnalyzer/Checkers/StdLibraryFunctionsChecker.cpp
      vendor/clang/dist/lib/StaticAnalyzer/Core/ExprEngineCallAndReturn.cpp
      vendor/clang/dist/lib/Tooling/RefactoringCallbacks.cpp
      vendor/clang/dist/test/CXX/drs/dr4xx.cpp
      vendor/clang/dist/test/CodeCompletion/member-access.cpp
      vendor/clang/dist/test/CodeGen/asan-globals-gc.cpp
      vendor/clang/dist/test/CodeGen/sanitize-recover.c
      vendor/clang/dist/test/CodeGen/thinlto_backend.ll
      vendor/clang/dist/test/CodeGenCXX/linetable-virtual-variadic.cpp
      vendor/clang/dist/test/CodeGenCXX/vla.cpp
      vendor/clang/dist/test/CodeGenObjC/arc-blocks.m
      vendor/clang/dist/test/CodeGenObjC/arc-foreach.m
      vendor/clang/dist/test/CodeGenOpenCL/amdgpu-debug-info-pointer-address-space.cl
      vendor/clang/dist/test/CodeGenOpenCL/amdgpu-debug-info-variable-expression.cl
      vendor/clang/dist/test/CodeGenOpenCL/constant-addr-space-globals.cl
      vendor/clang/dist/test/Driver/fsanitize.c
      vendor/clang/dist/test/Driver/myriad-toolchain.c
      vendor/clang/dist/test/Driver/wasm-toolchain.c
      vendor/clang/dist/test/FixIt/fixit-availability.c
      vendor/clang/dist/test/FixIt/fixit-availability.mm
      vendor/clang/dist/test/Index/Core/index-source.cpp
      vendor/clang/dist/test/Index/get-cursor.m
      vendor/clang/dist/test/Misc/warning-flags.c
      vendor/clang/dist/test/Modules/DebugInfoSubmoduleImport.c
      vendor/clang/dist/test/Modules/find-privateheaders.m
      vendor/clang/dist/test/Modules/odr_hash.cpp
      vendor/clang/dist/test/Modules/preprocess-module.cpp
      vendor/clang/dist/test/PCH/cxx-templates.cpp
      vendor/clang/dist/test/PCH/cxx-templates.h
      vendor/clang/dist/test/Parser/objc-available.m
      vendor/clang/dist/test/Preprocessor/predefined-arch-macros.c
      vendor/clang/dist/test/Preprocessor/x86_target_features.c
      vendor/clang/dist/test/Sema/overloadable.c
      vendor/clang/dist/test/Sema/typo-correction.c
      vendor/clang/dist/test/Sema/vector-cast.c
      vendor/clang/dist/test/Sema/vector-ops.c
      vendor/clang/dist/test/Sema/zvector.c
      vendor/clang/dist/test/SemaCXX/constructor-initializer.cpp
      vendor/clang/dist/test/SemaCXX/cxx1y-generic-lambdas.cpp
      vendor/clang/dist/test/SemaCXX/cxx1y-variable-templates_top_level.cpp
      vendor/clang/dist/test/SemaCXX/enable_if.cpp
      vendor/clang/dist/test/SemaCXX/for-range-examples.cpp
      vendor/clang/dist/test/SemaCXX/invalid-member-expr.cpp
      vendor/clang/dist/test/SemaCXX/modules-ts.cppm
      vendor/clang/dist/test/SemaCXX/type-traits.cpp
      vendor/clang/dist/test/SemaCXX/typo-correction.cpp
      vendor/clang/dist/test/SemaCXX/vector-no-lax.cpp
      vendor/clang/dist/test/SemaCXX/warn-unused-filescoped.cpp
      vendor/clang/dist/test/SemaObjC/method-bad-param.m
      vendor/clang/dist/test/SemaObjC/unguarded-availability.m
      vendor/clang/dist/test/SemaOpenCL/storageclass.cl
      vendor/clang/dist/test/SemaTemplate/deduction-crash.cpp
      vendor/clang/dist/test/SemaTemplate/default-arguments.cpp
      vendor/clang/dist/test/SemaTemplate/explicit-instantiation.cpp
      vendor/clang/dist/test/SemaTemplate/explicit-specialization-member.cpp
      vendor/clang/dist/test/SemaTemplate/ms-lookup-template-base-classes.cpp
      vendor/clang/dist/tools/c-index-test/c-index-test.c
      vendor/clang/dist/tools/clang-import-test/clang-import-test.cpp
      vendor/clang/dist/tools/libclang/CIndex.cpp
      vendor/clang/dist/tools/libclang/libclang.exports
      vendor/clang/dist/unittests/Format/FormatTest.cpp
      vendor/clang/dist/unittests/Format/FormatTestJS.cpp
      vendor/clang/dist/unittests/Format/FormatTestSelective.cpp
      vendor/clang/dist/unittests/Tooling/RecursiveASTVisitorTest.cpp
      vendor/clang/dist/unittests/Tooling/RefactoringCallbacksTest.cpp
      vendor/clang/dist/www/cxx_dr_status.html
    
    Modified: vendor/clang/dist/CMakeLists.txt
    ==============================================================================
    --- vendor/clang/dist/CMakeLists.txt	Tue May 16 19:47:00 2017	(r318369)
    +++ vendor/clang/dist/CMakeLists.txt	Tue May 16 19:47:09 2017	(r318370)
    @@ -579,10 +579,17 @@ if (CLANG_ENABLE_BOOTSTRAP)
         add_dependencies(clang-bootstrap-deps compiler-rt)
       endif()
     
    +  set(C_COMPILER "clang")
    +  set(CXX_COMPILER "clang++")
    +  if(WIN32)
    +    set(C_COMPILER "clang-cl.exe")
    +    set(CXX_COMPILER "clang-cl.exe")
    +  endif()
    +
       set(COMPILER_OPTIONS
    -    -DCMAKE_CXX_COMPILER=${LLVM_RUNTIME_OUTPUT_INTDIR}/clang++
    -    -DCMAKE_C_COMPILER=${LLVM_RUNTIME_OUTPUT_INTDIR}/clang
    -    -DCMAKE_ASM_COMPILER=${LLVM_RUNTIME_OUTPUT_INTDIR}/clang)
    +    -DCMAKE_CXX_COMPILER=${LLVM_RUNTIME_OUTPUT_INTDIR}/${CXX_COMPILER}
    +    -DCMAKE_C_COMPILER=${LLVM_RUNTIME_OUTPUT_INTDIR}/${C_COMPILER}
    +    -DCMAKE_ASM_COMPILER=${LLVM_RUNTIME_OUTPUT_INTDIR}/${C_COMPILER})
     
       if(BOOTSTRAP_LLVM_BUILD_INSTRUMENTED)
         add_dependencies(clang-bootstrap-deps llvm-profdata)
    
    Modified: vendor/clang/dist/cmake/caches/Apple-stage2.cmake
    ==============================================================================
    --- vendor/clang/dist/cmake/caches/Apple-stage2.cmake	Tue May 16 19:47:00 2017	(r318369)
    +++ vendor/clang/dist/cmake/caches/Apple-stage2.cmake	Tue May 16 19:47:09 2017	(r318370)
    @@ -13,6 +13,7 @@ set(CLANG_LINKS_TO_CREATE clang++ cc c++
     set(CMAKE_MACOSX_RPATH ON CACHE BOOL "")
     set(LLVM_ENABLE_ZLIB ON CACHE BOOL "")
     set(LLVM_ENABLE_BACKTRACES OFF CACHE BOOL "")
    +set(LLVM_ENABLE_MODULES ON CACHE BOOL "")
     set(LLVM_EXTERNALIZE_DEBUGINFO ON CACHE BOOL "")
     set(CLANG_PLUGIN_SUPPORT OFF CACHE BOOL "")
     set(BUG_REPORT_URL "http://developer.apple.com/bugreporter/" CACHE STRING "")
    @@ -28,8 +29,10 @@ set(LLVM_BUILD_TESTS ON CACHE BOOL "")
     set(LLVM_ENABLE_LTO ON CACHE BOOL "")
     set(CMAKE_C_FLAGS "-fno-stack-protector -fno-common -Wno-profile-instr-unprofiled" CACHE STRING "")
     set(CMAKE_CXX_FLAGS "-fno-stack-protector -fno-common -Wno-profile-instr-unprofiled" CACHE STRING "")
    -set(CMAKE_C_FLAGS_RELWITHDEBINFO "-O2 -gline-tables-only -DNDEBUG" CACHE STRING "")
    -set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2 -gline-tables-only -DNDEBUG" CACHE STRING "")
    +if(LLVM_ENABLE_LTO AND NOT LLVM_ENABLE_LTO STREQUAL "THIN")
    +  set(CMAKE_C_FLAGS_RELWITHDEBINFO "-O2 -gline-tables-only -DNDEBUG" CACHE STRING "")
    +  set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2 -gline-tables-only -DNDEBUG" CACHE STRING "")
    +endif()
     set(CMAKE_BUILD_TYPE RelWithDebInfo CACHE STRING "")
     
     set(LIBCXX_INSTALL_LIBRARY OFF CACHE BOOL "")
    
    Modified: vendor/clang/dist/cmake/caches/DistributionExample.cmake
    ==============================================================================
    --- vendor/clang/dist/cmake/caches/DistributionExample.cmake	Tue May 16 19:47:00 2017	(r318369)
    +++ vendor/clang/dist/cmake/caches/DistributionExample.cmake	Tue May 16 19:47:09 2017	(r318370)
    @@ -29,6 +29,13 @@ set(CLANG_BOOTSTRAP_TARGETS
     
     # Setup the bootstrap build.
     set(CLANG_ENABLE_BOOTSTRAP ON CACHE BOOL "")
    -set(CLANG_BOOTSTRAP_CMAKE_ARGS
    -  -C ${CMAKE_CURRENT_LIST_DIR}/DistributionExample-stage2.cmake
    -  CACHE STRING "")
    +
    +if(STAGE2_CACHE_FILE)
    +  set(CLANG_BOOTSTRAP_CMAKE_ARGS
    +    -C ${STAGE2_CACHE_FILE}
    +    CACHE STRING "")
    +else()
    +  set(CLANG_BOOTSTRAP_CMAKE_ARGS
    +    -C ${CMAKE_CURRENT_LIST_DIR}/DistributionExample-stage2.cmake
    +    CACHE STRING "")
    +endif()
    
    Modified: vendor/clang/dist/docs/CMakeLists.txt
    ==============================================================================
    --- vendor/clang/dist/docs/CMakeLists.txt	Tue May 16 19:47:00 2017	(r318369)
    +++ vendor/clang/dist/docs/CMakeLists.txt	Tue May 16 19:47:09 2017	(r318370)
    @@ -91,8 +91,8 @@ endif()
     endif()
     
     if (LLVM_ENABLE_SPHINX)
    +  include(AddSphinxTarget)
       if (SPHINX_FOUND)
    -    include(AddSphinxTarget)
         if (${SPHINX_OUTPUT_HTML})
           add_sphinx_target(html clang)
           add_custom_command(TARGET docs-clang-html POST_BUILD
    
    Modified: vendor/clang/dist/docs/ClangFormatStyleOptions.rst
    ==============================================================================
    --- vendor/clang/dist/docs/ClangFormatStyleOptions.rst	Tue May 16 19:47:00 2017	(r318369)
    +++ vendor/clang/dist/docs/ClangFormatStyleOptions.rst	Tue May 16 19:47:09 2017	(r318370)
    @@ -209,23 +209,45 @@ the configuration (without a prefix: ``A
         float       b = 23;
         std::string ccc = 23;
     
    -**AlignEscapedNewlinesLeft** (``bool``)
    -  If ``true``, aligns escaped newlines as far left as possible.
    -  Otherwise puts them into the right-most column.
    +**AlignEscapedNewlines** (``EscapedNewlineAlignmentStyle``)
    +  Options for aligning backslashes in escaped newlines.
     
    -  .. code-block:: c++
    +  Possible values:
    +
    +  * ``ENAS_DontAlign`` (in configuration: ``DontAlign``)
    +    Don't align escaped newlines.
    +
    +    .. code-block:: c++
    +
    +      #define A \
    +        int aaaa; \
    +        int b; \
    +        int dddddddddd;
    +
    +  * ``ENAS_Left`` (in configuration: ``Left``)
    +    Align escaped newlines as far left as possible.
    +
    +    .. code-block:: c++
    +
    +      true:
    +      #define A   \
    +        int aaaa; \
    +        int b;    \
    +        int dddddddddd;
    +
    +      false:
    +
    +  * ``ENAS_Right`` (in configuration: ``Right``)
    +    Align escaped newlines in the right-most column.
    +
    +    .. code-block:: c++
    +
    +      #define A                                                                      \
    +        int aaaa;                                                                    \
    +        int b;                                                                       \
    +        int dddddddddd;
     
    -    true:
    -    #define A   \
    -      int aaaa; \
    -      int b;    \
    -      int dddddddddd;
     
    -    false:
    -    #define A                                                                      \
    -      int aaaa;                                                                    \
    -      int b;                                                                       \
    -      int dddddddddd;
     
     **AlignOperands** (``bool``)
       If ``true``, horizontally align operands of binary and ternary
    @@ -1525,7 +1547,7 @@ the configuration (without a prefix: ``A
         Use C++03-compatible syntax.
     
       * ``LS_Cpp11`` (in configuration: ``Cpp11``)
    -    Use features of C++11, C++14 and C++1z (e.g. ``A>`` instead of 
    +    Use features of C++11, C++14 and C++1z (e.g. ``A>`` instead of
         ``A >``).
     
       * ``LS_Auto`` (in configuration: ``Auto``)
    
    Modified: vendor/clang/dist/docs/ThreadSafetyAnalysis.rst
    ==============================================================================
    --- vendor/clang/dist/docs/ThreadSafetyAnalysis.rst	Tue May 16 19:47:00 2017	(r318369)
    +++ vendor/clang/dist/docs/ThreadSafetyAnalysis.rst	Tue May 16 19:47:09 2017	(r318370)
    @@ -884,11 +884,11 @@ implementation.
     
       // Deprecated.
       #define PT_GUARDED_VAR \
    -    THREAD_ANNOTATION_ATTRIBUTE__(pt_guarded)
    +    THREAD_ANNOTATION_ATTRIBUTE__(pt_guarded_var)
     
       // Deprecated.
       #define GUARDED_VAR \
    -    THREAD_ANNOTATION_ATTRIBUTE__(guarded)
    +    THREAD_ANNOTATION_ATTRIBUTE__(guarded_var)
     
       // Replaced by REQUIRES
       #define EXCLUSIVE_LOCKS_REQUIRED(...) \
    
    Modified: vendor/clang/dist/include/clang-c/Index.h
    ==============================================================================
    --- vendor/clang/dist/include/clang-c/Index.h	Tue May 16 19:47:00 2017	(r318369)
    +++ vendor/clang/dist/include/clang-c/Index.h	Tue May 16 19:47:09 2017	(r318370)
    @@ -32,7 +32,7 @@
      * compatible, thus CINDEX_VERSION_MAJOR is expected to remain stable.
      */
     #define CINDEX_VERSION_MAJOR 0
    -#define CINDEX_VERSION_MINOR 38
    +#define CINDEX_VERSION_MINOR 39
     
     #define CINDEX_VERSION_ENCODE(major, minor) ( \
           ((major) * 10000)                       \
    @@ -4081,6 +4081,23 @@ CINDEX_LINKAGE unsigned clang_Cursor_isO
     CINDEX_LINKAGE unsigned clang_Cursor_isVariadic(CXCursor C);
     
     /**
    + * \brief Returns non-zero if the given cursor points to a symbol marked with
    + * external_source_symbol attribute.
    + *
    + * \param language If non-NULL, and the attribute is present, will be set to
    + * the 'language' string from the attribute.
    + *
    + * \param definedIn If non-NULL, and the attribute is present, will be set to
    + * the 'definedIn' string from the attribute.
    + *
    + * \param isGenerated If non-NULL, and the attribute is present, will be set to
    + * non-zero if the 'generated_declaration' is set in the attribute.
    + */
    +CINDEX_LINKAGE unsigned clang_Cursor_isExternalSymbol(CXCursor C,
    +                                       CXString *language, CXString *definedIn,
    +                                       unsigned *isGenerated);
    +
    +/**
      * \brief Given a cursor that represents a declaration, return the associated
      * comment's source range.  The range may include multiple consecutive comments
      * with whitespace in between.
    
    Modified: vendor/clang/dist/include/clang/AST/CXXInheritance.h
    ==============================================================================
    --- vendor/clang/dist/include/clang/AST/CXXInheritance.h	Tue May 16 19:47:00 2017	(r318369)
    +++ vendor/clang/dist/include/clang/AST/CXXInheritance.h	Tue May 16 19:47:09 2017	(r318370)
    @@ -161,7 +161,8 @@ class CXXBasePaths {
       void ComputeDeclsFound();
     
       bool lookupInBases(ASTContext &Context, const CXXRecordDecl *Record,
    -                     CXXRecordDecl::BaseMatchesCallback BaseMatches);
    +                     CXXRecordDecl::BaseMatchesCallback BaseMatches,
    +                     bool LookupInDependent = false);
     
     public:
       typedef std::list::iterator paths_iterator;
    
    Modified: vendor/clang/dist/include/clang/AST/Decl.h
    ==============================================================================
    --- vendor/clang/dist/include/clang/AST/Decl.h	Tue May 16 19:47:00 2017	(r318369)
    +++ vendor/clang/dist/include/clang/AST/Decl.h	Tue May 16 19:47:09 2017	(r318370)
    @@ -966,9 +966,16 @@ public:
       /// hasLocalStorage - Returns true if a variable with function scope
       ///  is a non-static local variable.
       bool hasLocalStorage() const {
    -    if (getStorageClass() == SC_None)
    +    if (getStorageClass() == SC_None) {
    +      // OpenCL v1.2 s6.5.3: The __constant or constant address space name is
    +      // used to describe variables allocated in global memory and which are
    +      // accessed inside a kernel(s) as read-only variables. As such, variables
    +      // in constant address space cannot have local storage.
    +      if (getType().getAddressSpace() == LangAS::opencl_constant)
    +        return false;
           // Second check is for C++11 [dcl.stc]p4.
           return !isFileVarDecl() && getTSCSpec() == TSCS_unspecified;
    +    }
     
         // Global Named Register (GNU extension)
         if (getStorageClass() == SC_Register && !isLocalVarDeclOrParm())
    @@ -2478,7 +2485,7 @@ public:
       void setCapturedVLAType(const VariableArrayType *VLAType);
     
       /// getParent - Returns the parent of this field declaration, which
    -  /// is the struct in which this method is defined.
    +  /// is the struct in which this field is defined.
       const RecordDecl *getParent() const {
         return cast(getDeclContext());
       }
    
    Modified: vendor/clang/dist/include/clang/AST/DeclCXX.h
    ==============================================================================
    --- vendor/clang/dist/include/clang/AST/DeclCXX.h	Tue May 16 19:47:00 2017	(r318369)
    +++ vendor/clang/dist/include/clang/AST/DeclCXX.h	Tue May 16 19:47:09 2017	(r318370)
    @@ -1563,10 +1563,13 @@ public:
       /// \param Paths used to record the paths from this class to its base class
       /// subobjects that match the search criteria.
       ///
    +  /// \param LookupInDependent can be set to true to extend the search to
    +  /// dependent base classes.
    +  ///
       /// \returns true if there exists any path from this class to a base class
       /// subobject that matches the search criteria.
    -  bool lookupInBases(BaseMatchesCallback BaseMatches,
    -                     CXXBasePaths &Paths) const;
    +  bool lookupInBases(BaseMatchesCallback BaseMatches, CXXBasePaths &Paths,
    +                     bool LookupInDependent = false) const;
     
       /// \brief Base-class lookup callback that determines whether the given
       /// base class specifier refers to a specific class declaration.
    @@ -1608,6 +1611,16 @@ public:
                                      CXXBasePath &Path, DeclarationName Name);
     
       /// \brief Base-class lookup callback that determines whether there exists
    +  /// a member with the given name.
    +  ///
    +  /// This callback can be used with \c lookupInBases() to find members
    +  /// of the given name within a C++ class hierarchy, including dependent
    +  /// classes.
    +  static bool
    +  FindOrdinaryMemberInDependentClasses(const CXXBaseSpecifier *Specifier,
    +                                       CXXBasePath &Path, DeclarationName Name);
    +
    +  /// \brief Base-class lookup callback that determines whether there exists
       /// an OpenMP declare reduction member with the given name.
       ///
       /// This callback can be used with \c lookupInBases() to find members
    @@ -1633,6 +1646,14 @@ public:
       /// \brief Get the indirect primary bases for this class.
       void getIndirectPrimaryBases(CXXIndirectPrimaryBaseSet& Bases) const;
     
    +  /// Performs an imprecise lookup of a dependent name in this class.
    +  ///
    +  /// This function does not follow strict semantic rules and should be used
    +  /// only when lookup rules can be relaxed, e.g. indexing.
    +  std::vector
    +  lookupDependentName(const DeclarationName &Name,
    +                      llvm::function_ref Filter);
    +
       /// Renders and displays an inheritance diagram
       /// for this C++ class and all of its base classes (transitively) using
       /// GraphViz.
    
    Modified: vendor/clang/dist/include/clang/AST/ExternalASTMerger.h
    ==============================================================================
    --- vendor/clang/dist/include/clang/AST/ExternalASTMerger.h	Tue May 16 19:47:00 2017	(r318369)
    +++ vendor/clang/dist/include/clang/AST/ExternalASTMerger.h	Tue May 16 19:47:09 2017	(r318370)
    @@ -44,6 +44,8 @@ public:
       FindExternalLexicalDecls(const DeclContext *DC,
                                llvm::function_ref IsKindWeWant,
                                SmallVectorImpl &Result) override;
    +
    +   void CompleteType(TagDecl *Tag) override;
     };
     
     } // end namespace clang
    
    Modified: vendor/clang/dist/include/clang/AST/RecursiveASTVisitor.h
    ==============================================================================
    --- vendor/clang/dist/include/clang/AST/RecursiveASTVisitor.h	Tue May 16 19:47:00 2017	(r318369)
    +++ vendor/clang/dist/include/clang/AST/RecursiveASTVisitor.h	Tue May 16 19:47:09 2017	(r318370)
    @@ -2326,7 +2326,7 @@ DEF_TRAVERSE_STMT(LambdaExpr, {
       }
     
       TypeLoc TL = S->getCallOperator()->getTypeSourceInfo()->getTypeLoc();
    -  FunctionProtoTypeLoc Proto = TL.castAs();
    +  FunctionProtoTypeLoc Proto = TL.getAsAdjusted();
     
       if (S->hasExplicitParameters() && S->hasExplicitResultType()) {
         // Visit the whole type.
    
    Modified: vendor/clang/dist/include/clang/Basic/Attr.td
    ==============================================================================
    --- vendor/clang/dist/include/clang/Basic/Attr.td	Tue May 16 19:47:00 2017	(r318369)
    +++ vendor/clang/dist/include/clang/Basic/Attr.td	Tue May 16 19:47:09 2017	(r318370)
    @@ -652,6 +652,30 @@ def Availability : InheritableAttr {
                  .Case("tvos_app_extension", "tvOS (App Extension)")
                  .Case("watchos_app_extension", "watchOS (App Extension)")
                  .Default(llvm::StringRef());
    +}
    +static llvm::StringRef getPlatformNameSourceSpelling(llvm::StringRef Platform) {
    +    return llvm::StringSwitch(Platform)
    +             .Case("ios", "iOS")
    +             .Case("macos", "macOS")
    +             .Case("tvos", "tvOS")
    +             .Case("watchos", "watchOS")
    +             .Case("ios_app_extension", "iOSApplicationExtension")
    +             .Case("macos_app_extension", "macOSApplicationExtension")
    +             .Case("tvos_app_extension", "tvOSApplicationExtension")
    +             .Case("watchos_app_extension", "watchOSApplicationExtension")
    +             .Default(Platform);
    +}
    +static llvm::StringRef canonicalizePlatformName(llvm::StringRef Platform) {
    +    return llvm::StringSwitch(Platform)
    +             .Case("iOS", "ios")
    +             .Case("macOS", "macos")
    +             .Case("tvOS", "tvos")
    +             .Case("watchOS", "watchos")
    +             .Case("iOSApplicationExtension", "ios_app_extension")
    +             .Case("macOSApplicationExtension", "macos_app_extension")
    +             .Case("tvOSApplicationExtension", "tvos_app_extension")
    +             .Case("watchOSApplicationExtension", "watchos_app_extension")
    +             .Default(Platform);
     } }];
       let HasCustomParsing = 1;
       let DuplicatesAllowedWhileMerging = 1;
    
    Modified: vendor/clang/dist/include/clang/Basic/Builtins.def
    ==============================================================================
    --- vendor/clang/dist/include/clang/Basic/Builtins.def	Tue May 16 19:47:00 2017	(r318369)
    +++ vendor/clang/dist/include/clang/Basic/Builtins.def	Tue May 16 19:47:09 2017	(r318370)
    @@ -1409,6 +1409,9 @@ LANGBUILTIN(to_private, "v*v*", "tn", OC
     BUILTIN(__builtin_os_log_format_buffer_size, "zcC*.", "p:0:nut")
     BUILTIN(__builtin_os_log_format, "v*v*cC*.", "p:0:nt")
     
    +// Builtins for XRay
    +BUILTIN(__xray_customevent, "vcC*z", "")
    +
     #undef BUILTIN
     #undef LIBBUILTIN
     #undef LANGBUILTIN
    
    Modified: vendor/clang/dist/include/clang/Basic/DiagnosticGroups.td
    ==============================================================================
    --- vendor/clang/dist/include/clang/Basic/DiagnosticGroups.td	Tue May 16 19:47:00 2017	(r318369)
    +++ vendor/clang/dist/include/clang/Basic/DiagnosticGroups.td	Tue May 16 19:47:09 2017	(r318370)
    @@ -486,6 +486,7 @@ def UnneededInternalDecl : DiagGroup<"un
     def UnneededMemberFunction : DiagGroup<"unneeded-member-function">;
     def UnusedPrivateField : DiagGroup<"unused-private-field">;
     def UnusedFunction : DiagGroup<"unused-function", [UnneededInternalDecl]>;
    +def UnusedTemplate : DiagGroup<"unused-template", [UnneededInternalDecl]>;
     def UnusedMemberFunction : DiagGroup<"unused-member-function",
                                          [UnneededMemberFunction]>;
     def UnusedLabel : DiagGroup<"unused-label">;
    @@ -627,6 +628,7 @@ def Conversion : DiagGroup<"conversion",
     def Unused : DiagGroup<"unused",
                            [UnusedArgument, UnusedFunction, UnusedLabel,
                             // UnusedParameter, (matches GCC's behavior)
    +                        // UnusedTemplate, (clean-up libc++ before enabling)
                             // UnusedMemberFunction, (clean-up llvm before enabling)
                             UnusedPrivateField, UnusedLambdaCapture,
                             UnusedLocalTypedef, UnusedValue, UnusedVariable,
    
    Modified: vendor/clang/dist/include/clang/Basic/DiagnosticSemaKinds.td
    ==============================================================================
    --- vendor/clang/dist/include/clang/Basic/DiagnosticSemaKinds.td	Tue May 16 19:47:00 2017	(r318369)
    +++ vendor/clang/dist/include/clang/Basic/DiagnosticSemaKinds.td	Tue May 16 19:47:09 2017	(r318370)
    @@ -303,6 +303,8 @@ def note_empty_parens_zero_initialize : 
       "replace parentheses with an initializer to declare a variable">;
     def warn_unused_function : Warning<"unused function %0">,
       InGroup, DefaultIgnore;
    +def warn_unused_template : Warning<"unused %select{function|variable}0 template %1">,
    +  InGroup, DefaultIgnore;
     def warn_unused_member_function : Warning<"unused member function %0">,
       InGroup, DefaultIgnore;
     def warn_used_but_marked_unused: Warning<"%0 was marked unused but was used">,
    @@ -2463,6 +2465,9 @@ def err_attribute_invalid_size : Error<
       "vector size not an integral multiple of component size">;
     def err_attribute_zero_size : Error<"zero vector size">;
     def err_attribute_size_too_large : Error<"vector size too large">;
    +def err_typecheck_vector_not_convertable_implict_truncation : Error<
    +   "cannot convert between %select{scalar|vector}0 type %1 and vector type"
    +   " %2 as implicit conversion would cause truncation">;
     def err_typecheck_vector_not_convertable : Error<
       "cannot convert between vector values of different size (%0 and %1)">;
     def err_typecheck_vector_not_convertable_non_scalar : Error<
    @@ -4607,6 +4612,8 @@ def err_abi_tag_on_redeclaration : Error
       "cannot add 'abi_tag' attribute in a redeclaration">;
     def err_new_abi_tag_on_redeclaration : Error<
       "'abi_tag' %0 missing in original declaration">;
    +def note_use_ifdef_guards : Note<
    +  "unguarded header; consider using #ifdef guards or #pragma once">;
     
     def note_deleted_dtor_no_operator_delete : Note<
       "virtual destructor requires an unambiguous, accessible 'operator delete'">;
    @@ -5775,6 +5782,9 @@ def err_objc_object_assignment : Error<
       "cannot assign to class object (%0 invalid)">;
     def err_typecheck_invalid_operands : Error<
       "invalid operands to binary expression (%0 and %1)">;
    +def err_typecheck_logical_vector_expr_gnu_cpp_restrict : Error<
    +  "logical expression with vector %select{type %1 and non-vector type %2|types"
    +  " %1 and %2}0 is only supported in C++">;
     def err_typecheck_sub_ptr_compatible : Error<
       "%diff{$ and $ are not pointers to compatible types|"
       "pointers to incompatible types}0,1">;
    @@ -8186,9 +8196,20 @@ def err_undeclared_use_suggest : Error<
       "use of undeclared %0; did you mean %1?">;
     def err_undeclared_var_use_suggest : Error<
       "use of undeclared identifier %0; did you mean %1?">;
    +def err_no_template : Error<"no template named %0">;
     def err_no_template_suggest : Error<"no template named %0; did you mean %1?">;
    +def err_no_member_template : Error<"no template named %0 in %1">;
     def err_no_member_template_suggest : Error<
       "no template named %0 in %1; did you mean %select{|simply }2%3?">;
    +def err_non_template_in_template_id : Error<
    +  "%0 does not name a template but is followed by template arguments">;
    +def err_non_template_in_template_id_suggest : Error<
    +  "%0 does not name a template but is followed by template arguments; "
    +  "did you mean %1?">;
    +def err_non_template_in_member_template_id_suggest : Error<
    +  "member %0 of %1 is not a template; did you mean %select{|simply }2%3?">;
    +def note_non_template_in_template_id_found : Note<
    +  "non-template declaration found by name lookup">;
     def err_mem_init_not_member_or_class_suggest : Error<
       "initializer %0 does not name a non-static data member or base "
       "class; did you mean the %select{base class|member}1 %2?">;
    @@ -8875,6 +8896,13 @@ def ext_equivalent_internal_linkage_decl
       InGroup>;
     def note_equivalent_internal_linkage_decl : Note<
       "declared here%select{ in module '%1'|}0">;
    +
    +def note_redefinition_modules_same_file : Note<
    +	"'%0' included multiple times, additional include site in header from module '%1'">;
    +def note_redefinition_modules_same_file_modulemap : Note<
    +	"consider adding '%0' as part of '%1' definition">;
    +def note_redefinition_include_same_file : Note<
    +	"'%0' included multiple times, additional include site here">;
     }
     
     let CategoryName = "Coroutines Issue" in {
    
    Modified: vendor/clang/dist/include/clang/Basic/TargetOptions.h
    ==============================================================================
    --- vendor/clang/dist/include/clang/Basic/TargetOptions.h	Tue May 16 19:47:00 2017	(r318369)
    +++ vendor/clang/dist/include/clang/Basic/TargetOptions.h	Tue May 16 19:47:09 2017	(r318370)
    @@ -24,8 +24,7 @@ namespace clang {
     /// \brief Options for controlling the target.
     class TargetOptions {
     public:
    -  /// If given, the name of the target triple to compile for. If not given the
    -  /// target will be selected to match the host.
    +  /// The name of the target triple to compile for.
       std::string Triple;
     
       /// When compiling for the device side, contains the triple used to compile
    
    Modified: vendor/clang/dist/include/clang/Driver/Options.td
    ==============================================================================
    --- vendor/clang/dist/include/clang/Driver/Options.td	Tue May 16 19:47:00 2017	(r318369)
    +++ vendor/clang/dist/include/clang/Driver/Options.td	Tue May 16 19:47:09 2017	(r318370)
    @@ -827,6 +827,9 @@ def fno_sanitize_address_use_after_scope
                                                Group,
                                                Flags<[CoreOption, DriverOption]>,
                                                HelpText<"Disable use-after-scope detection in AddressSanitizer">;
    +def fsanitize_address_globals_dead_stripping : Flag<["-"], "fsanitize-address-globals-dead-stripping">,
    +                                        Group,
    +                                        HelpText<"Enable linker dead stripping of globals in AddressSanitizer">;
     def fsanitize_recover : Flag<["-"], "fsanitize-recover">, Group;
     def fno_sanitize_recover : Flag<["-"], "fno-sanitize-recover">,
                                Flags<[CoreOption, DriverOption]>,
    
    Modified: vendor/clang/dist/include/clang/Driver/SanitizerArgs.h
    ==============================================================================
    --- vendor/clang/dist/include/clang/Driver/SanitizerArgs.h	Tue May 16 19:47:00 2017	(r318369)
    +++ vendor/clang/dist/include/clang/Driver/SanitizerArgs.h	Tue May 16 19:47:09 2017	(r318370)
    @@ -35,6 +35,7 @@ class SanitizerArgs {
       int AsanFieldPadding = 0;
       bool AsanSharedRuntime = false;
       bool AsanUseAfterScope = true;
    +  bool AsanGlobalsDeadStripping = false;
       bool LinkCXXRuntimes = false;
       bool NeedPIE = false;
       bool Stats = false;
    
    Modified: vendor/clang/dist/include/clang/Format/Format.h
    ==============================================================================
    --- vendor/clang/dist/include/clang/Format/Format.h	Tue May 16 19:47:00 2017	(r318369)
    +++ vendor/clang/dist/include/clang/Format/Format.h	Tue May 16 19:47:09 2017	(r318370)
    @@ -98,22 +98,39 @@ struct FormatStyle {
       /// \endcode
       bool AlignConsecutiveDeclarations;
     
    -  /// \brief If ``true``, aligns escaped newlines as far left as possible.
    -  /// Otherwise puts them into the right-most column.
    -  /// \code
    -  ///   true:
    -  ///   #define A   \
    -  ///     int aaaa; \
    -  ///     int b;    \
    -  ///     int dddddddddd;
    -  ///
    -  ///   false:
    -  ///   #define A                                                                      \
    -  ///     int aaaa;                                                                    \
    -  ///     int b;                                                                       \
    -  ///     int dddddddddd;
    -  /// \endcode
    -  bool AlignEscapedNewlinesLeft;
    +  /// \brief Different styles for aligning escaped newlines.
    +  enum EscapedNewlineAlignmentStyle {
    +    /// \brief Don't align escaped newlines.
    +    /// \code
    +    ///   #define A \
    +    ///     int aaaa; \
    +    ///     int b; \
    +    ///     int dddddddddd;
    +    /// \endcode
    +    ENAS_DontAlign,
    +    /// \brief Align escaped newlines as far left as possible.
    +    /// \code
    +    ///   true:
    +    ///   #define A   \
    +    ///     int aaaa; \
    +    ///     int b;    \
    +    ///     int dddddddddd;
    +    ///
    +    ///   false:
    +    /// \endcode
    +    ENAS_Left,
    +    /// \brief Align escaped newlines in the right-most column.
    +    /// \code
    +    ///   #define A                                                                      \
    +    ///     int aaaa;                                                                    \
    +    ///     int b;                                                                       \
    +    ///     int dddddddddd;
    +    /// \endcode
    +    ENAS_Right,
    +  };
    +
    +  /// \brief Options for aligning backslashes in escaped newlines.
    +  EscapedNewlineAlignmentStyle AlignEscapedNewlines;
     
       /// \brief If ``true``, horizontally align operands of binary and ternary
       /// expressions.
    @@ -1347,7 +1364,7 @@ struct FormatStyle {
                AlignAfterOpenBracket == R.AlignAfterOpenBracket &&
                AlignConsecutiveAssignments == R.AlignConsecutiveAssignments &&
                AlignConsecutiveDeclarations == R.AlignConsecutiveDeclarations &&
    -           AlignEscapedNewlinesLeft == R.AlignEscapedNewlinesLeft &&
    +           AlignEscapedNewlines == R.AlignEscapedNewlines &&
                AlignOperands == R.AlignOperands &&
                AlignTrailingComments == R.AlignTrailingComments &&
                AllowAllParametersOfDeclarationOnNextLine ==
    
    Modified: vendor/clang/dist/include/clang/Frontend/CodeGenOptions.def
    ==============================================================================
    --- vendor/clang/dist/include/clang/Frontend/CodeGenOptions.def	Tue May 16 19:47:00 2017	(r318369)
    +++ vendor/clang/dist/include/clang/Frontend/CodeGenOptions.def	Tue May 16 19:47:09 2017	(r318370)
    @@ -137,6 +137,8 @@ CODEGENOPT(StructPathTBAA    , 1, 0) ///
     CODEGENOPT(SaveTempLabels    , 1, 0) ///< Save temporary labels.
     CODEGENOPT(SanitizeAddressUseAfterScope , 1, 0) ///< Enable use-after-scope detection
                                                     ///< in AddressSanitizer
    +CODEGENOPT(SanitizeAddressGlobalsDeadStripping, 1, 0) ///< Enable linker dead stripping
    +                                                      ///< of globals in AddressSanitizer
     CODEGENOPT(SanitizeMemoryTrackOrigins, 2, 0) ///< Enable tracking origins in
                                                  ///< MemorySanitizer
     CODEGENOPT(SanitizeMemoryUseAfterDtor, 1, 0) ///< Enable use-after-delete detection
    
    Modified: vendor/clang/dist/include/clang/Lex/MacroInfo.h
    ==============================================================================
    --- vendor/clang/dist/include/clang/Lex/MacroInfo.h	Tue May 16 19:47:00 2017	(r318369)
    +++ vendor/clang/dist/include/clang/Lex/MacroInfo.h	Tue May 16 19:47:09 2017	(r318370)
    @@ -105,9 +105,6 @@ class MacroInfo {
       /// \brief Must warn if the macro is unused at the end of translation unit.
       bool IsWarnIfUnused : 1;
     
    -  /// \brief Whether this macro info was loaded from an AST file.
    -  bool FromASTFile : 1;
    -
       /// \brief Whether this macro was used as header guard.
       bool UsedForHeaderGuard : 1;
     
    @@ -264,34 +261,16 @@ public:
         IsDisabled = true;
       }
     
    -  /// \brief Determine whether this macro info came from an AST file (such as
    -  /// a precompiled header or module) rather than having been parsed.
    -  bool isFromASTFile() const { return FromASTFile; }
    -
       /// \brief Determine whether this macro was used for a header guard.
       bool isUsedForHeaderGuard() const { return UsedForHeaderGuard; }
     
       void setUsedForHeaderGuard(bool Val) { UsedForHeaderGuard = Val; }
     
    -  /// \brief Retrieve the global ID of the module that owns this particular
    -  /// macro info.
    -  unsigned getOwningModuleID() const {
    -    if (isFromASTFile())
    -      return *(const unsigned *)(this + 1);
    -
    -    return 0;
    -  }
    -
       void dump() const;
     
     private:
       unsigned getDefinitionLengthSlow(const SourceManager &SM) const;
     
    -  void setOwningModuleID(unsigned ID) {
    -    assert(isFromASTFile());
    -    *(unsigned *)(this + 1) = ID;
    -  }
    -
       friend class Preprocessor;
     };
     
    
    Modified: vendor/clang/dist/include/clang/Lex/Preprocessor.h
    ==============================================================================
    --- vendor/clang/dist/include/clang/Lex/Preprocessor.h	Tue May 16 19:47:00 2017	(r318369)
    +++ vendor/clang/dist/include/clang/Lex/Preprocessor.h	Tue May 16 19:47:09 2017	(r318370)
    @@ -644,14 +644,6 @@ class Preprocessor {
       /// of that list.
       MacroInfoChain *MIChainHead;
     
    -  struct DeserializedMacroInfoChain {
    -    MacroInfo MI;
    -    unsigned OwningModuleID; // MUST be immediately after the MacroInfo object
    -                     // so it can be accessed by MacroInfo::getOwningModuleID().
    -    DeserializedMacroInfoChain *Next;
    -  };
    -  DeserializedMacroInfoChain *DeserialMIChainHead;
    -
       void updateOutOfDateIdentifier(IdentifierInfo &II) const;
     
     public:
    @@ -1669,10 +1661,6 @@ public:
       /// \brief Allocate a new MacroInfo object with the provided SourceLocation.
       MacroInfo *AllocateMacroInfo(SourceLocation L);
     
    -  /// \brief Allocate a new MacroInfo object loaded from an AST file.
    -  MacroInfo *AllocateDeserializedMacroInfo(SourceLocation L,
    -                                           unsigned SubModuleID);
    -
       /// \brief Turn the specified lexer token into a fully checked and spelled
       /// filename, e.g. as an operand of \#include. 
       ///
    @@ -1764,9 +1752,6 @@ private:
       /// macro name.
       void updateModuleMacroInfo(const IdentifierInfo *II, ModuleMacroInfo &Info);
     
    -  /// \brief Allocate a new MacroInfo object.
    -  MacroInfo *AllocateMacroInfo();
    -
       DefMacroDirective *AllocateDefMacroDirective(MacroInfo *MI,
                                                    SourceLocation Loc);
       UndefMacroDirective *AllocateUndefMacroDirective(SourceLocation UndefLoc);
    
    Modified: vendor/clang/dist/include/clang/Parse/Parser.h
    ==============================================================================
    --- vendor/clang/dist/include/clang/Parse/Parser.h	Tue May 16 19:47:00 2017	(r318369)
    +++ vendor/clang/dist/include/clang/Parse/Parser.h	Tue May 16 19:47:09 2017	(r318370)
    @@ -1488,6 +1488,8 @@ private:
                 K == tok::plusplus || K == tok::minusminus);
       }
     
    +  bool diagnoseUnknownTemplateId(ExprResult TemplateName, SourceLocation Less);
    +
       ExprResult ParsePostfixExpressionSuffix(ExprResult LHS);
       ExprResult ParseUnaryExprOrTypeTraitExpression();
       ExprResult ParseBuiltinPrimaryExpression();
    @@ -2723,10 +2725,7 @@ private:
       bool ParseGreaterThanInTemplateList(SourceLocation &RAngleLoc,
                                           bool ConsumeLastToken,
                                           bool ObjCGenericList);
    -  bool ParseTemplateIdAfterTemplateName(TemplateTy Template,
    -                                        SourceLocation TemplateNameLoc,
    -                                        const CXXScopeSpec &SS,
    -                                        bool ConsumeLastToken,
    +  bool ParseTemplateIdAfterTemplateName(bool ConsumeLastToken,
                                             SourceLocation &LAngleLoc,
                                             TemplateArgList &TemplateArgs,
                                             SourceLocation &RAngleLoc);
    
    Modified: vendor/clang/dist/include/clang/Sema/Sema.h
    ==============================================================================
    --- vendor/clang/dist/include/clang/Sema/Sema.h	Tue May 16 19:47:00 2017	(r318369)
    +++ vendor/clang/dist/include/clang/Sema/Sema.h	Tue May 16 19:47:09 2017	(r318370)
    @@ -1074,6 +1074,10 @@ public:
       /// correctly named definition after the renamed definition.
       llvm::SmallPtrSet TypoCorrectedFunctionDefinitions;
     
    +  /// Stack of types that correspond to the parameter entities that are
    +  /// currently being copy-initialized. Can be empty.
    +  llvm::SmallVector CurrentParameterCopyTypes;
    +
       void ReadMethodPool(Selector Sel);
       void updateOutOfDateSelector(Selector Sel);
     
    @@ -1456,6 +1460,11 @@ private:
       /// The modules we're currently parsing.
       llvm::SmallVector ModuleScopes;
     
    +  /// Get the module whose scope we are currently within.
    +  Module *getCurrentModule() const {
    +    return ModuleScopes.empty() ? nullptr : ModuleScopes.back().Module;
    +  }
    +
       VisibleModuleSet VisibleModules;
     
       Module *CachedFakeTopLevelModule;
    @@ -1466,7 +1475,7 @@ public:
     
       /// \brief Make a merged definition of an existing hidden definition \p ND
       /// visible at the specified location.
    -  void makeMergedDefinitionVisible(NamedDecl *ND, SourceLocation Loc);
    +  void makeMergedDefinitionVisible(NamedDecl *ND);
     
       bool isModuleVisible(Module *M) { return VisibleModules.isVisible(M); }
     
    @@ -1593,7 +1602,7 @@ public:
                                    Scope *S,
                                    CXXScopeSpec *SS,
                                    ParsedType &SuggestedType,
    -                               bool AllowClassTemplates = false);
    +                               bool IsTemplateName = false);
     
       /// Attempt to behave like MSVC in situations where lookup of an unqualified
       /// type name has failed in a dependent context. In these situations, we
    @@ -1738,6 +1747,23 @@ public:
       TemplateNameKindForDiagnostics
       getTemplateNameKindForDiagnostics(TemplateName Name);
     
    +  /// Determine whether it's plausible that E was intended to be a
    +  /// template-name.
    +  bool mightBeIntendedToBeTemplateName(ExprResult E) {
    +    if (!getLangOpts().CPlusPlus || E.isInvalid())
    +      return false;
    +    if (auto *DRE = dyn_cast(E.get()))
    +      return !DRE->hasExplicitTemplateArgs();
    +    if (auto *ME = dyn_cast(E.get()))
    +      return !ME->hasExplicitTemplateArgs();
    +    // Any additional cases recognized here should also be handled by
    +    // diagnoseExprIntendedAsTemplateName.
    +    return false;
    +  }
    +  void diagnoseExprIntendedAsTemplateName(Scope *S, ExprResult TemplateName,
    +                                          SourceLocation Less,
    +                                          SourceLocation Greater);
    +
       Decl *ActOnDeclarator(Scope *S, Declarator &D);
     
       NamedDecl *HandleDeclarator(Scope *S, Declarator &D,
    @@ -2336,6 +2362,7 @@ public:
       void MergeVarDeclTypes(VarDecl *New, VarDecl *Old, bool MergeTypeWithOld);
       void MergeVarDeclExceptionSpecs(VarDecl *New, VarDecl *Old);
       bool checkVarDeclRedefinition(VarDecl *OldDefn, VarDecl *NewDefn);
    +  void notePreviousDefinition(SourceLocation Old, SourceLocation New);
       bool MergeCXXFunctionDecl(FunctionDecl *New, FunctionDecl *Old, Scope *S);
     
       // AssignmentAction - This is used by all the assignment diagnostic functions
    @@ -2726,7 +2753,8 @@ public:
       resolveAddressOfOnlyViableOverloadCandidate(Expr *E,
                                                   DeclAccessPair &FoundResult);
     
    -  bool resolveAndFixAddressOfOnlyViableOverloadCandidate(ExprResult &SrcExpr);
    +  bool resolveAndFixAddressOfOnlyViableOverloadCandidate(
    +      ExprResult &SrcExpr, bool DoFunctionPointerConversion = false);
     
       FunctionDecl *
       ResolveSingleFunctionTemplateSpecialization(OverloadExpr *ovl,
    @@ -3049,7 +3077,8 @@ public:
                               bool IncludeGlobalScope = true);
       void LookupVisibleDecls(DeclContext *Ctx, LookupNameKind Kind,
                               VisibleDeclConsumer &Consumer,
    -                          bool IncludeGlobalScope = true);
    +                          bool IncludeGlobalScope = true,
    +                          bool IncludeDependentBases = false);
     
       enum CorrectTypoKind {
         CTK_NonError,     // CorrectTypo used in a non error recovery situation.
    @@ -6084,6 +6113,7 @@ public:
                              TemplateArgumentListInfo *ExplicitTemplateArgs,
                                                LookupResult &Previous);
       bool CheckMemberSpecialization(NamedDecl *Member, LookupResult &Previous);
    +  void CompleteMemberSpecialization(NamedDecl *Member, LookupResult &Previous);
     
       DeclResult
       ActOnExplicitInstantiation(Scope *S,
    @@ -9259,6 +9289,8 @@ public:
       /// type checking binary operators (subroutines of CreateBuiltinBinOp).
       QualType InvalidOperands(SourceLocation Loc, ExprResult &LHS,
                                ExprResult &RHS);
    +  QualType InvalidLogicalVectorOperands(SourceLocation Loc, ExprResult &LHS,
    +                                 ExprResult &RHS);
       QualType CheckPointerToMemberOperands( // C++ 5.5
         ExprResult &LHS, ExprResult &RHS, ExprValueKind &VK,
         SourceLocation OpLoc, bool isIndirect);
    @@ -10008,6 +10040,7 @@ public:
                                                  MacroInfo *MacroInfo,
                                                  unsigned Argument);
       void CodeCompleteNaturalLanguage();
    +  void CodeCompleteAvailabilityPlatformName();
       void GatherGlobalCodeCompletions(CodeCompletionAllocator &Allocator,
                                        CodeCompletionTUInfo &CCTUInfo,
                       SmallVectorImpl &Results);
    
    Modified: vendor/clang/dist/include/clang/Tooling/RefactoringCallbacks.h
    ==============================================================================
    --- vendor/clang/dist/include/clang/Tooling/RefactoringCallbacks.h	Tue May 16 19:47:00 2017	(r318369)
    +++ vendor/clang/dist/include/clang/Tooling/RefactoringCallbacks.h	Tue May 16 19:47:09 2017	(r318370)
    @@ -47,6 +47,33 @@ protected:
       Replacements Replace;
     };
     
    +/// \brief Adaptor between \c ast_matchers::MatchFinder and \c
    +/// tooling::RefactoringTool.
    +///
    +/// Runs AST matchers and stores the \c tooling::Replacements in a map.
    +class ASTMatchRefactorer {
    +public:
    +  explicit ASTMatchRefactorer(
    +    std::map &FileToReplaces);
    +
    +  template 
    +  void addMatcher(const T &Matcher, RefactoringCallback *Callback) {
    +    MatchFinder.addMatcher(Matcher, Callback);
    +    Callbacks.push_back(Callback);
    +  }
    +
    +  void addDynamicMatcher(const ast_matchers::internal::DynTypedMatcher &Matcher,
    +                         RefactoringCallback *Callback);
    +
    +  std::unique_ptr newASTConsumer();
    +
    +private:
    +  friend class RefactoringASTConsumer;
    +  std::vector Callbacks;
    +  ast_matchers::MatchFinder MatchFinder;
    +  std::map &FileToReplaces;
    +};
    +
     /// \brief Replace the text of the statement bound to \c FromId with the text in
     /// \c ToText.
     class ReplaceStmtWithText : public RefactoringCallback {
    @@ -59,6 +86,29 @@ private:
       std::string ToText;
     };
     
    +/// \brief Replace the text of an AST node bound to \c FromId with the result of
    +/// evaluating the template in \c ToTemplate.
    +///
    +/// Expressions of the form ${NodeName} in \c ToTemplate will be
    +/// replaced by the text of the node bound to ${NodeName}. The string
    +/// "$$" will be replaced by "$".
    +class ReplaceNodeWithTemplate : public RefactoringCallback {
    +public:
    +  static llvm::Expected>
    +  create(StringRef FromId, StringRef ToTemplate);
    +  void run(const ast_matchers::MatchFinder::MatchResult &Result) override;
    +
    +private:
    +  struct TemplateElement {
    +    enum { Literal, Identifier } Type;
    +    std::string Value;
    +  };
    +  ReplaceNodeWithTemplate(llvm::StringRef FromId,
    +                          std::vector Template);
    +  std::string FromId;
    +  std::vector Template;
    +};
    +
     /// \brief Replace the text of the statement bound to \c FromId with the text of
     /// the statement bound to \c ToId.
     class ReplaceStmtWithStmt : public RefactoringCallback {
    
    Modified: vendor/clang/dist/lib/AST/ASTImporter.cpp
    ==============================================================================
    --- vendor/clang/dist/lib/AST/ASTImporter.cpp	Tue May 16 19:47:00 2017	(r318369)
    +++ vendor/clang/dist/lib/AST/ASTImporter.cpp	Tue May 16 19:47:09 2017	(r318370)
    @@ -1622,10 +1622,18 @@ Decl *ASTNodeImporter::VisitRecordDecl(R
     
       // We may already have a record of the same name; try to find and match it.
       RecordDecl *AdoptDecl = nullptr;
    +  RecordDecl *PrevDecl = nullptr;
       if (!DC->isFunctionOrMethod()) {
         SmallVector ConflictingDecls;
         SmallVector FoundDecls;
         DC->getRedeclContext()->localUncachedLookup(SearchName, FoundDecls);
    +
    +    if (!FoundDecls.empty()) {
    +      // We're going to have to compare D against potentially conflicting Decls, so complete it.
    +      if (D->hasExternalLexicalStorage() && !D->isCompleteDefinition())
    +        D->getASTContext().getExternalSource()->CompleteType(D);
    +    }
    +
         for (unsigned I = 0, N = FoundDecls.size(); I != N; ++I) {
           if (!FoundDecls[I]->isInIdentifierNamespace(IDNS))
             continue;
    @@ -1652,6 +1660,8 @@ Decl *ASTNodeImporter::VisitRecordDecl(R
               }
             }
     
    +        PrevDecl = FoundRecord;
    +
             if (RecordDecl *FoundDef = FoundRecord->getDefinition()) {
               if ((SearchName && !D->isCompleteDefinition())
                   || (D->isCompleteDefinition() &&
    @@ -1744,6 +1754,10 @@ Decl *ASTNodeImporter::VisitRecordDecl(R
         LexicalDC->addDeclInternal(D2);
         if (D->isAnonymousStructOrUnion())
           D2->setAnonymousStructOrUnion(true);
    +    if (PrevDecl) {
    +      // FIXME: do this for all Redeclarables, not just RecordDecls.
    +      D2->setPreviousDecl(PrevDecl);
    +    }
       }
       
       Importer.Imported(D, D2);
    
    Modified: vendor/clang/dist/lib/AST/ASTStructuralEquivalence.cpp
    ==============================================================================
    --- vendor/clang/dist/lib/AST/ASTStructuralEquivalence.cpp	Tue May 16 19:47:00 2017	(r318369)
    +++ vendor/clang/dist/lib/AST/ASTStructuralEquivalence.cpp	Tue May 16 19:47:09 2017	(r318370)
    @@ -855,6 +855,11 @@ static bool IsStructurallyEquivalent(Str
     
       if (CXXRecordDecl *D1CXX = dyn_cast(D1)) {
         if (CXXRecordDecl *D2CXX = dyn_cast(D2)) {
    +      if (D1CXX->hasExternalLexicalStorage() &&
    +          !D1CXX->isCompleteDefinition()) {
    +        D1CXX->getASTContext().getExternalSource()->CompleteType(D1CXX);
    +      }
    +
           if (D1CXX->getNumBases() != D2CXX->getNumBases()) {
             if (Context.Complain) {
               Context.Diag2(D2->getLocation(), diag::warn_odr_tag_type_inconsistent)
    
    Modified: vendor/clang/dist/lib/AST/CXXInheritance.cpp
    ==============================================================================
    --- vendor/clang/dist/lib/AST/CXXInheritance.cpp	Tue May 16 19:47:00 2017	(r318369)
    +++ vendor/clang/dist/lib/AST/CXXInheritance.cpp	Tue May 16 19:47:09 2017	(r318370)
    @@ -13,6 +13,7 @@
     #include "clang/AST/CXXInheritance.h"
     #include "clang/AST/ASTContext.h"
     #include "clang/AST/DeclCXX.h"
    +#include "clang/AST/DeclTemplate.h"
     #include "clang/AST/RecordLayout.h"
     #include "llvm/ADT/SetVector.h"
     #include 
    @@ -174,9 +175,10 @@ bool CXXRecordDecl::forallBases(ForallBa
       return AllMatches;
     }
     
    -bool CXXBasePaths::lookupInBases(
    -    ASTContext &Context, const CXXRecordDecl *Record,
    -    CXXRecordDecl::BaseMatchesCallback BaseMatches) {
    +bool CXXBasePaths::lookupInBases(ASTContext &Context,
    +                                 const CXXRecordDecl *Record,
    +                                 CXXRecordDecl::BaseMatchesCallback BaseMatches,
    +                                 bool LookupInDependent) {
       bool FoundPath = false;
     
       // The access of the path down to this record.
    @@ -194,7 +196,7 @@ bool CXXBasePaths::lookupInBases(
         //   the base class scope is not examined during unqualified name lookup 
         //   either at the point of definition of the class template or member or 
         //   during an instantiation of the class tem- plate or member.
    -    if (BaseType->isDependentType())
    +    if (!LookupInDependent && BaseType->isDependentType())
           continue;
         
         // Determine whether we need to visit this base class at all,
    @@ -262,10 +264,28 @@ bool CXXBasePaths::lookupInBases(
             return FoundPath;
           }
         } else if (VisitBase) {
    -      CXXRecordDecl *BaseRecord
    -        = cast(BaseSpec.getType()->castAs()
    -                                ->getDecl());
    -      if (lookupInBases(Context, BaseRecord, BaseMatches)) {
    +      CXXRecordDecl *BaseRecord;
    +      if (LookupInDependent) {
    +        BaseRecord = nullptr;
    +        const TemplateSpecializationType *TST =
    +            BaseSpec.getType()->getAs();
    +        if (!TST) {
    +          if (auto *RT = BaseSpec.getType()->getAs())
    +            BaseRecord = cast(RT->getDecl());
    +        } else {
    +          TemplateName TN = TST->getTemplateName();
    +          if (auto *TD =
    +                  dyn_cast_or_null(TN.getAsTemplateDecl()))
    +            BaseRecord = TD->getTemplatedDecl();
    +        }
    +        if (BaseRecord && !BaseRecord->hasDefinition())
    +          BaseRecord = nullptr;
    +      } else {
    +        BaseRecord = cast(
    +            BaseSpec.getType()->castAs()->getDecl());
    +      }
    +      if (BaseRecord &&
    +          lookupInBases(Context, BaseRecord, BaseMatches, LookupInDependent)) {
             // C++ [class.member.lookup]p2:
             //   A member name f in one sub-object B hides a member name f in
             //   a sub-object A if A is a base class sub-object of B. Any
    @@ -299,9 +319,11 @@ bool CXXBasePaths::lookupInBases(
     }
     
     bool CXXRecordDecl::lookupInBases(BaseMatchesCallback BaseMatches,
    -                                  CXXBasePaths &Paths) const {
    +                                  CXXBasePaths &Paths,
    +                                  bool LookupInDependent) const {
       // If we didn't find anything, report that.
    -  if (!Paths.lookupInBases(getASTContext(), this, BaseMatches))
    +  if (!Paths.lookupInBases(getASTContext(), this, BaseMatches,
    +                           LookupInDependent))
         return false;
     
       // If we're not recording paths or we won't ever find ambiguities,
    @@ -387,23 +409,49 @@ bool CXXRecordDecl::FindTagMember(const 
       return false;
     }
     
    -bool CXXRecordDecl::FindOrdinaryMember(const CXXBaseSpecifier *Specifier, 
    -                                       CXXBasePath &Path,
    -                                       DeclarationName Name) {
    -  RecordDecl *BaseRecord =
    -    Specifier->getType()->castAs()->getDecl();
    
    *** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
    
    From owner-svn-src-vendor@freebsd.org  Tue May 16 19:47:17 2017
    Return-Path: 
    Delivered-To: svn-src-vendor@mailman.ysv.freebsd.org
    Received: from mx1.freebsd.org (mx1.freebsd.org
     [IPv6:2001:1900:2254:206a::19:1])
     by mailman.ysv.freebsd.org (Postfix) with ESMTP id CE73FD70320;
     Tue, 16 May 2017 19:47:17 +0000 (UTC) (envelope-from dim@FreeBSD.org)
    Received: from repo.freebsd.org (repo.freebsd.org
     [IPv6:2610:1c1:1:6068::e6a:0])
     (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
     (Client did not present a certificate)
     by mx1.freebsd.org (Postfix) with ESMTPS id 86A191CD8;
     Tue, 16 May 2017 19:47:17 +0000 (UTC) (envelope-from dim@FreeBSD.org)
    Received: from repo.freebsd.org ([127.0.1.37])
     by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v4GJlGiI096993;
     Tue, 16 May 2017 19:47:16 GMT (envelope-from dim@FreeBSD.org)
    Received: (from dim@localhost)
     by repo.freebsd.org (8.15.2/8.15.2/Submit) id v4GJlGGE096992;
     Tue, 16 May 2017 19:47:16 GMT (envelope-from dim@FreeBSD.org)
    Message-Id: <201705161947.v4GJlGGE096992@repo.freebsd.org>
    X-Authentication-Warning: repo.freebsd.org: dim set sender to dim@FreeBSD.org
     using -f
    From: Dimitry Andric 
    Date: Tue, 16 May 2017 19:47:16 +0000 (UTC)
    To: src-committers@freebsd.org, svn-src-all@freebsd.org,
     svn-src-vendor@freebsd.org
    Subject: svn commit: r318371 - vendor/clang/clang-trunk-r303197
    X-SVN-Group: vendor
    MIME-Version: 1.0
    Content-Type: text/plain; charset=UTF-8
    Content-Transfer-Encoding: 8bit
    X-BeenThere: svn-src-vendor@freebsd.org
    X-Mailman-Version: 2.1.23
    Precedence: list
    List-Id: SVN commit messages for the vendor work area tree
     
    List-Unsubscribe: , 
     
    List-Archive: 
    List-Post: 
    List-Help: 
    List-Subscribe: ,
     
    X-List-Received-Date: Tue, 16 May 2017 19:47:18 -0000
    
    Author: dim
    Date: Tue May 16 19:47:16 2017
    New Revision: 318371
    URL: https://svnweb.freebsd.org/changeset/base/318371
    
    Log:
      Tag clang trunk r303197.
    
    Added:
      vendor/clang/clang-trunk-r303197/
         - copied from r318370, vendor/clang/dist/
    
    From owner-svn-src-vendor@freebsd.org  Tue May 16 19:47:25 2017
    Return-Path: 
    Delivered-To: svn-src-vendor@mailman.ysv.freebsd.org
    Received: from mx1.freebsd.org (mx1.freebsd.org
     [IPv6:2001:1900:2254:206a::19:1])
     by mailman.ysv.freebsd.org (Postfix) with ESMTP id EE8DFD70380;
     Tue, 16 May 2017 19:47:25 +0000 (UTC) (envelope-from dim@FreeBSD.org)
    Received: from repo.freebsd.org (repo.freebsd.org
     [IPv6:2610:1c1:1:6068::e6a:0])
     (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
     (Client did not present a certificate)
     by mx1.freebsd.org (Postfix) with ESMTPS id 871C01DA2;
     Tue, 16 May 2017 19:47:25 +0000 (UTC) (envelope-from dim@FreeBSD.org)
    Received: from repo.freebsd.org ([127.0.1.37])
     by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v4GJlOWu097089;
     Tue, 16 May 2017 19:47:24 GMT (envelope-from dim@FreeBSD.org)
    Received: (from dim@localhost)
     by repo.freebsd.org (8.15.2/8.15.2/Submit) id v4GJlJaB097039;
     Tue, 16 May 2017 19:47:19 GMT (envelope-from dim@FreeBSD.org)
    Message-Id: <201705161947.v4GJlJaB097039@repo.freebsd.org>
    X-Authentication-Warning: repo.freebsd.org: dim set sender to dim@FreeBSD.org
     using -f
    From: Dimitry Andric 
    Date: Tue, 16 May 2017 19:47:19 +0000 (UTC)
    To: src-committers@freebsd.org, svn-src-all@freebsd.org,
     svn-src-vendor@freebsd.org
    Subject: svn commit: r318372 - in vendor/compiler-rt/dist: . cmake
     include/xray lib/asan lib/asan/tests lib/builtins lib/builtins/arm lib/esan
     lib/lsan lib/msan lib/msan/tests lib/sanitizer_common lib/sanit...
    X-SVN-Group: vendor
    MIME-Version: 1.0
    Content-Type: text/plain; charset=UTF-8
    Content-Transfer-Encoding: 8bit
    X-BeenThere: svn-src-vendor@freebsd.org
    X-Mailman-Version: 2.1.23
    Precedence: list
    List-Id: SVN commit messages for the vendor work area tree
     
    List-Unsubscribe: , 
     
    List-Archive: 
    List-Post: 
    List-Help: 
    List-Subscribe: ,
     
    X-List-Received-Date: Tue, 16 May 2017 19:47:26 -0000
    
    Author: dim
    Date: Tue May 16 19:47:19 2017
    New Revision: 318372
    URL: https://svnweb.freebsd.org/changeset/base/318372
    
    Log:
      Vendor import of compiler-rt trunk r303197:
      https://llvm.org/svn/llvm-project/compiler-rt/trunk@303197
    
    Added:
      vendor/compiler-rt/dist/lib/scudo/scudo_allocator_combined.h   (contents, props changed)
      vendor/compiler-rt/dist/lib/scudo/scudo_crc32.h   (contents, props changed)
      vendor/compiler-rt/dist/test/asan/TestCases/Linux/sanbox_read_proc_self_maps_test.cc   (contents, props changed)
      vendor/compiler-rt/dist/test/asan/TestCases/Posix/strndup_oob_test.cc   (contents, props changed)
      vendor/compiler-rt/dist/test/msan/pr32842.c   (contents, props changed)
      vendor/compiler-rt/dist/test/msan/strndup.cc   (contents, props changed)
      vendor/compiler-rt/dist/test/xray/TestCases/Linux/custom-event-logging.cc   (contents, props changed)
    Modified:
      vendor/compiler-rt/dist/CMakeLists.txt
      vendor/compiler-rt/dist/cmake/config-ix.cmake
      vendor/compiler-rt/dist/include/xray/xray_interface.h
      vendor/compiler-rt/dist/lib/asan/asan_allocator.h
      vendor/compiler-rt/dist/lib/asan/asan_flags.cc
      vendor/compiler-rt/dist/lib/asan/tests/asan_str_test.cc
      vendor/compiler-rt/dist/lib/builtins/CMakeLists.txt
      vendor/compiler-rt/dist/lib/builtins/adddf3.c
      vendor/compiler-rt/dist/lib/builtins/addsf3.c
      vendor/compiler-rt/dist/lib/builtins/arm/aeabi_cdcmpeq_check_nan.c
      vendor/compiler-rt/dist/lib/builtins/arm/aeabi_cfcmpeq_check_nan.c
      vendor/compiler-rt/dist/lib/builtins/arm/aeabi_div0.c
      vendor/compiler-rt/dist/lib/builtins/arm/aeabi_drsub.c
      vendor/compiler-rt/dist/lib/builtins/arm/aeabi_frsub.c
      vendor/compiler-rt/dist/lib/builtins/ashldi3.c
      vendor/compiler-rt/dist/lib/builtins/ashrdi3.c
      vendor/compiler-rt/dist/lib/builtins/assembly.h
      vendor/compiler-rt/dist/lib/builtins/comparedf2.c
      vendor/compiler-rt/dist/lib/builtins/comparesf2.c
      vendor/compiler-rt/dist/lib/builtins/divdf3.c
      vendor/compiler-rt/dist/lib/builtins/divsf3.c
      vendor/compiler-rt/dist/lib/builtins/divsi3.c
      vendor/compiler-rt/dist/lib/builtins/extendhfsf2.c
      vendor/compiler-rt/dist/lib/builtins/extendsfdf2.c
      vendor/compiler-rt/dist/lib/builtins/fixdfdi.c
      vendor/compiler-rt/dist/lib/builtins/fixdfsi.c
      vendor/compiler-rt/dist/lib/builtins/fixsfdi.c
      vendor/compiler-rt/dist/lib/builtins/fixsfsi.c
      vendor/compiler-rt/dist/lib/builtins/fixunsdfdi.c
      vendor/compiler-rt/dist/lib/builtins/fixunsdfsi.c
      vendor/compiler-rt/dist/lib/builtins/fixunssfdi.c
      vendor/compiler-rt/dist/lib/builtins/fixunssfsi.c
      vendor/compiler-rt/dist/lib/builtins/floatdidf.c
      vendor/compiler-rt/dist/lib/builtins/floatdisf.c
      vendor/compiler-rt/dist/lib/builtins/floatsidf.c
      vendor/compiler-rt/dist/lib/builtins/floatsisf.c
      vendor/compiler-rt/dist/lib/builtins/floatundidf.c
      vendor/compiler-rt/dist/lib/builtins/floatundisf.c
      vendor/compiler-rt/dist/lib/builtins/floatunsidf.c
      vendor/compiler-rt/dist/lib/builtins/floatunsisf.c
      vendor/compiler-rt/dist/lib/builtins/int_lib.h
      vendor/compiler-rt/dist/lib/builtins/lshrdi3.c
      vendor/compiler-rt/dist/lib/builtins/muldf3.c
      vendor/compiler-rt/dist/lib/builtins/muldi3.c
      vendor/compiler-rt/dist/lib/builtins/mulsf3.c
      vendor/compiler-rt/dist/lib/builtins/negdf2.c
      vendor/compiler-rt/dist/lib/builtins/negsf2.c
      vendor/compiler-rt/dist/lib/builtins/subdf3.c
      vendor/compiler-rt/dist/lib/builtins/subsf3.c
      vendor/compiler-rt/dist/lib/builtins/truncdfhf2.c
      vendor/compiler-rt/dist/lib/builtins/truncdfsf2.c
      vendor/compiler-rt/dist/lib/builtins/truncsfhf2.c
      vendor/compiler-rt/dist/lib/builtins/udivsi3.c
      vendor/compiler-rt/dist/lib/esan/esan_interceptors.cpp
      vendor/compiler-rt/dist/lib/lsan/lsan_allocator.h
      vendor/compiler-rt/dist/lib/lsan/lsan_common_linux.cc
      vendor/compiler-rt/dist/lib/lsan/lsan_common_mac.cc
      vendor/compiler-rt/dist/lib/msan/msan_allocator.cc
      vendor/compiler-rt/dist/lib/msan/msan_interceptors.cc
      vendor/compiler-rt/dist/lib/msan/tests/msan_test.cc
      vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_allocator_internal.h
      vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_allocator_primary32.h
      vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_common_interceptors.inc
      vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_flags.inc
      vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_platform_interceptors.h
      vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_procmaps.h
      vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_procmaps_linux.cc
      vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_procmaps_mac.cc
      vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_stoptheworld_mac.cc
      vendor/compiler-rt/dist/lib/sanitizer_common/tests/sanitizer_allocator_test.cc
      vendor/compiler-rt/dist/lib/sanitizer_common/tests/sanitizer_test_utils.h
      vendor/compiler-rt/dist/lib/scudo/scudo_allocator.cpp
      vendor/compiler-rt/dist/lib/scudo/scudo_allocator.h
      vendor/compiler-rt/dist/lib/scudo/scudo_allocator_secondary.h
      vendor/compiler-rt/dist/lib/scudo/scudo_crc32.cpp
      vendor/compiler-rt/dist/lib/scudo/scudo_utils.h
      vendor/compiler-rt/dist/lib/tsan/check_analyze.sh
      vendor/compiler-rt/dist/lib/tsan/rtl/tsan_rtl.h
      vendor/compiler-rt/dist/lib/xray/xray_AArch64.cc
      vendor/compiler-rt/dist/lib/xray/xray_arm.cc
      vendor/compiler-rt/dist/lib/xray/xray_fdr_log_records.h
      vendor/compiler-rt/dist/lib/xray/xray_fdr_logging.cc
      vendor/compiler-rt/dist/lib/xray/xray_fdr_logging_impl.h
      vendor/compiler-rt/dist/lib/xray/xray_interface.cc
      vendor/compiler-rt/dist/lib/xray/xray_interface_internal.h
      vendor/compiler-rt/dist/lib/xray/xray_mips.cc
      vendor/compiler-rt/dist/lib/xray/xray_mips64.cc
      vendor/compiler-rt/dist/lib/xray/xray_powerpc64.cc
      vendor/compiler-rt/dist/lib/xray/xray_trampoline_powerpc64_asm.S
      vendor/compiler-rt/dist/lib/xray/xray_trampoline_x86_64.S
      vendor/compiler-rt/dist/lib/xray/xray_x86_64.cc
      vendor/compiler-rt/dist/test/asan/CMakeLists.txt
      vendor/compiler-rt/dist/test/asan/lit.cfg
      vendor/compiler-rt/dist/test/dfsan/custom.cc
      vendor/compiler-rt/dist/test/lsan/TestCases/link_turned_off.cc
      vendor/compiler-rt/dist/test/lsan/TestCases/recoverable_leak_check.cc
      vendor/compiler-rt/dist/test/lsan/lit.common.cfg
      vendor/compiler-rt/dist/test/msan/chained_origin_memcpy.cc
      vendor/compiler-rt/dist/test/msan/wcsncpy.cc
      vendor/compiler-rt/dist/test/safestack/canary.c
      vendor/compiler-rt/dist/test/sanitizer_common/TestCases/Linux/getpwnam_r_invalid_user.cc
      vendor/compiler-rt/dist/test/sanitizer_common/TestCases/sanitizer_coverage_no_prune.cc
      vendor/compiler-rt/dist/test/ubsan/TestCases/Misc/missing_return.cpp
      vendor/compiler-rt/dist/test/ubsan/TestCases/TypeCheck/misaligned.cpp
      vendor/compiler-rt/dist/test/ubsan/lit.common.cfg
      vendor/compiler-rt/dist/test/xray/TestCases/Linux/coverage-sample.cc
      vendor/compiler-rt/dist/test/xray/TestCases/Linux/func-id-utils.cc
    
    Modified: vendor/compiler-rt/dist/CMakeLists.txt
    ==============================================================================
    --- vendor/compiler-rt/dist/CMakeLists.txt	Tue May 16 19:47:16 2017	(r318371)
    +++ vendor/compiler-rt/dist/CMakeLists.txt	Tue May 16 19:47:19 2017	(r318372)
    @@ -31,6 +31,9 @@ mark_as_advanced(COMPILER_RT_BUILD_SANIT
     option(COMPILER_RT_BUILD_XRAY "Build xray" ON)
     mark_as_advanced(COMPILER_RT_BUILD_XRAY)
     
    +set(COMPILER_RT_BAREMETAL_BUILD OFF CACHE BOOLEAN
    +  "Build for a bare-metal target.")
    +
     if (COMPILER_RT_STANDALONE_BUILD)
       load_llvm_config()
     
    @@ -239,14 +242,24 @@ set(COMPILER_RT_LIBCXX_PATH ${LLVM_MAIN_
     if(EXISTS ${COMPILER_RT_LIBCXX_PATH}/)
       set(COMPILER_RT_HAS_LIBCXX_SOURCES TRUE)
     else()
    -  set(COMPILER_RT_HAS_LIBCXX_SOURCES FALSE)
    +  set(COMPILER_RT_LIBCXX_PATH ${LLVM_MAIN_SRC_DIR}/../libcxx)
    +  if(EXISTS ${COMPILER_RT_LIBCXX_PATH}/)
    +    set(COMPILER_RT_HAS_LIBCXX_SOURCES TRUE)
    +  else()
    +    set(COMPILER_RT_HAS_LIBCXX_SOURCES FALSE)
    +  endif()
     endif()
     
     set(COMPILER_RT_LLD_PATH ${LLVM_MAIN_SRC_DIR}/tools/lld)
     if(EXISTS ${COMPILER_RT_LLD_PATH}/ AND LLVM_TOOL_LLD_BUILD)
       set(COMPILER_RT_HAS_LLD TRUE)
     else()
    -  set(COMPILER_RT_HAS_LLD FALSE)
    +  set(COMPILER_RT_LLD_PATH ${LLVM_MAIN_SRC_DIR}/../lld)
    +  if(EXISTS ${COMPILER_RT_LLD_PATH}/)
    +    set(COMPILER_RT_HAS_LLD TRUE)
    +  else()
    +    set(COMPILER_RT_HAS_LLD FALSE)
    +  endif()
     endif()
     pythonize_bool(COMPILER_RT_HAS_LLD)
     
    
    Modified: vendor/compiler-rt/dist/cmake/config-ix.cmake
    ==============================================================================
    --- vendor/compiler-rt/dist/cmake/config-ix.cmake	Tue May 16 19:47:16 2017	(r318371)
    +++ vendor/compiler-rt/dist/cmake/config-ix.cmake	Tue May 16 19:47:19 2017	(r318372)
    @@ -476,7 +476,7 @@ else()
     endif()
     
     if (COMPILER_RT_HAS_SANITIZER_COMMON AND LSAN_SUPPORTED_ARCH AND
    -    OS_NAME MATCHES "Linux|FreeBSD")
    +    OS_NAME MATCHES "Darwin|Linux|FreeBSD")
       set(COMPILER_RT_HAS_LSAN TRUE)
     else()
       set(COMPILER_RT_HAS_LSAN FALSE)
    
    Modified: vendor/compiler-rt/dist/include/xray/xray_interface.h
    ==============================================================================
    --- vendor/compiler-rt/dist/include/xray/xray_interface.h	Tue May 16 19:47:16 2017	(r318371)
    +++ vendor/compiler-rt/dist/include/xray/xray_interface.h	Tue May 16 19:47:19 2017	(r318372)
    @@ -1,4 +1,4 @@
    -//===-- xray_interface.h ----------------------------------------*- C++ -*-===//
    +//===- xray_interface.h -----------------------------------------*- C++ -*-===//
     //
     //                     The LLVM Compiler Infrastructure
     //
    @@ -11,11 +11,12 @@
     //
     // APIs for controlling XRay functionality explicitly.
     //===----------------------------------------------------------------------===//
    +
     #ifndef XRAY_XRAY_INTERFACE_H
     #define XRAY_XRAY_INTERFACE_H
     
    +#include 
     #include 
    -#include 
     
     extern "C" {
     
    @@ -25,6 +26,7 @@ enum XRayEntryType {
       EXIT = 1,
       TAIL = 2,
       LOG_ARGS_ENTRY = 3,
    +  CUSTOM_EVENT = 4,
     };
     
     /// Provide a function to invoke for when instrumentation points are hit. This
    @@ -64,6 +66,9 @@ extern int __xray_set_handler_arg1(void 
     /// Returns 1 on success, 0 on error.
     extern int __xray_remove_handler_arg1();
     
    +/// Provide a function to invoke when XRay encounters a custom event.
    +extern int __xray_set_customevent_handler(void (*entry)(void*, std::size_t));
    +
     enum XRayPatchingStatus {
       NOT_INITIALIZED = 0,
       SUCCESS = 1,
    @@ -96,6 +101,6 @@ extern uintptr_t __xray_function_address
     /// encounter errors (when there are no instrumented functions, etc.).
     extern size_t __xray_max_function_id();
     
    -}
    +} // end extern "C"
     
    -#endif
    +#endif // XRAY_XRAY_INTERFACE_H
    
    Modified: vendor/compiler-rt/dist/lib/asan/asan_allocator.h
    ==============================================================================
    --- vendor/compiler-rt/dist/lib/asan/asan_allocator.h	Tue May 16 19:47:16 2017	(r318371)
    +++ vendor/compiler-rt/dist/lib/asan/asan_allocator.h	Tue May 16 19:47:19 2017	(r318372)
    @@ -161,10 +161,17 @@ typedef FlatByteMap ByteMap
     typedef TwoLevelByteMap<(kNumRegions >> 12), 1 << 12> ByteMap;
     # endif
     typedef CompactSizeClassMap SizeClassMap;
    -typedef SizeClassAllocator32<0, SANITIZER_MMAP_RANGE_SIZE, 16,
    -  SizeClassMap, kRegionSizeLog,
    -  ByteMap,
    -  AsanMapUnmapCallback> PrimaryAllocator;
    +struct AP32 {
    +  static const uptr kSpaceBeg = 0;
    +  static const u64 kSpaceSize = SANITIZER_MMAP_RANGE_SIZE;
    +  static const uptr kMetadataSize = 16;
    +  typedef __asan::SizeClassMap SizeClassMap;
    +  static const uptr kRegionSizeLog = __asan::kRegionSizeLog;
    +  typedef __asan::ByteMap ByteMap;
    +  typedef AsanMapUnmapCallback MapUnmapCallback;
    +  static const uptr kFlags = 0;
    +};
    +typedef SizeClassAllocator32 PrimaryAllocator;
     #endif  // SANITIZER_CAN_USE_ALLOCATOR64
     
     static const uptr kNumberOfSizeClasses = SizeClassMap::kNumClasses;
    
    Modified: vendor/compiler-rt/dist/lib/asan/asan_flags.cc
    ==============================================================================
    --- vendor/compiler-rt/dist/lib/asan/asan_flags.cc	Tue May 16 19:47:16 2017	(r318371)
    +++ vendor/compiler-rt/dist/lib/asan/asan_flags.cc	Tue May 16 19:47:19 2017	(r318372)
    @@ -194,6 +194,10 @@ void InitializeFlags() {
         Report("WARNING: strchr* interceptors are enabled even though "
                "replace_str=0. Use intercept_strchr=0 to disable them.");
       }
    +  if (!f->replace_str && common_flags()->intercept_strndup) {
    +    Report("WARNING: strndup* interceptors are enabled even though "
    +           "replace_str=0. Use intercept_strndup=0 to disable them.");
    +  }
     }
     
     }  // namespace __asan
    
    Modified: vendor/compiler-rt/dist/lib/asan/tests/asan_str_test.cc
    ==============================================================================
    --- vendor/compiler-rt/dist/lib/asan/tests/asan_str_test.cc	Tue May 16 19:47:16 2017	(r318371)
    +++ vendor/compiler-rt/dist/lib/asan/tests/asan_str_test.cc	Tue May 16 19:47:19 2017	(r318372)
    @@ -154,6 +154,27 @@ TEST(AddressSanitizer, MAYBE_StrDupOOBTe
       free(str);
     }
     
    +#if SANITIZER_TEST_HAS_STRNDUP
    +TEST(AddressSanitizer, MAYBE_StrNDupOOBTest) {
    +  size_t size = Ident(42);
    +  char *str = MallocAndMemsetString(size);
    +  char *new_str;
    +  // Normal strndup calls.
    +  str[size - 1] = '\0';
    +  new_str = strndup(str, size - 13);
    +  free(new_str);
    +  new_str = strndup(str + size - 1, 13);
    +  free(new_str);
    +  // Argument points to not allocated memory.
    +  EXPECT_DEATH(Ident(strndup(str - 1, 13)), LeftOOBReadMessage(1));
    +  EXPECT_DEATH(Ident(strndup(str + size, 13)), RightOOBReadMessage(0));
    +  // Overwrite the terminating '\0' and hit unallocated memory.
    +  str[size - 1] = 'z';
    +  EXPECT_DEATH(Ident(strndup(str, size + 13)), RightOOBReadMessage(0));
    +  free(str);
    +}
    +#endif // SANITIZER_TEST_HAS_STRNDUP
    +
     TEST(AddressSanitizer, StrCpyOOBTest) {
       size_t to_size = Ident(30);
       size_t from_size = Ident(6);  // less than to_size
    
    Modified: vendor/compiler-rt/dist/lib/builtins/CMakeLists.txt
    ==============================================================================
    --- vendor/compiler-rt/dist/lib/builtins/CMakeLists.txt	Tue May 16 19:47:16 2017	(r318371)
    +++ vendor/compiler-rt/dist/lib/builtins/CMakeLists.txt	Tue May 16 19:47:19 2017	(r318372)
    @@ -66,7 +66,6 @@ set(GENERIC_SOURCES
       divti3.c
       divtf3.c
       divxc3.c
    -  enable_execute_stack.c
       eprintf.c
       extendsfdf2.c
       extendhfsf2.c
    @@ -191,6 +190,12 @@ option(COMPILER_RT_EXCLUDE_ATOMIC_BUILTI
       "Skip the atomic builtin (this may be needed if system headers are unavailable)"
       Off)
     
    +if(NOT COMPILER_RT_BAREMETAL_BUILD)
    +  set(GENERIC_SOURCES
    +    ${GENERIC_SOURCES}
    +    enable_execute_stack.c)
    +endif()
    +
     if(COMPILER_RT_HAS_ATOMIC_KEYWORD AND NOT COMPILER_RT_EXCLUDE_ATOMIC_BUILTIN)
       set(GENERIC_SOURCES
         ${GENERIC_SOURCES}
    @@ -478,11 +483,18 @@ else ()
     
       foreach (arch ${BUILTIN_SUPPORTED_ARCH})
         if (CAN_TARGET_${arch})
    +      # NOTE: some architectures (e.g. i386) have multiple names.  Ensure that
    +      # we catch them all.
    +      set(_arch ${arch})
    +      if("${arch}" STREQUAL "i686")
    +        set(_arch "i386|i686")
    +      endif()
    +
           # Filter out generic versions of routines that are re-implemented in
           # architecture specific manner.  This prevents multiple definitions of the
           # same symbols, making the symbol selection non-deterministic.
           foreach (_file ${${arch}_SOURCES})
    -        if (${_file} MATCHES ${arch}/*)
    +        if (${_file} MATCHES ${_arch}/*)
               get_filename_component(_name ${_file} NAME)
               string(REPLACE ".S" ".c" _cname "${_name}")
               list(REMOVE_ITEM ${arch}_SOURCES ${_cname})
    
    Modified: vendor/compiler-rt/dist/lib/builtins/adddf3.c
    ==============================================================================
    --- vendor/compiler-rt/dist/lib/builtins/adddf3.c	Tue May 16 19:47:16 2017	(r318371)
    +++ vendor/compiler-rt/dist/lib/builtins/adddf3.c	Tue May 16 19:47:19 2017	(r318372)
    @@ -15,8 +15,13 @@
     #define DOUBLE_PRECISION
     #include "fp_add_impl.inc"
     
    -ARM_EABI_FNALIAS(dadd, adddf3)
    -
     COMPILER_RT_ABI double __adddf3(double a, double b){
         return __addXf3__(a, b);
     }
    +
    +#if defined(__ARM_EABI__)
    +AEABI_RTABI double __aeabi_dadd(double a, double b) {
    +  return __adddf3(a, b);
    +}
    +#endif
    +
    
    Modified: vendor/compiler-rt/dist/lib/builtins/addsf3.c
    ==============================================================================
    --- vendor/compiler-rt/dist/lib/builtins/addsf3.c	Tue May 16 19:47:16 2017	(r318371)
    +++ vendor/compiler-rt/dist/lib/builtins/addsf3.c	Tue May 16 19:47:19 2017	(r318372)
    @@ -15,8 +15,13 @@
     #define SINGLE_PRECISION
     #include "fp_add_impl.inc"
     
    -ARM_EABI_FNALIAS(fadd, addsf3)
    -
     COMPILER_RT_ABI float __addsf3(float a, float b) {
         return __addXf3__(a, b);
     }
    +
    +#if defined(__ARM_EABI__)
    +AEABI_RTABI float __aeabi_fadd(float a, float b) {
    +  return __addsf3(a, b);
    +}
    +#endif
    +
    
    Modified: vendor/compiler-rt/dist/lib/builtins/arm/aeabi_cdcmpeq_check_nan.c
    ==============================================================================
    --- vendor/compiler-rt/dist/lib/builtins/arm/aeabi_cdcmpeq_check_nan.c	Tue May 16 19:47:16 2017	(r318371)
    +++ vendor/compiler-rt/dist/lib/builtins/arm/aeabi_cdcmpeq_check_nan.c	Tue May 16 19:47:19 2017	(r318372)
    @@ -8,9 +8,9 @@
     //===----------------------------------------------------------------------===//
     
     #include 
    +#include "../int_lib.h"
     
    -__attribute__((pcs("aapcs")))
    -__attribute__((visibility("hidden")))
    +AEABI_RTABI __attribute__((visibility("hidden")))
     int __aeabi_cdcmpeq_check_nan(double a, double b) {
         return __builtin_isnan(a) || __builtin_isnan(b);
     }
    
    Modified: vendor/compiler-rt/dist/lib/builtins/arm/aeabi_cfcmpeq_check_nan.c
    ==============================================================================
    --- vendor/compiler-rt/dist/lib/builtins/arm/aeabi_cfcmpeq_check_nan.c	Tue May 16 19:47:16 2017	(r318371)
    +++ vendor/compiler-rt/dist/lib/builtins/arm/aeabi_cfcmpeq_check_nan.c	Tue May 16 19:47:19 2017	(r318372)
    @@ -8,9 +8,9 @@
     //===----------------------------------------------------------------------===//
     
     #include 
    +#include "../int_lib.h"
     
    -__attribute__((pcs("aapcs")))
    -__attribute__((visibility("hidden")))
    +AEABI_RTABI __attribute__((visibility("hidden")))
     int __aeabi_cfcmpeq_check_nan(float a, float b) {
         return __builtin_isnan(a) || __builtin_isnan(b);
     }
    
    Modified: vendor/compiler-rt/dist/lib/builtins/arm/aeabi_div0.c
    ==============================================================================
    --- vendor/compiler-rt/dist/lib/builtins/arm/aeabi_div0.c	Tue May 16 19:47:16 2017	(r318371)
    +++ vendor/compiler-rt/dist/lib/builtins/arm/aeabi_div0.c	Tue May 16 19:47:19 2017	(r318372)
    @@ -26,16 +26,18 @@
      * line.
      */
     
    +#include "../int_lib.h"
    +
     /* provide an unused declaration to pacify pendantic compilation */
     extern unsigned char declaration;
     
     #if defined(__ARM_EABI__)
    -int __attribute__((weak)) __attribute__((visibility("hidden")))
    +AEABI_RTABI int __attribute__((weak)) __attribute__((visibility("hidden")))
     __aeabi_idiv0(int return_value) {
       return return_value;
     }
     
    -long long __attribute__((weak)) __attribute__((visibility("hidden")))
    +AEABI_RTABI long long __attribute__((weak)) __attribute__((visibility("hidden")))
     __aeabi_ldiv0(long long return_value) {
       return return_value;
     }
    
    Modified: vendor/compiler-rt/dist/lib/builtins/arm/aeabi_drsub.c
    ==============================================================================
    --- vendor/compiler-rt/dist/lib/builtins/arm/aeabi_drsub.c	Tue May 16 19:47:16 2017	(r318371)
    +++ vendor/compiler-rt/dist/lib/builtins/arm/aeabi_drsub.c	Tue May 16 19:47:19 2017	(r318372)
    @@ -10,10 +10,10 @@
     #define DOUBLE_PRECISION
     #include "../fp_lib.h"
     
    -COMPILER_RT_ABI fp_t
    +AEABI_RTABI fp_t
     __aeabi_dsub(fp_t, fp_t);
     
    -COMPILER_RT_ABI fp_t
    +AEABI_RTABI fp_t
     __aeabi_drsub(fp_t a, fp_t b) {
         return __aeabi_dsub(b, a);
     }
    
    Modified: vendor/compiler-rt/dist/lib/builtins/arm/aeabi_frsub.c
    ==============================================================================
    --- vendor/compiler-rt/dist/lib/builtins/arm/aeabi_frsub.c	Tue May 16 19:47:16 2017	(r318371)
    +++ vendor/compiler-rt/dist/lib/builtins/arm/aeabi_frsub.c	Tue May 16 19:47:19 2017	(r318372)
    @@ -10,10 +10,10 @@
     #define SINGLE_PRECISION
     #include "../fp_lib.h"
     
    -COMPILER_RT_ABI fp_t
    +AEABI_RTABI fp_t
     __aeabi_fsub(fp_t, fp_t);
     
    -COMPILER_RT_ABI fp_t
    +AEABI_RTABI fp_t
     __aeabi_frsub(fp_t a, fp_t b) {
         return __aeabi_fsub(b, a);
     }
    
    Modified: vendor/compiler-rt/dist/lib/builtins/ashldi3.c
    ==============================================================================
    --- vendor/compiler-rt/dist/lib/builtins/ashldi3.c	Tue May 16 19:47:16 2017	(r318371)
    +++ vendor/compiler-rt/dist/lib/builtins/ashldi3.c	Tue May 16 19:47:19 2017	(r318372)
    @@ -18,8 +18,6 @@
     
     /* Precondition:  0 <= b < bits_in_dword */
     
    -ARM_EABI_FNALIAS(llsl, ashldi3)
    -
     COMPILER_RT_ABI di_int
     __ashldi3(di_int a, si_int b)
     {
    @@ -41,3 +39,10 @@ __ashldi3(di_int a, si_int b)
         }
         return result.all;
     }
    +
    +#if defined(__ARM_EABI__)
    +AEABI_RTABI di_int __aeabi_llsl(di_int a, si_int b) {
    +  return __ashldi3(a, b);
    +}
    +#endif
    +
    
    Modified: vendor/compiler-rt/dist/lib/builtins/ashrdi3.c
    ==============================================================================
    --- vendor/compiler-rt/dist/lib/builtins/ashrdi3.c	Tue May 16 19:47:16 2017	(r318371)
    +++ vendor/compiler-rt/dist/lib/builtins/ashrdi3.c	Tue May 16 19:47:19 2017	(r318372)
    @@ -18,8 +18,6 @@
     
     /* Precondition:  0 <= b < bits_in_dword */
     
    -ARM_EABI_FNALIAS(lasr, ashrdi3)
    -
     COMPILER_RT_ABI di_int
     __ashrdi3(di_int a, si_int b)
     {
    @@ -42,3 +40,10 @@ __ashrdi3(di_int a, si_int b)
         }
         return result.all;
     }
    +
    +#if defined(__ARM_EABI__)
    +AEABI_RTABI di_int __aeabi_lasr(di_int a, si_int b) {
    +  return __ashrdi3(a, b);
    +}
    +#endif
    +
    
    Modified: vendor/compiler-rt/dist/lib/builtins/assembly.h
    ==============================================================================
    --- vendor/compiler-rt/dist/lib/builtins/assembly.h	Tue May 16 19:47:16 2017	(r318371)
    +++ vendor/compiler-rt/dist/lib/builtins/assembly.h	Tue May 16 19:47:19 2017	(r318372)
    @@ -44,7 +44,8 @@
     #endif
     #define CONST_SECTION .section .rodata
     
    -#if defined(__GNU__) || defined(__ANDROID__) || defined(__FreeBSD__)
    +#if defined(__GNU__) || defined(__FreeBSD__) || defined(__Fuchsia__) || \
    +    defined(__linux__)
     #define NO_EXEC_STACK_DIRECTIVE .section .note.GNU-stack,"",%progbits
     #else
     #define NO_EXEC_STACK_DIRECTIVE
    
    Modified: vendor/compiler-rt/dist/lib/builtins/comparedf2.c
    ==============================================================================
    --- vendor/compiler-rt/dist/lib/builtins/comparedf2.c	Tue May 16 19:47:16 2017	(r318371)
    +++ vendor/compiler-rt/dist/lib/builtins/comparedf2.c	Tue May 16 19:47:19 2017	(r318372)
    @@ -113,8 +113,6 @@ __gedf2(fp_t a, fp_t b) {
         }
     }
     
    -ARM_EABI_FNALIAS(dcmpun, unorddf2)
    -
     COMPILER_RT_ABI int
     __unorddf2(fp_t a, fp_t b) {
         const rep_t aAbs = toRep(a) & absMask;
    @@ -144,3 +142,9 @@ __gtdf2(fp_t a, fp_t b) {
         return __gedf2(a, b);
     }
     
    +#if defined(__ARM_EABI__)
    +AEABI_RTABI int __aeabi_dcmpun(fp_t a, fp_t b) {
    +  return __unorddf2(a, b);
    +}
    +#endif
    +
    
    Modified: vendor/compiler-rt/dist/lib/builtins/comparesf2.c
    ==============================================================================
    --- vendor/compiler-rt/dist/lib/builtins/comparesf2.c	Tue May 16 19:47:16 2017	(r318371)
    +++ vendor/compiler-rt/dist/lib/builtins/comparesf2.c	Tue May 16 19:47:19 2017	(r318372)
    @@ -113,8 +113,6 @@ __gesf2(fp_t a, fp_t b) {
         }
     }
     
    -ARM_EABI_FNALIAS(fcmpun, unordsf2)
    -
     COMPILER_RT_ABI int
     __unordsf2(fp_t a, fp_t b) {
         const rep_t aAbs = toRep(a) & absMask;
    @@ -143,3 +141,10 @@ COMPILER_RT_ABI enum GE_RESULT
     __gtsf2(fp_t a, fp_t b) {
         return __gesf2(a, b);
     }
    +
    +#if defined(__ARM_EABI__)
    +AEABI_RTABI int __aeabi_fcmpun(fp_t a, fp_t b) {
    +  return __unordsf2(a, b);
    +}
    +#endif
    +
    
    Modified: vendor/compiler-rt/dist/lib/builtins/divdf3.c
    ==============================================================================
    --- vendor/compiler-rt/dist/lib/builtins/divdf3.c	Tue May 16 19:47:16 2017	(r318371)
    +++ vendor/compiler-rt/dist/lib/builtins/divdf3.c	Tue May 16 19:47:19 2017	(r318372)
    @@ -19,8 +19,6 @@
     #define DOUBLE_PRECISION
     #include "fp_lib.h"
     
    -ARM_EABI_FNALIAS(ddiv, divdf3)
    -
     COMPILER_RT_ABI fp_t
     __divdf3(fp_t a, fp_t b) {
         
    @@ -183,3 +181,10 @@ __divdf3(fp_t a, fp_t b) {
             return result;
         }
     }
    +
    +#if defined(__ARM_EABI__)
    +AEABI_RTABI fp_t __aeabi_ddiv(fp_t a, fp_t b) {
    +  return __divdf3(a, b);
    +}
    +#endif
    +
    
    Modified: vendor/compiler-rt/dist/lib/builtins/divsf3.c
    ==============================================================================
    --- vendor/compiler-rt/dist/lib/builtins/divsf3.c	Tue May 16 19:47:16 2017	(r318371)
    +++ vendor/compiler-rt/dist/lib/builtins/divsf3.c	Tue May 16 19:47:19 2017	(r318372)
    @@ -19,8 +19,6 @@
     #define SINGLE_PRECISION
     #include "fp_lib.h"
     
    -ARM_EABI_FNALIAS(fdiv, divsf3)
    -
     COMPILER_RT_ABI fp_t
     __divsf3(fp_t a, fp_t b) {
         
    @@ -167,3 +165,10 @@ __divsf3(fp_t a, fp_t b) {
             return fromRep(absResult | quotientSign);
         }
     }
    +
    +#if defined(__ARM_EABI__)
    +AEABI_RTABI fp_t __aeabi_fdiv(fp_t a, fp_t b) {
    +  return __divsf3(a, b);
    +}
    +#endif
    +
    
    Modified: vendor/compiler-rt/dist/lib/builtins/divsi3.c
    ==============================================================================
    --- vendor/compiler-rt/dist/lib/builtins/divsi3.c	Tue May 16 19:47:16 2017	(r318371)
    +++ vendor/compiler-rt/dist/lib/builtins/divsi3.c	Tue May 16 19:47:19 2017	(r318372)
    @@ -16,8 +16,6 @@
     
     /* Returns: a / b */
     
    -ARM_EABI_FNALIAS(idiv, divsi3)
    -
     COMPILER_RT_ABI si_int
     __divsi3(si_int a, si_int b)
     {
    @@ -35,3 +33,10 @@ __divsi3(si_int a, si_int b)
          */
         return ((su_int)a/(su_int)b ^ s_a) - s_a;    /* negate if s_a == -1 */
     }
    +
    +#if defined(__ARM_EABI__)
    +AEABI_RTABI si_int __aeabi_idiv(si_int a, si_int b) {
    +  return __divsi3(a, b);
    +}
    +#endif
    +
    
    Modified: vendor/compiler-rt/dist/lib/builtins/extendhfsf2.c
    ==============================================================================
    --- vendor/compiler-rt/dist/lib/builtins/extendhfsf2.c	Tue May 16 19:47:16 2017	(r318371)
    +++ vendor/compiler-rt/dist/lib/builtins/extendhfsf2.c	Tue May 16 19:47:19 2017	(r318372)
    @@ -12,8 +12,6 @@
     #define DST_SINGLE
     #include "fp_extend_impl.inc"
     
    -ARM_EABI_FNALIAS(h2f, extendhfsf2)
    -
     // Use a forwarding definition and noinline to implement a poor man's alias,
     // as there isn't a good cross-platform way of defining one.
     COMPILER_RT_ABI NOINLINE float __extendhfsf2(uint16_t a) {
    @@ -23,3 +21,10 @@ COMPILER_RT_ABI NOINLINE float __extendh
     COMPILER_RT_ABI float __gnu_h2f_ieee(uint16_t a) {
         return __extendhfsf2(a);
     }
    +
    +#if defined(__ARM_EABI__)
    +AEABI_RTABI float __aeabi_h2f(uint16_t a) {
    +  return __extendhfsf2(a);
    +}
    +#endif
    +
    
    Modified: vendor/compiler-rt/dist/lib/builtins/extendsfdf2.c
    ==============================================================================
    --- vendor/compiler-rt/dist/lib/builtins/extendsfdf2.c	Tue May 16 19:47:16 2017	(r318371)
    +++ vendor/compiler-rt/dist/lib/builtins/extendsfdf2.c	Tue May 16 19:47:19 2017	(r318372)
    @@ -12,8 +12,13 @@
     #define DST_DOUBLE
     #include "fp_extend_impl.inc"
     
    -ARM_EABI_FNALIAS(f2d, extendsfdf2)
    -
     COMPILER_RT_ABI double __extendsfdf2(float a) {
         return __extendXfYf2__(a);
     }
    +
    +#if defined(__ARM_EABI__)
    +AEABI_RTABI double __aeabi_f2d(float a) {
    +  return __extendsfdf2(a);
    +}
    +#endif
    +
    
    Modified: vendor/compiler-rt/dist/lib/builtins/fixdfdi.c
    ==============================================================================
    --- vendor/compiler-rt/dist/lib/builtins/fixdfdi.c	Tue May 16 19:47:16 2017	(r318371)
    +++ vendor/compiler-rt/dist/lib/builtins/fixdfdi.c	Tue May 16 19:47:19 2017	(r318372)
    @@ -10,7 +10,6 @@
     
     #define DOUBLE_PRECISION
     #include "fp_lib.h"
    -ARM_EABI_FNALIAS(d2lz, fixdfdi)
     
     #ifndef __SOFT_FP__
     /* Support for systems that have hardware floating-point; can set the invalid
    @@ -44,3 +43,15 @@ __fixdfdi(fp_t a) {
     }
     
     #endif
    +
    +#if defined(__ARM_EABI__)
    +AEABI_RTABI di_int
    +#if defined(__SOFT_FP__)
    +__aeabi_d2lz(fp_t a) {
    +#else
    +__aeabi_d2lz(double a) {
    +#endif
    +  return __fixdfdi(a);
    +}
    +#endif
    +
    
    Modified: vendor/compiler-rt/dist/lib/builtins/fixdfsi.c
    ==============================================================================
    --- vendor/compiler-rt/dist/lib/builtins/fixdfsi.c	Tue May 16 19:47:16 2017	(r318371)
    +++ vendor/compiler-rt/dist/lib/builtins/fixdfsi.c	Tue May 16 19:47:19 2017	(r318372)
    @@ -14,9 +14,14 @@ typedef si_int fixint_t;
     typedef su_int fixuint_t;
     #include "fp_fixint_impl.inc"
     
    -ARM_EABI_FNALIAS(d2iz, fixdfsi)
    -
     COMPILER_RT_ABI si_int
     __fixdfsi(fp_t a) {
         return __fixint(a);
     }
    +
    +#if defined(__ARM_EABI__)
    +AEABI_RTABI si_int __aeabi_d2iz(fp_t a) {
    +  return __fixdfsi(a);
    +}
    +#endif
    +
    
    Modified: vendor/compiler-rt/dist/lib/builtins/fixsfdi.c
    ==============================================================================
    --- vendor/compiler-rt/dist/lib/builtins/fixsfdi.c	Tue May 16 19:47:16 2017	(r318371)
    +++ vendor/compiler-rt/dist/lib/builtins/fixsfdi.c	Tue May 16 19:47:19 2017	(r318372)
    @@ -11,8 +11,6 @@
     #define SINGLE_PRECISION
     #include "fp_lib.h"
     
    -ARM_EABI_FNALIAS(f2lz, fixsfdi)
    -
     #ifndef __SOFT_FP__
     /* Support for systems that have hardware floating-point; can set the invalid
      * flag as a side-effect of computation.
    @@ -45,3 +43,15 @@ __fixsfdi(fp_t a) {
     }
     
     #endif
    +
    +#if defined(__ARM_EABI__)
    +AEABI_RTABI di_int
    +#if defined(__SOFT_FP__)
    +__aeabi_f2lz(fp_t a) {
    +#else
    +__aeabi_f2lz(float a) {
    +#endif
    +  return __fixsfdi(a);
    +}
    +#endif
    +
    
    Modified: vendor/compiler-rt/dist/lib/builtins/fixsfsi.c
    ==============================================================================
    --- vendor/compiler-rt/dist/lib/builtins/fixsfsi.c	Tue May 16 19:47:16 2017	(r318371)
    +++ vendor/compiler-rt/dist/lib/builtins/fixsfsi.c	Tue May 16 19:47:19 2017	(r318372)
    @@ -14,9 +14,14 @@ typedef si_int fixint_t;
     typedef su_int fixuint_t;
     #include "fp_fixint_impl.inc"
     
    -ARM_EABI_FNALIAS(f2iz, fixsfsi)
    -
     COMPILER_RT_ABI si_int
     __fixsfsi(fp_t a) {
         return __fixint(a);
     }
    +
    +#if defined(__ARM_EABI__)
    +AEABI_RTABI si_int __aeabi_f2iz(fp_t a) {
    +  return __fixsfsi(a);
    +}
    +#endif
    +
    
    Modified: vendor/compiler-rt/dist/lib/builtins/fixunsdfdi.c
    ==============================================================================
    --- vendor/compiler-rt/dist/lib/builtins/fixunsdfdi.c	Tue May 16 19:47:16 2017	(r318371)
    +++ vendor/compiler-rt/dist/lib/builtins/fixunsdfdi.c	Tue May 16 19:47:19 2017	(r318372)
    @@ -11,8 +11,6 @@
     #define DOUBLE_PRECISION
     #include "fp_lib.h"
     
    -ARM_EABI_FNALIAS(d2ulz, fixunsdfdi)
    -
     #ifndef __SOFT_FP__
     /* Support for systems that have hardware floating-point; can set the invalid
      * flag as a side-effect of computation.
    @@ -42,3 +40,15 @@ __fixunsdfdi(fp_t a) {
     }
     
     #endif
    +
    +#if defined(__ARM_EABI__)
    +AEABI_RTABI du_int
    +#if defined(__SOFT_FP__)
    +__aeabi_d2ulz(fp_t a) {
    +#else
    +__aeabi_d2ulz(double a) {
    +#endif
    +  return __fixunsdfdi(a);
    +}
    +#endif
    +
    
    Modified: vendor/compiler-rt/dist/lib/builtins/fixunsdfsi.c
    ==============================================================================
    --- vendor/compiler-rt/dist/lib/builtins/fixunsdfsi.c	Tue May 16 19:47:16 2017	(r318371)
    +++ vendor/compiler-rt/dist/lib/builtins/fixunsdfsi.c	Tue May 16 19:47:19 2017	(r318372)
    @@ -13,9 +13,14 @@
     typedef su_int fixuint_t;
     #include "fp_fixuint_impl.inc"
     
    -ARM_EABI_FNALIAS(d2uiz, fixunsdfsi)
    -
     COMPILER_RT_ABI su_int
     __fixunsdfsi(fp_t a) {
         return __fixuint(a);
     }
    +
    +#if defined(__ARM_EABI__)
    +AEABI_RTABI su_int __aeabi_d2uiz(fp_t a) {
    +  return __fixunsdfsi(a);
    +}
    +#endif
    +
    
    Modified: vendor/compiler-rt/dist/lib/builtins/fixunssfdi.c
    ==============================================================================
    --- vendor/compiler-rt/dist/lib/builtins/fixunssfdi.c	Tue May 16 19:47:16 2017	(r318371)
    +++ vendor/compiler-rt/dist/lib/builtins/fixunssfdi.c	Tue May 16 19:47:19 2017	(r318372)
    @@ -11,8 +11,6 @@
     #define SINGLE_PRECISION
     #include "fp_lib.h"
     
    -ARM_EABI_FNALIAS(f2ulz, fixunssfdi)
    -
     #ifndef __SOFT_FP__
     /* Support for systems that have hardware floating-point; can set the invalid
      * flag as a side-effect of computation.
    @@ -43,3 +41,15 @@ __fixunssfdi(fp_t a) {
     }
     
     #endif
    +
    +#if defined(__ARM_EABI__)
    +AEABI_RTABI du_int
    +#if defined(__SOFT_FP__)
    +__aeabi_f2ulz(fp_t a) {
    +#else
    +__aeabi_f2ulz(float a) {
    +#endif
    +  return __fixunssfdi(a);
    +}
    +#endif
    +
    
    Modified: vendor/compiler-rt/dist/lib/builtins/fixunssfsi.c
    ==============================================================================
    --- vendor/compiler-rt/dist/lib/builtins/fixunssfsi.c	Tue May 16 19:47:16 2017	(r318371)
    +++ vendor/compiler-rt/dist/lib/builtins/fixunssfsi.c	Tue May 16 19:47:19 2017	(r318372)
    @@ -17,9 +17,14 @@
     typedef su_int fixuint_t;
     #include "fp_fixuint_impl.inc"
     
    -ARM_EABI_FNALIAS(f2uiz, fixunssfsi)
    -
     COMPILER_RT_ABI su_int
     __fixunssfsi(fp_t a) {
         return __fixuint(a);
     }
    +
    +#if defined(__ARM_EABI__)
    +AEABI_RTABI su_int __aeabi_f2uiz(fp_t a) {
    +  return __fixunssfsi(a);
    +}
    +#endif
    +
    
    Modified: vendor/compiler-rt/dist/lib/builtins/floatdidf.c
    ==============================================================================
    --- vendor/compiler-rt/dist/lib/builtins/floatdidf.c	Tue May 16 19:47:16 2017	(r318371)
    +++ vendor/compiler-rt/dist/lib/builtins/floatdidf.c	Tue May 16 19:47:19 2017	(r318372)
    @@ -22,8 +22,6 @@
     
     /* seee eeee eeee mmmm mmmm mmmm mmmm mmmm | mmmm mmmm mmmm mmmm mmmm mmmm mmmm mmmm */
     
    -ARM_EABI_FNALIAS(l2d, floatdidf)
    -
     #ifndef __SOFT_FP__
     /* Support for systems that have hardware floating-point; we'll set the inexact flag
      * as a side-effect of this computation.
    @@ -105,3 +103,10 @@ __floatdidf(di_int a)
         return fb.f;
     }
     #endif
    +
    +#if defined(__AEABI__)
    +AEABI_RTABI double __aeabi_l2d(di_int a) {
    +  return __floatdidf(a);
    +}
    +#endif
    +
    
    Modified: vendor/compiler-rt/dist/lib/builtins/floatdisf.c
    ==============================================================================
    --- vendor/compiler-rt/dist/lib/builtins/floatdisf.c	Tue May 16 19:47:16 2017	(r318371)
    +++ vendor/compiler-rt/dist/lib/builtins/floatdisf.c	Tue May 16 19:47:19 2017	(r318372)
    @@ -22,8 +22,6 @@
     
     #include "int_lib.h"
     
    -ARM_EABI_FNALIAS(l2f, floatdisf)
    -
     COMPILER_RT_ABI float
     __floatdisf(di_int a)
     {
    @@ -78,3 +76,10 @@ __floatdisf(di_int a)
                ((su_int)a & 0x007FFFFF);   /* mantissa */
         return fb.f;
     }
    +
    +#if defined(__ARM_EABI__)
    +AEABI_RTABI float __aeabi_l2f(di_int a) {
    +  return __floatdisf(a);
    +}
    +#endif
    +
    
    Modified: vendor/compiler-rt/dist/lib/builtins/floatsidf.c
    ==============================================================================
    --- vendor/compiler-rt/dist/lib/builtins/floatsidf.c	Tue May 16 19:47:16 2017	(r318371)
    +++ vendor/compiler-rt/dist/lib/builtins/floatsidf.c	Tue May 16 19:47:19 2017	(r318372)
    @@ -18,8 +18,6 @@
     
     #include "int_lib.h"
     
    -ARM_EABI_FNALIAS(i2d, floatsidf)
    -
     COMPILER_RT_ABI fp_t
     __floatsidf(int a) {
         
    @@ -51,3 +49,10 @@ __floatsidf(int a) {
         // Insert the sign bit and return
         return fromRep(result | sign);
     }
    +
    +#if defined(__ARM_EABI__)
    +AEABI_RTABI fp_t __aeabi_i2d(int a) {
    +  return __floatsidf(a);
    +}
    +#endif
    +
    
    Modified: vendor/compiler-rt/dist/lib/builtins/floatsisf.c
    ==============================================================================
    --- vendor/compiler-rt/dist/lib/builtins/floatsisf.c	Tue May 16 19:47:16 2017	(r318371)
    +++ vendor/compiler-rt/dist/lib/builtins/floatsisf.c	Tue May 16 19:47:19 2017	(r318372)
    @@ -18,8 +18,6 @@
     
     #include "int_lib.h"
     
    -ARM_EABI_FNALIAS(i2f, floatsisf)
    -
     COMPILER_RT_ABI fp_t
     __floatsisf(int a) {
         
    @@ -57,3 +55,10 @@ __floatsisf(int a) {
         // Insert the sign bit and return
         return fromRep(result | sign);
     }
    +
    +#if defined(__ARM_EABI__)
    +AEABI_RTABI fp_t __aeabi_i2f(int a) {
    +  return __floatsisf(a);
    +}
    +#endif
    +
    
    Modified: vendor/compiler-rt/dist/lib/builtins/floatundidf.c
    ==============================================================================
    --- vendor/compiler-rt/dist/lib/builtins/floatundidf.c	Tue May 16 19:47:16 2017	(r318371)
    +++ vendor/compiler-rt/dist/lib/builtins/floatundidf.c	Tue May 16 19:47:19 2017	(r318372)
    @@ -22,8 +22,6 @@
     
     #include "int_lib.h"
     
    -ARM_EABI_FNALIAS(ul2d, floatundidf)
    -
     #ifndef __SOFT_FP__
     /* Support for systems that have hardware floating-point; we'll set the inexact flag
      * as a side-effect of this computation.
    @@ -104,3 +102,10 @@ __floatundidf(du_int a)
         return fb.f;
     }
     #endif
    +
    +#if defined(__ARM_EABI__)
    +AEABI_RTABI double __aeabi_ul2d(du_int a) {
    +  return __floatundidf(a);
    +}
    +#endif
    +
    
    Modified: vendor/compiler-rt/dist/lib/builtins/floatundisf.c
    ==============================================================================
    --- vendor/compiler-rt/dist/lib/builtins/floatundisf.c	Tue May 16 19:47:16 2017	(r318371)
    +++ vendor/compiler-rt/dist/lib/builtins/floatundisf.c	Tue May 16 19:47:19 2017	(r318372)
    @@ -22,8 +22,6 @@
     
     #include "int_lib.h"
     
    -ARM_EABI_FNALIAS(ul2f, floatundisf)
    -
     COMPILER_RT_ABI float
     __floatundisf(du_int a)
     {
    @@ -75,3 +73,10 @@ __floatundisf(du_int a)
                ((su_int)a & 0x007FFFFF);  /* mantissa */
         return fb.f;
     }
    +
    +#if defined(__ARM_EABI__)
    +AEABI_RTABI float __aeabi_ul2f(du_int a) {
    +  return __floatundisf(a);
    +}
    +#endif
    +
    
    Modified: vendor/compiler-rt/dist/lib/builtins/floatunsidf.c
    ==============================================================================
    --- vendor/compiler-rt/dist/lib/builtins/floatunsidf.c	Tue May 16 19:47:16 2017	(r318371)
    +++ vendor/compiler-rt/dist/lib/builtins/floatunsidf.c	Tue May 16 19:47:19 2017	(r318372)
    @@ -18,8 +18,6 @@
     
     #include "int_lib.h"
     
    -ARM_EABI_FNALIAS(ui2d, floatunsidf)
    -
     COMPILER_RT_ABI fp_t
     __floatunsidf(unsigned int a) {
         
    @@ -40,3 +38,10 @@ __floatunsidf(unsigned int a) {
         result += (rep_t)(exponent + exponentBias) << significandBits;
         return fromRep(result);
     }
    +
    +#if defined(__ARM_EABI__)
    +AEABI_RTABI fp_t __aeabi_ui2d(unsigned int a) {
    +  return __floatunsidf(a);
    +}
    +#endif
    +
    
    Modified: vendor/compiler-rt/dist/lib/builtins/floatunsisf.c
    ==============================================================================
    --- vendor/compiler-rt/dist/lib/builtins/floatunsisf.c	Tue May 16 19:47:16 2017	(r318371)
    +++ vendor/compiler-rt/dist/lib/builtins/floatunsisf.c	Tue May 16 19:47:19 2017	(r318372)
    @@ -18,8 +18,6 @@
     
     #include "int_lib.h"
     
    -ARM_EABI_FNALIAS(ui2f, floatunsisf)
    -
     COMPILER_RT_ABI fp_t
     __floatunsisf(unsigned int a) {
         
    @@ -48,3 +46,10 @@ __floatunsisf(unsigned int a) {
         result += (rep_t)(exponent + exponentBias) << significandBits;
         return fromRep(result);
     }
    +
    +#if defined(__ARM_EABI__)
    +AEABI_RTABI fp_t __aeabi_ui2f(unsigned int a) {
    +  return __floatunsisf(a);
    +}
    +#endif
    +
    
    Modified: vendor/compiler-rt/dist/lib/builtins/int_lib.h
    ==============================================================================
    --- vendor/compiler-rt/dist/lib/builtins/int_lib.h	Tue May 16 19:47:16 2017	(r318371)
    +++ vendor/compiler-rt/dist/lib/builtins/int_lib.h	Tue May 16 19:47:19 2017	(r318372)
    @@ -30,18 +30,17 @@
     /* ABI macro definitions */
     
     #if __ARM_EABI__
    -# define ARM_EABI_FNALIAS(aeabi_name, name)         \
    -  void __aeabi_##aeabi_name() __attribute__((alias("__" #name)));
     # ifdef COMPILER_RT_ARMHF_TARGET
     #   define COMPILER_RT_ABI
     # else
    -#   define COMPILER_RT_ABI __attribute__((pcs("aapcs")))
    +#   define COMPILER_RT_ABI __attribute__((__pcs__("aapcs")))
     # endif
     #else
    -# define ARM_EABI_FNALIAS(aeabi_name, name)
     # define COMPILER_RT_ABI
     #endif
     
    +#define AEABI_RTABI __attribute__((__pcs__("aapcs")))
    +
     #ifdef _MSC_VER
     #define ALWAYS_INLINE __forceinline
     #define NOINLINE __declspec(noinline)
    
    Modified: vendor/compiler-rt/dist/lib/builtins/lshrdi3.c
    ==============================================================================
    --- vendor/compiler-rt/dist/lib/builtins/lshrdi3.c	Tue May 16 19:47:16 2017	(r318371)
    +++ vendor/compiler-rt/dist/lib/builtins/lshrdi3.c	Tue May 16 19:47:19 2017	(r318372)
    @@ -18,8 +18,6 @@
     
     /* Precondition:  0 <= b < bits_in_dword */
     
    -ARM_EABI_FNALIAS(llsr, lshrdi3)
    -
     COMPILER_RT_ABI di_int
     __lshrdi3(di_int a, si_int b)
     {
    @@ -41,3 +39,10 @@ __lshrdi3(di_int a, si_int b)
         }
         return result.all;
     }
    +
    +#if defined(__ARM_EABI__)
    +AEABI_RTABI di_int __aeabi_llsr(di_int a, si_int b) {
    +  return __lshrdi3(a, b);
    +}
    +#endif
    +
    
    Modified: vendor/compiler-rt/dist/lib/builtins/muldf3.c
    ==============================================================================
    --- vendor/compiler-rt/dist/lib/builtins/muldf3.c	Tue May 16 19:47:16 2017	(r318371)
    +++ vendor/compiler-rt/dist/lib/builtins/muldf3.c	Tue May 16 19:47:19 2017	(r318372)
    @@ -15,8 +15,13 @@
     #define DOUBLE_PRECISION
     #include "fp_mul_impl.inc"
     
    -ARM_EABI_FNALIAS(dmul, muldf3)
    -
     COMPILER_RT_ABI fp_t __muldf3(fp_t a, fp_t b) {
         return __mulXf3__(a, b);
     }
    +
    +#if defined(__ARM_EABI__)
    +AEABI_RTABI fp_t __aeabi_dmul(fp_t a, fp_t b) {
    +  return __muldf3(a, b);
    +}
    +#endif
    +
    
    Modified: vendor/compiler-rt/dist/lib/builtins/muldi3.c
    ==============================================================================
    --- vendor/compiler-rt/dist/lib/builtins/muldi3.c	Tue May 16 19:47:16 2017	(r318371)
    +++ vendor/compiler-rt/dist/lib/builtins/muldi3.c	Tue May 16 19:47:19 2017	(r318372)
    @@ -40,8 +40,6 @@ __muldsi3(su_int a, su_int b)
     
     /* Returns: a * b */
     
    -ARM_EABI_FNALIAS(lmul, muldi3)
    -
     COMPILER_RT_ABI di_int
     __muldi3(di_int a, di_int b)
     {
    @@ -54,3 +52,10 @@ __muldi3(di_int a, di_int b)
         r.s.high += x.s.high * y.s.low + x.s.low * y.s.high;
         return r.all;
     }
    +
    +#if defined(__ARM_EABI__)
    +AEABI_RTABI di_int __aeabi_lmul(di_int a, di_int b) {
    +  return __muldi3(a, b);
    +}
    +#endif
    +
    
    Modified: vendor/compiler-rt/dist/lib/builtins/mulsf3.c
    ==============================================================================
    --- vendor/compiler-rt/dist/lib/builtins/mulsf3.c	Tue May 16 19:47:16 2017	(r318371)
    +++ vendor/compiler-rt/dist/lib/builtins/mulsf3.c	Tue May 16 19:47:19 2017	(r318372)
    @@ -15,8 +15,13 @@
     #define SINGLE_PRECISION
     #include "fp_mul_impl.inc"
     
    -ARM_EABI_FNALIAS(fmul, mulsf3)
    -
     COMPILER_RT_ABI fp_t __mulsf3(fp_t a, fp_t b) {
         return __mulXf3__(a, b);
     }
    +
    +#if defined(__ARM_EABI__)
    +AEABI_RTABI fp_t __aeabi_fmul(fp_t a, fp_t b) {
    +  return __mulsf3(a, b);
    +}
    +#endif
    +
    
    Modified: vendor/compiler-rt/dist/lib/builtins/negdf2.c
    ==============================================================================
    --- vendor/compiler-rt/dist/lib/builtins/negdf2.c	Tue May 16 19:47:16 2017	(r318371)
    +++ vendor/compiler-rt/dist/lib/builtins/negdf2.c	Tue May 16 19:47:19 2017	(r318372)
    @@ -14,9 +14,14 @@
     #define DOUBLE_PRECISION
     #include "fp_lib.h"
     
    
    *** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
    
    From owner-svn-src-vendor@freebsd.org  Tue May 16 19:47:29 2017
    Return-Path: 
    Delivered-To: svn-src-vendor@mailman.ysv.freebsd.org
    Received: from mx1.freebsd.org (mx1.freebsd.org
     [IPv6:2001:1900:2254:206a::19:1])
     by mailman.ysv.freebsd.org (Postfix) with ESMTP id F07C3D703AC;
     Tue, 16 May 2017 19:47:29 +0000 (UTC) (envelope-from dim@FreeBSD.org)
    Received: from repo.freebsd.org (repo.freebsd.org
     [IPv6:2610:1c1:1:6068::e6a:0])
     (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
     (Client did not present a certificate)
     by mx1.freebsd.org (Postfix) with ESMTPS id A52CB1E11;
     Tue, 16 May 2017 19:47:29 +0000 (UTC) (envelope-from dim@FreeBSD.org)
    Received: from repo.freebsd.org ([127.0.1.37])
     by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v4GJlS0P097137;
     Tue, 16 May 2017 19:47:28 GMT (envelope-from dim@FreeBSD.org)
    Received: (from dim@localhost)
     by repo.freebsd.org (8.15.2/8.15.2/Submit) id v4GJlS3Y097136;
     Tue, 16 May 2017 19:47:28 GMT (envelope-from dim@FreeBSD.org)
    Message-Id: <201705161947.v4GJlS3Y097136@repo.freebsd.org>
    X-Authentication-Warning: repo.freebsd.org: dim set sender to dim@FreeBSD.org
     using -f
    From: Dimitry Andric 
    Date: Tue, 16 May 2017 19:47:28 +0000 (UTC)
    To: src-committers@freebsd.org, svn-src-all@freebsd.org,
     svn-src-vendor@freebsd.org
    Subject: svn commit: r318373 - vendor/compiler-rt/compiler-rt-trunk-r303197
    X-SVN-Group: vendor
    MIME-Version: 1.0
    Content-Type: text/plain; charset=UTF-8
    Content-Transfer-Encoding: 8bit
    X-BeenThere: svn-src-vendor@freebsd.org
    X-Mailman-Version: 2.1.23
    Precedence: list
    List-Id: SVN commit messages for the vendor work area tree
     
    List-Unsubscribe: , 
     
    List-Archive: 
    List-Post: 
    List-Help: 
    List-Subscribe: ,
     
    X-List-Received-Date: Tue, 16 May 2017 19:47:30 -0000
    
    Author: dim
    Date: Tue May 16 19:47:28 2017
    New Revision: 318373
    URL: https://svnweb.freebsd.org/changeset/base/318373
    
    Log:
      Tag compiler-rt trunk r303197.
    
    Added:
      vendor/compiler-rt/compiler-rt-trunk-r303197/
         - copied from r318372, vendor/compiler-rt/dist/
    
    From owner-svn-src-vendor@freebsd.org  Tue May 16 19:47:40 2017
    Return-Path: 
    Delivered-To: svn-src-vendor@mailman.ysv.freebsd.org
    Received: from mx1.freebsd.org (mx1.freebsd.org
     [IPv6:2001:1900:2254:206a::19:1])
     by mailman.ysv.freebsd.org (Postfix) with ESMTP id 99973D7043E;
     Tue, 16 May 2017 19:47:40 +0000 (UTC) (envelope-from dim@FreeBSD.org)
    Received: from repo.freebsd.org (repo.freebsd.org
     [IPv6:2610:1c1:1:6068::e6a:0])
     (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
     (Client did not present a certificate)
     by mx1.freebsd.org (Postfix) with ESMTPS id 51F0F1F38;
     Tue, 16 May 2017 19:47:40 +0000 (UTC) (envelope-from dim@FreeBSD.org)
    Received: from repo.freebsd.org ([127.0.1.37])
     by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v4GJld6v097261;
     Tue, 16 May 2017 19:47:39 GMT (envelope-from dim@FreeBSD.org)
    Received: (from dim@localhost)
     by repo.freebsd.org (8.15.2/8.15.2/Submit) id v4GJldQU097260;
     Tue, 16 May 2017 19:47:39 GMT (envelope-from dim@FreeBSD.org)
    Message-Id: <201705161947.v4GJldQU097260@repo.freebsd.org>
    X-Authentication-Warning: repo.freebsd.org: dim set sender to dim@FreeBSD.org
     using -f
    From: Dimitry Andric 
    Date: Tue, 16 May 2017 19:47:39 +0000 (UTC)
    To: src-committers@freebsd.org, svn-src-all@freebsd.org,
     svn-src-vendor@freebsd.org
    Subject: svn commit: r318375 - vendor/libc++/libc++-trunk-r303197
    X-SVN-Group: vendor
    MIME-Version: 1.0
    Content-Type: text/plain; charset=UTF-8
    Content-Transfer-Encoding: 8bit
    X-BeenThere: svn-src-vendor@freebsd.org
    X-Mailman-Version: 2.1.23
    Precedence: list
    List-Id: SVN commit messages for the vendor work area tree
     
    List-Unsubscribe: , 
     
    List-Archive: 
    List-Post: 
    List-Help: 
    List-Subscribe: ,
     
    X-List-Received-Date: Tue, 16 May 2017 19:47:40 -0000
    
    Author: dim
    Date: Tue May 16 19:47:39 2017
    New Revision: 318375
    URL: https://svnweb.freebsd.org/changeset/base/318375
    
    Log:
      Tag libc++ trunk r303197.
    
    Added:
      vendor/libc++/libc++-trunk-r303197/
         - copied from r318374, vendor/libc++/dist/
    
    From owner-svn-src-vendor@freebsd.org  Tue May 16 19:47:36 2017
    Return-Path: 
    Delivered-To: svn-src-vendor@mailman.ysv.freebsd.org
    Received: from mx1.freebsd.org (mx1.freebsd.org
     [IPv6:2001:1900:2254:206a::19:1])
     by mailman.ysv.freebsd.org (Postfix) with ESMTP id 9A9EBD70402;
     Tue, 16 May 2017 19:47:36 +0000 (UTC) (envelope-from dim@FreeBSD.org)
    Received: from repo.freebsd.org (repo.freebsd.org
     [IPv6:2610:1c1:1:6068::e6a:0])
     (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
     (Client did not present a certificate)
     by mx1.freebsd.org (Postfix) with ESMTPS id 2C9721EC5;
     Tue, 16 May 2017 19:47:36 +0000 (UTC) (envelope-from dim@FreeBSD.org)
    Received: from repo.freebsd.org ([127.0.1.37])
     by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v4GJlZsA097215;
     Tue, 16 May 2017 19:47:35 GMT (envelope-from dim@FreeBSD.org)
    Received: (from dim@localhost)
     by repo.freebsd.org (8.15.2/8.15.2/Submit) id v4GJlWlL097184;
     Tue, 16 May 2017 19:47:32 GMT (envelope-from dim@FreeBSD.org)
    Message-Id: <201705161947.v4GJlWlL097184@repo.freebsd.org>
    X-Authentication-Warning: repo.freebsd.org: dim set sender to dim@FreeBSD.org
     using -f
    From: Dimitry Andric 
    Date: Tue, 16 May 2017 19:47:32 +0000 (UTC)
    To: src-committers@freebsd.org, svn-src-all@freebsd.org,
     svn-src-vendor@freebsd.org
    Subject: svn commit: r318374 - in vendor/libc++/dist: . docs include
     include/experimental include/ext include/support/win32 src src/include
     src/support/runtime src/support/win32 test/libcxx/input.output/fil...
    X-SVN-Group: vendor
    MIME-Version: 1.0
    Content-Type: text/plain; charset=UTF-8
    Content-Transfer-Encoding: 8bit
    X-BeenThere: svn-src-vendor@freebsd.org
    X-Mailman-Version: 2.1.23
    Precedence: list
    List-Id: SVN commit messages for the vendor work area tree
     
    List-Unsubscribe: , 
     
    List-Archive: 
    List-Post: 
    List-Help: 
    List-Subscribe: ,
     
    X-List-Received-Date: Tue, 16 May 2017 19:47:36 -0000
    
    Author: dim
    Date: Tue May 16 19:47:31 2017
    New Revision: 318374
    URL: https://svnweb.freebsd.org/changeset/base/318374
    
    Log:
      Vendor import of libc++ trunk r303197:
      https://llvm.org/svn/llvm-project/libcxx/trunk@303197
    
    Added:
      vendor/libc++/dist/appveyor-reqs-install.cmd
      vendor/libc++/dist/include/support/win32/limits_msvc_win32.h   (contents, props changed)
      vendor/libc++/dist/test/libcxx/input.output/file.streams/c.files/no.global.filesystem.namespace/
      vendor/libc++/dist/test/libcxx/input.output/file.streams/c.files/no.global.filesystem.namespace/fopen.fail.cpp   (contents, props changed)
      vendor/libc++/dist/test/libcxx/input.output/file.streams/c.files/no.global.filesystem.namespace/rename.fail.cpp   (contents, props changed)
      vendor/libc++/dist/test/libcxx/thread/thread.condition/PR30202_notify_from_pthread_created_thread.pass.cpp   (contents, props changed)
      vendor/libc++/dist/test/libcxx/thread/thread.threads/thread.thread.this/
      vendor/libc++/dist/test/libcxx/thread/thread.threads/thread.thread.this/sleep_for.pass.cpp   (contents, props changed)
      vendor/libc++/dist/test/libcxx/utilities/function.objects/refwrap/
      vendor/libc++/dist/test/libcxx/utilities/function.objects/refwrap/binary.pass.cpp   (contents, props changed)
      vendor/libc++/dist/test/libcxx/utilities/function.objects/refwrap/unary.pass.cpp   (contents, props changed)
      vendor/libc++/dist/test/libcxx/utilities/template.bitset/includes.pass.cpp   (contents, props changed)
      vendor/libc++/dist/test/libcxx/utilities/tuple/tuple.tuple/empty_member.pass.cpp   (contents, props changed)
      vendor/libc++/dist/test/std/language.support/support.types/byteops/enum_direct_init.pass.cpp   (contents, props changed)
      vendor/libc++/dist/test/std/thread/thread.threads/thread.thread.this/sleep_for_tested_elsewhere.pass.cpp   (contents, props changed)
      vendor/libc++/dist/test/support/test.workarounds/c1xx_broken_za_ctor_check.pass.cpp   (contents, props changed)
    Deleted:
      vendor/libc++/dist/include/support/win32/limits_win32.h
      vendor/libc++/dist/include/support/win32/locale_mgmt_win32.h
      vendor/libc++/dist/include/support/win32/support.h
      vendor/libc++/dist/install-appveyor-reqs.cmd
      vendor/libc++/dist/test/std/input.output/file.streams/c.files/no.global.filesystem.namespace/fopen.fail.cpp
      vendor/libc++/dist/test/std/input.output/file.streams/c.files/no.global.filesystem.namespace/lit.local.cfg
      vendor/libc++/dist/test/std/input.output/file.streams/c.files/no.global.filesystem.namespace/rename.fail.cpp
      vendor/libc++/dist/test/std/strings/string.view/string.view.modifiers/clear.pass.cpp
      vendor/libc++/dist/test/std/thread/thread.condition/PR30202_notify_from_pthread_created_thread.pass.cpp
      vendor/libc++/dist/test/std/thread/thread.threads/thread.thread.this/sleep_for.pass.cpp
      vendor/libc++/dist/test/std/utilities/function.objects/refwrap/binary.pass.cpp
      vendor/libc++/dist/test/std/utilities/function.objects/refwrap/unary.pass.cpp
      vendor/libc++/dist/test/std/utilities/tuple/tuple.tuple/empty_member.pass.cpp
    Modified:
      vendor/libc++/dist/appveyor.yml
      vendor/libc++/dist/docs/CMakeLists.txt
      vendor/libc++/dist/docs/TestingLibcxx.rst
      vendor/libc++/dist/include/__bsd_locale_fallbacks.h
      vendor/libc++/dist/include/__config
      vendor/libc++/dist/include/__locale
      vendor/libc++/dist/include/__mutex_base
      vendor/libc++/dist/include/__threading_support
      vendor/libc++/dist/include/__undef_min_max
      vendor/libc++/dist/include/algorithm
      vendor/libc++/dist/include/ctype.h
      vendor/libc++/dist/include/experimental/numeric
      vendor/libc++/dist/include/ext/hash_map
      vendor/libc++/dist/include/ext/hash_set
      vendor/libc++/dist/include/limits
      vendor/libc++/dist/include/locale
      vendor/libc++/dist/include/memory
      vendor/libc++/dist/include/numeric
      vendor/libc++/dist/include/stdio.h
      vendor/libc++/dist/include/stdlib.h
      vendor/libc++/dist/include/string_view
      vendor/libc++/dist/include/support/win32/locale_win32.h
      vendor/libc++/dist/include/variant
      vendor/libc++/dist/include/wchar.h
      vendor/libc++/dist/src/include/atomic_support.h
      vendor/libc++/dist/src/locale.cpp
      vendor/libc++/dist/src/string.cpp
      vendor/libc++/dist/src/support/runtime/exception_pointer_msvc.ipp
      vendor/libc++/dist/src/support/win32/locale_win32.cpp
      vendor/libc++/dist/src/thread.cpp
      vendor/libc++/dist/test/std/experimental/utilities/meta/meta.type.synop/meta.unary.prop.pass.cpp
      vendor/libc++/dist/test/std/language.support/support.dynamic/new.delete/new.delete.array/delete_align_val_t_replace.pass.cpp
      vendor/libc++/dist/test/std/language.support/support.dynamic/new.delete/new.delete.array/new_align_val_t.pass.cpp
      vendor/libc++/dist/test/std/language.support/support.dynamic/new.delete/new.delete.array/new_align_val_t_nothrow.pass.cpp
      vendor/libc++/dist/test/std/language.support/support.dynamic/new.delete/new.delete.array/new_align_val_t_nothrow_replace.pass.cpp
      vendor/libc++/dist/test/std/language.support/support.dynamic/new.delete/new.delete.array/new_align_val_t_replace.pass.cpp
      vendor/libc++/dist/test/std/language.support/support.dynamic/new.delete/new.delete.single/delete_align_val_t_replace.pass.cpp
      vendor/libc++/dist/test/std/language.support/support.dynamic/new.delete/new.delete.single/new_align_val_t.pass.cpp
      vendor/libc++/dist/test/std/language.support/support.dynamic/new.delete/new.delete.single/new_align_val_t_nothrow.pass.cpp
      vendor/libc++/dist/test/std/language.support/support.dynamic/new.delete/new.delete.single/new_align_val_t_nothrow_replace.pass.cpp
      vendor/libc++/dist/test/std/language.support/support.dynamic/new.delete/new.delete.single/new_align_val_t_replace.pass.cpp
      vendor/libc++/dist/test/std/language.support/support.types/byteops/and.assign.pass.cpp
      vendor/libc++/dist/test/std/language.support/support.types/byteops/and.pass.cpp
      vendor/libc++/dist/test/std/language.support/support.types/byteops/lshift.assign.pass.cpp
      vendor/libc++/dist/test/std/language.support/support.types/byteops/lshift.fail.cpp
      vendor/libc++/dist/test/std/language.support/support.types/byteops/lshift.pass.cpp
      vendor/libc++/dist/test/std/language.support/support.types/byteops/not.pass.cpp
      vendor/libc++/dist/test/std/language.support/support.types/byteops/or.assign.pass.cpp
      vendor/libc++/dist/test/std/language.support/support.types/byteops/or.pass.cpp
      vendor/libc++/dist/test/std/language.support/support.types/byteops/rshift.assign.pass.cpp
      vendor/libc++/dist/test/std/language.support/support.types/byteops/rshift.fail.cpp
      vendor/libc++/dist/test/std/language.support/support.types/byteops/rshift.pass.cpp
      vendor/libc++/dist/test/std/language.support/support.types/byteops/to_integer.fail.cpp
      vendor/libc++/dist/test/std/language.support/support.types/byteops/to_integer.pass.cpp
      vendor/libc++/dist/test/std/language.support/support.types/byteops/xor.assign.pass.cpp
      vendor/libc++/dist/test/std/language.support/support.types/byteops/xor.pass.cpp
      vendor/libc++/dist/test/std/localization/locale.stdcvt/codecvt_utf16_out.pass.cpp
      vendor/libc++/dist/test/std/localization/locale.stdcvt/codecvt_utf8_out.pass.cpp
      vendor/libc++/dist/test/std/localization/locale.stdcvt/codecvt_utf8_utf16_in.pass.cpp
      vendor/libc++/dist/test/std/localization/locale.stdcvt/codecvt_utf8_utf16_out.pass.cpp
      vendor/libc++/dist/test/std/localization/locales/locale.convenience/conversions/conversions.string/converted.pass.cpp
      vendor/libc++/dist/test/std/localization/locales/locale.convenience/conversions/conversions.string/from_bytes.pass.cpp
      vendor/libc++/dist/test/std/localization/locales/locale.convenience/conversions/conversions.string/to_bytes.pass.cpp
      vendor/libc++/dist/test/std/numerics/numeric.ops/numeric.ops.gcd/gcd.pass.cpp
      vendor/libc++/dist/test/std/numerics/numeric.ops/numeric.ops.lcm/lcm.pass.cpp
      vendor/libc++/dist/test/std/re/re.traits/lookup_classname.pass.cpp
      vendor/libc++/dist/test/std/strings/basic.string/string.cons/T_size_size.pass.cpp
      vendor/libc++/dist/test/std/utilities/allocator.adaptor/allocator.adaptor.cnstr/allocs.pass.cpp
      vendor/libc++/dist/test/std/utilities/function.objects/func.not_fn/not_fn.pass.cpp
      vendor/libc++/dist/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/copy_move.pass.cpp
      vendor/libc++/dist/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.targ/target.pass.cpp
      vendor/libc++/dist/test/std/utilities/memory/util.smartptr/util.smartptr.enab/enable_shared_from_this.pass.cpp
      vendor/libc++/dist/test/std/utilities/meta/meta.rel/is_convertible.pass.cpp
      vendor/libc++/dist/test/std/utilities/meta/meta.unary/meta.unary.prop/is_trivially_copyable.pass.cpp
      vendor/libc++/dist/test/std/utilities/template.bitset/includes.pass.cpp
      vendor/libc++/dist/test/std/utilities/tuple/tuple.tuple/tuple.cnstr/dtor.pass.cpp
      vendor/libc++/dist/test/std/utilities/utility/pairs/pairs.pair/dtor.pass.cpp
      vendor/libc++/dist/test/std/utilities/variant/variant.visit/visit.pass.cpp
      vendor/libc++/dist/test/support/archetypes.hpp
      vendor/libc++/dist/test/support/archetypes.ipp
      vendor/libc++/dist/test/support/filesystem_dynamic_test_helper.py
      vendor/libc++/dist/test/support/filesystem_test_helper.hpp
      vendor/libc++/dist/test/support/msvc_stdlib_force_include.hpp
      vendor/libc++/dist/test/support/test_macros.h
      vendor/libc++/dist/test/support/test_workarounds.h
      vendor/libc++/dist/utils/libcxx/test/config.py
      vendor/libc++/dist/utils/libcxx/test/executor.py
      vendor/libc++/dist/utils/libcxx/test/format.py
      vendor/libc++/dist/www/cxx1z_status.html
    
    Added: vendor/libc++/dist/appveyor-reqs-install.cmd
    ==============================================================================
    --- /dev/null	00:00:00 1970	(empty, because file is newly added)
    +++ vendor/libc++/dist/appveyor-reqs-install.cmd	Tue May 16 19:47:31 2017	(r318374)
    @@ -0,0 +1,53 @@
    +@echo on
    +
    +if NOT EXIST C:\projects\deps (
    +  mkdir C:\projects\deps
    +)
    +cd C:\projects\deps
    +
    +::###########################################################################
    +:: Setup Compiler
    +::###########################################################################
    +if NOT EXIST llvm-installer.exe (
    +  appveyor DownloadFile http://llvm.org/pre-releases/win-snapshots/LLVM-5.0.0-r301646-win32.exe -FileName llvm-installer.exe
    +)
    +if "%CLANG_VERSION%"=="ToT" (
    +    START /WAIT llvm-installer.exe /S /D=C:\"Program Files\LLVM"
    +)
    +if DEFINED CLANG_VERSION  @set PATH="C:\Program Files\LLVM\bin";%PATH%
    +if DEFINED CLANG_VERSION  clang-cl -v
    +
    +if DEFINED MINGW_PATH rename "C:\Program Files\Git\usr\bin\sh.exe" "sh-ignored.exe"
    +if DEFINED MINGW_PATH @set "PATH=%PATH:C:\Program Files (x86)\Git\bin=%"
    +if DEFINED MINGW_PATH @set "PATH=%PATH%;%MINGW_PATH%"
    +if DEFINED MINGW_PATH g++ -v
    +
    +::###########################################################################
    +:: Install a recent CMake
    +::###########################################################################
    +if NOT EXIST cmake (
    +  appveyor DownloadFile https://cmake.org/files/v3.7/cmake-3.7.2-win64-x64.zip -FileName cmake.zip
    +  7z x cmake.zip -oC:\projects\deps > nul
    +  move C:\projects\deps\cmake-* C:\projects\deps\cmake
    +  rm cmake.zip
    +)
    +@set PATH=C:\projects\deps\cmake\bin;%PATH%
    +cmake --version
    +
    +::###########################################################################
    +:: Install Ninja
    +::###########################################################################
    +if NOT EXIST ninja (
    +  appveyor DownloadFile https://github.com/ninja-build/ninja/releases/download/v1.6.0/ninja-win.zip -FileName ninja.zip
    +  7z x ninja.zip -oC:\projects\deps\ninja > nul
    +  rm ninja.zip
    +)
    +@set PATH=C:\projects\deps\ninja;%PATH%
    +ninja --version
    +
    +::###########################################################################
    +:: Setup the cached copy of LLVM
    +::###########################################################################
    +git clone --depth=1 http://llvm.org/git/llvm.git
    +
    +@echo off
    
    Modified: vendor/libc++/dist/appveyor.yml
    ==============================================================================
    --- vendor/libc++/dist/appveyor.yml	Tue May 16 19:47:28 2017	(r318373)
    +++ vendor/libc++/dist/appveyor.yml	Tue May 16 19:47:31 2017	(r318374)
    @@ -11,24 +11,35 @@ configuration:
     environment:
       matrix:
         - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
    +      CMAKE_OPTIONS: -DCMAKE_C_COMPILER=clang-cl.exe -DCMAKE_CXX_COMPILER=clang-cl.exe
           CLANG_VERSION: ToT
           MSVC_SETUP_PATH: C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsall.bat
           MSVC_SETUP_ARG: x86
    +      GENERATOR: Ninja
    +      MAKE_PROGRAM: ninja
           APPVEYOR_SAVE_CACHE_ON_ERROR: true
         - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
    +      CMAKE_OPTIONS: -DCMAKE_C_COMPILER=clang-cl.exe -DCMAKE_CXX_COMPILER=clang-cl.exe
           CLANG_VERSION: 4
           MSVC_SETUP_PATH: C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat
           MSVC_SETUP_ARG: x86_amd64
    +      GENERATOR: Ninja
    +      MAKE_PROGRAM: ninja
    +      APPVEYOR_SAVE_CACHE_ON_ERROR: true
    +    - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
    +      MINGW_PATH: C:\mingw-w64\i686-6.3.0-posix-dwarf-rt_v5-rev1\mingw32\bin
    +      GENERATOR: MinGW Makefiles
    +      MAKE_PROGRAM: mingw32-make
           APPVEYOR_SAVE_CACHE_ON_ERROR: true
     
     install:
       ############################################################################
       # All external dependencies are installed in C:\projects\deps
       ############################################################################
    -  - call "%APPVEYOR_BUILD_FOLDER%\\install-appveyor-reqs.cmd"
    +  - call "%APPVEYOR_BUILD_FOLDER%\\appveyor-reqs-install.cmd"
     
     before_build:
    -  - call "%MSVC_SETUP_PATH%" %MSVC_SETUP_ARG%
    +  - if DEFINED MSVC_SETUP_PATH call "%MSVC_SETUP_PATH%" %MSVC_SETUP_ARG%
       - cd %APPVEYOR_BUILD_FOLDER%
     
     build_script:
    @@ -39,8 +50,7 @@ build_script:
       #############################################################################
       # Configuration Step
       #############################################################################
    -  - cmake -G Ninja %extra_cmake_flags%
    -    -DCMAKE_C_COMPILER=clang-cl.exe -DCMAKE_CXX_COMPILER=clang-cl.exe
    +  - cmake -G "%GENERATOR%" %CMAKE_OPTIONS%
         "-DCMAKE_BUILD_TYPE=%configuration%"
         "-DLLVM_PATH=C:\projects\deps\llvm" -DLIBCXX_ENABLE_EXPERIMENTAL_LIBRARY=OFF
         -DLLVM_LIT_ARGS="-sv --show-xfail --show-unsupported"
    @@ -49,10 +59,10 @@ build_script:
       #############################################################################
       # Build Step
       #############################################################################
    -  - ninja
    +  - "%MAKE_PROGRAM%"
     
     test_script:
    -  - ninja check-cxx
    +  - "%MAKE_PROGRAM% check-cxx"
     
     on_failure:
       - appveyor PushArtifact CMakeFiles/CMakeOutput.log
    
    Modified: vendor/libc++/dist/docs/CMakeLists.txt
    ==============================================================================
    --- vendor/libc++/dist/docs/CMakeLists.txt	Tue May 16 19:47:28 2017	(r318373)
    +++ vendor/libc++/dist/docs/CMakeLists.txt	Tue May 16 19:47:31 2017	(r318374)
    @@ -1,9 +1,9 @@
     
     if (LLVM_ENABLE_SPHINX)
    +  include(AddSphinxTarget)
       if (SPHINX_FOUND)
    -    include(AddSphinxTarget)
         if (${SPHINX_OUTPUT_HTML})
           add_sphinx_target(html libcxx)
         endif()
       endif()
    -endif()
    \ No newline at end of file
    +endif()
    
    Modified: vendor/libc++/dist/docs/TestingLibcxx.rst
    ==============================================================================
    --- vendor/libc++/dist/docs/TestingLibcxx.rst	Tue May 16 19:47:28 2017	(r318373)
    +++ vendor/libc++/dist/docs/TestingLibcxx.rst	Tue May 16 19:47:31 2017	(r318374)
    @@ -119,7 +119,7 @@ configuration. Passing the option on the
     .. option:: libcxx_site_config=
     
       Specify the site configuration to use when running the tests.  This option
    -  overrides the enviroment variable LIBCXX_SITE_CONFIG.
    +  overrides the environment variable LIBCXX_SITE_CONFIG.
     
     .. option:: cxx_headers=
     
    
    Modified: vendor/libc++/dist/include/__bsd_locale_fallbacks.h
    ==============================================================================
    --- vendor/libc++/dist/include/__bsd_locale_fallbacks.h	Tue May 16 19:47:28 2017	(r318373)
    +++ vendor/libc++/dist/include/__bsd_locale_fallbacks.h	Tue May 16 19:47:31 2017	(r318374)
    @@ -19,27 +19,24 @@
     
     _LIBCPP_BEGIN_NAMESPACE_STD
     
    -typedef _VSTD::remove_pointer::type __use_locale_struct;
    -typedef _VSTD::unique_ptr<__use_locale_struct, decltype(&uselocale)> __locale_raii;
    -
     inline _LIBCPP_ALWAYS_INLINE
     decltype(MB_CUR_MAX) __libcpp_mb_cur_max_l(locale_t __l)
     {
    -    __locale_raii __current( uselocale(__l), uselocale );
    +    __libcpp_locale_guard __current(__l);
         return MB_CUR_MAX;
     }
     
     inline _LIBCPP_ALWAYS_INLINE
     wint_t __libcpp_btowc_l(int __c, locale_t __l)
     {
    -    __locale_raii __current( uselocale(__l), uselocale );
    +    __libcpp_locale_guard __current(__l);
         return btowc(__c);
     }
     
     inline _LIBCPP_ALWAYS_INLINE
     int __libcpp_wctob_l(wint_t __c, locale_t __l)
     {
    -    __locale_raii __current( uselocale(__l), uselocale );
    +    __libcpp_locale_guard __current(__l);
         return wctob(__c);
     }
     
    @@ -47,14 +44,14 @@ inline _LIBCPP_ALWAYS_INLINE
     size_t __libcpp_wcsnrtombs_l(char *__dest, const wchar_t **__src, size_t __nwc,
                              size_t __len, mbstate_t *__ps, locale_t __l)
     {
    -    __locale_raii __current( uselocale(__l), uselocale );
    +    __libcpp_locale_guard __current(__l);
         return wcsnrtombs(__dest, __src, __nwc, __len, __ps);
     }
     
     inline _LIBCPP_ALWAYS_INLINE
     size_t __libcpp_wcrtomb_l(char *__s, wchar_t __wc, mbstate_t *__ps, locale_t __l)
     {
    -    __locale_raii __current( uselocale(__l), uselocale );
    +    __libcpp_locale_guard __current(__l);
         return wcrtomb(__s, __wc, __ps);
     }
     
    @@ -62,7 +59,7 @@ inline _LIBCPP_ALWAYS_INLINE
     size_t __libcpp_mbsnrtowcs_l(wchar_t * __dest, const char **__src, size_t __nms,
                           size_t __len, mbstate_t *__ps, locale_t __l)
     {
    -    __locale_raii __current( uselocale(__l), uselocale );
    +    __libcpp_locale_guard __current(__l);
         return mbsnrtowcs(__dest, __src, __nms, __len, __ps);
     }
     
    @@ -70,28 +67,28 @@ inline _LIBCPP_ALWAYS_INLINE
     size_t __libcpp_mbrtowc_l(wchar_t *__pwc, const char *__s, size_t __n,
                        mbstate_t *__ps, locale_t __l)
     {
    -    __locale_raii __current( uselocale(__l), uselocale );
    +    __libcpp_locale_guard __current(__l);
         return mbrtowc(__pwc, __s, __n, __ps);
     }
     
     inline _LIBCPP_ALWAYS_INLINE
     int __libcpp_mbtowc_l(wchar_t *__pwc, const char *__pmb, size_t __max, locale_t __l)
     {
    -    __locale_raii __current( uselocale(__l), uselocale );
    +    __libcpp_locale_guard __current(__l);
         return mbtowc(__pwc, __pmb, __max);
     }
     
     inline _LIBCPP_ALWAYS_INLINE
     size_t __libcpp_mbrlen_l(const char *__s, size_t __n, mbstate_t *__ps, locale_t __l)
     {
    -    __locale_raii __current( uselocale(__l), uselocale );
    +    __libcpp_locale_guard __current(__l);
         return mbrlen(__s, __n, __ps);
     }
     
     inline _LIBCPP_ALWAYS_INLINE
     lconv *__libcpp_localeconv_l(locale_t __l)
     {
    -    __locale_raii __current( uselocale(__l), uselocale );
    +    __libcpp_locale_guard __current(__l);
         return localeconv();
     }
     
    @@ -99,7 +96,7 @@ inline _LIBCPP_ALWAYS_INLINE
     size_t __libcpp_mbsrtowcs_l(wchar_t *__dest, const char **__src, size_t __len,
                          mbstate_t *__ps, locale_t __l)
     {
    -    __locale_raii __current( uselocale(__l), uselocale );
    +    __libcpp_locale_guard __current(__l);
         return mbsrtowcs(__dest, __src, __len, __ps);
     }
     
    @@ -107,7 +104,7 @@ inline
     int __libcpp_snprintf_l(char *__s, size_t __n, locale_t __l, const char *__format, ...) {
         va_list __va;
         va_start(__va, __format);
    -    __locale_raii __current( uselocale(__l), uselocale );
    +    __libcpp_locale_guard __current(__l);
         int __res = vsnprintf(__s, __n, __format, __va);
         va_end(__va);
         return __res;
    @@ -117,7 +114,7 @@ inline
     int __libcpp_asprintf_l(char **__s, locale_t __l, const char *__format, ...) {
         va_list __va;
         va_start(__va, __format);
    -    __locale_raii __current( uselocale(__l), uselocale );
    +    __libcpp_locale_guard __current(__l);
         int __res = vasprintf(__s, __format, __va);
         va_end(__va);
         return __res;
    @@ -127,7 +124,7 @@ inline
     int __libcpp_sscanf_l(const char *__s, locale_t __l, const char *__format, ...) {
         va_list __va;
         va_start(__va, __format);
    -    __locale_raii __current( uselocale(__l), uselocale );
    +    __libcpp_locale_guard __current(__l);
         int __res = vsscanf(__s, __format, __va);
         va_end(__va);
         return __res;
    
    Modified: vendor/libc++/dist/include/__config
    ==============================================================================
    --- vendor/libc++/dist/include/__config	Tue May 16 19:47:28 2017	(r318373)
    +++ vendor/libc++/dist/include/__config	Tue May 16 19:47:31 2017	(r318374)
    @@ -129,6 +129,12 @@
     
     #define __has_keyword(__x) !(__is_identifier(__x))
     
    +#ifdef __has_include
    +#define __libcpp_has_include(__x) __has_include(__x)
    +#else
    +#define __libcpp_has_include(__x) 0
    +#endif
    +
     #if defined(__clang__)
     #define _LIBCPP_COMPILER_CLANG
     # ifndef __apple_build_version__
    @@ -968,7 +974,7 @@ _LIBCPP_FUNC_VIS extern "C" void __sanit
     #  if defined(__GNUC__) && ((__GNUC__ >= 5) || (__GNUC__ == 4 && \
        (__GNUC_MINOR__ >= 3 || __GNUC_PATCHLEVEL__ >= 2))) && !defined(__GXX_RTTI)
     #    define _LIBCPP_NO_RTTI
    -#  elif defined(_LIBCPP_MSVC) && !defined(_CPPRTTI)
    +#  elif defined(_LIBCPP_COMPILER_MSVC) && !defined(_CPPRTTI)
     #    define _LIBCPP_NO_RTTI
     #  endif
     #endif
    @@ -980,6 +986,7 @@ _LIBCPP_FUNC_VIS extern "C" void __sanit
     // Thread API
     #if !defined(_LIBCPP_HAS_NO_THREADS) && \
         !defined(_LIBCPP_HAS_THREAD_API_PTHREAD) && \
    +    !defined(_LIBCPP_HAS_THREAD_API_WIN32) && \
         !defined(_LIBCPP_HAS_THREAD_API_EXTERNAL)
     # if defined(__FreeBSD__) || \
         defined(__Fuchsia__) || \
    @@ -987,7 +994,8 @@ _LIBCPP_FUNC_VIS extern "C" void __sanit
         defined(__linux__) || \
         defined(__APPLE__) || \
         defined(__CloudABI__) || \
    -    defined(__sun__)
    +    defined(__sun__) || \
    +    (defined(__MINGW32__) && __libcpp_has_include())
     #   define _LIBCPP_HAS_THREAD_API_PTHREAD
     # elif defined(_LIBCPP_WIN32API)
     #  define _LIBCPP_HAS_THREAD_API_WIN32
    
    Modified: vendor/libc++/dist/include/__locale
    ==============================================================================
    --- vendor/libc++/dist/include/__locale	Tue May 16 19:47:28 2017	(r318373)
    +++ vendor/libc++/dist/include/__locale	Tue May 16 19:47:31 2017	(r318374)
    @@ -49,6 +49,25 @@
     
     _LIBCPP_BEGIN_NAMESPACE_STD
     
    +#if !defined(_LIBCPP_LOCALE__L_EXTENSIONS) || defined(_LIBCPP_MSVCRT)
    +struct __libcpp_locale_guard {
    +  _LIBCPP_INLINE_VISIBILITY
    +  __libcpp_locale_guard(locale_t& __loc) : __old_loc_(uselocale(__loc)) {}
    +
    +  _LIBCPP_INLINE_VISIBILITY
    +  ~__libcpp_locale_guard() {
    +    if (__old_loc_)
    +      uselocale(__old_loc_);
    +  }
    +
    +  locale_t __old_loc_;
    +private:
    +  __libcpp_locale_guard(__libcpp_locale_guard const&);
    +  __libcpp_locale_guard& operator=(__libcpp_locale_guard const&);
    +};
    +#endif
    +
    +
     class _LIBCPP_TYPE_VIS locale;
     
     template 
    
    Modified: vendor/libc++/dist/include/__mutex_base
    ==============================================================================
    --- vendor/libc++/dist/include/__mutex_base	Tue May 16 19:47:28 2017	(r318373)
    +++ vendor/libc++/dist/include/__mutex_base	Tue May 16 19:47:31 2017	(r318374)
    @@ -15,6 +15,7 @@
     #include 
     #include 
     #include <__threading_support>
    +#include <__undef_min_max>
     
     #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
     #pragma GCC system_header
    
    Modified: vendor/libc++/dist/include/__threading_support
    ==============================================================================
    --- vendor/libc++/dist/include/__threading_support	Tue May 16 19:47:28 2017	(r318373)
    +++ vendor/libc++/dist/include/__threading_support	Tue May 16 19:47:31 2017	(r318374)
    @@ -30,6 +30,7 @@
     #include 
     #include 
     #include 
    +#include <__undef_min_max>
     #endif
     
     #if defined(_LIBCPP_HAS_THREAD_LIBRARY_EXTERNAL) || \
    
    Modified: vendor/libc++/dist/include/__undef_min_max
    ==============================================================================
    --- vendor/libc++/dist/include/__undef_min_max	Tue May 16 19:47:28 2017	(r318373)
    +++ vendor/libc++/dist/include/__undef_min_max	Tue May 16 19:47:31 2017	(r318374)
    @@ -10,7 +10,7 @@
     
     #ifdef min
     #if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
    -#if defined(_LIBCPP_MSVC)
    +#if defined(_LIBCPP_WARNING)
     _LIBCPP_WARNING("macro min is incompatible with C++.  Try #define NOMINMAX "
                     "before any Windows header. #undefing min")
     #else
    @@ -22,7 +22,7 @@ _LIBCPP_WARNING("macro min is incompatib
     
     #ifdef max
     #if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
    -#if defined(_LIBCPP_MSVC)
    +#if defined(_LIBCPP_WARNING)
     _LIBCPP_WARNING("macro max is incompatible with C++.  Try #define NOMINMAX "
                     "before any Windows header. #undefing max")
     #else
    
    Modified: vendor/libc++/dist/include/algorithm
    ==============================================================================
    --- vendor/libc++/dist/include/algorithm	Tue May 16 19:47:28 2017	(r318373)
    +++ vendor/libc++/dist/include/algorithm	Tue May 16 19:47:31 2017	(r318374)
    @@ -644,8 +644,8 @@ template 
     #endif
     
     #include <__undef_min_max>
    @@ -783,51 +783,132 @@ struct __debug_less
     
     // Precondition:  __x != 0
     inline _LIBCPP_INLINE_VISIBILITY
    -unsigned
    -__ctz(unsigned __x)
    -{
    +unsigned __ctz(unsigned __x) {
    +#ifndef _LIBCPP_COMPILER_MSVC
         return static_cast(__builtin_ctz(__x));
    +#else
    +  static_assert(sizeof(unsigned) == sizeof(unsigned long), "");
    +  static_assert(sizeof(unsigned long) == 4, "");
    +  unsigned long where;
    +  // Search from LSB to MSB for first set bit.
    +  // Returns zero if no set bit is found.
    +  if (_BitScanForward(&where, mask))
    +    return where;
    +  return 32;
    +#endif
     }
     
     inline _LIBCPP_INLINE_VISIBILITY
    -unsigned long
    -__ctz(unsigned long __x)
    -{
    +unsigned long __ctz(unsigned long __x) {
    +#ifndef _LIBCPP_COMPILER_MSVC
         return static_cast(__builtin_ctzl(__x));
    +#else
    +    static_assert(sizeof(unsigned long) == sizeof(unsigned), "");
    +    return __ctz(static_cast(__x));
    +#endif
     }
     
     inline _LIBCPP_INLINE_VISIBILITY
    -unsigned long long
    -__ctz(unsigned long long __x)
    -{
    +unsigned long long __ctz(unsigned long long __x) {
    +#ifndef _LIBCPP_COMPILER_MSVC
         return static_cast(__builtin_ctzll(__x));
    +#else
    +    unsigned long where;
    +// Search from LSB to MSB for first set bit.
    +// Returns zero if no set bit is found.
    +#if defined(_LIBCPP_HAS_BITSCAN64)
    +    (defined(_M_AMD64) || defined(__x86_64__))
    +  if (_BitScanForward64(&where, mask))
    +    return static_cast(where);
    +#else
    +  // Win32 doesn't have _BitScanForward64 so emulate it with two 32 bit calls.
    +  // Scan the Low Word.
    +  if (_BitScanForward(&where, static_cast(mask)))
    +    return where;
    +  // Scan the High Word.
    +  if (_BitScanForward(&where, static_cast(mask >> 32)))
    +    return where + 32; // Create a bit offset from the LSB.
    +#endif
    +  return 64;
    +#endif // _LIBCPP_COMPILER_MSVC
     }
     
     // Precondition:  __x != 0
     inline _LIBCPP_INLINE_VISIBILITY
    -unsigned
    -__clz(unsigned __x)
    -{
    +unsigned __clz(unsigned __x) {
    +#ifndef _LIBCPP_COMPILER_MSVC
         return static_cast(__builtin_clz(__x));
    +#else
    +  static_assert(sizeof(unsigned) == sizeof(unsigned long), "");
    +  static_assert(sizeof(unsigned long) == 4, "");
    +  unsigned long where;
    +  // Search from LSB to MSB for first set bit.
    +  // Returns zero if no set bit is found.
    +  if (_BitScanReverse(&where, mask))
    +    return 31 - where;
    +  return 32; // Undefined Behavior.
    +#endif
     }
     
     inline _LIBCPP_INLINE_VISIBILITY
    -unsigned long
    -__clz(unsigned long __x)
    -{
    +unsigned long __clz(unsigned long __x) {
    +#ifndef _LIBCPP_COMPILER_MSVC
         return static_cast(__builtin_clzl (__x));
    +#else
    +    static_assert(sizeof(unsigned) == sizeof(unsigned long), "");
    +    return __clz(static_cast(__x));
    +#endif
     }
     
     inline _LIBCPP_INLINE_VISIBILITY
    -unsigned long long
    -__clz(unsigned long long __x)
    -{
    +unsigned long long __clz(unsigned long long __x) {
    +#ifndef _LIBCPP_COMPILER_MSVC
         return static_cast(__builtin_clzll(__x));
    +#else
    +  unsigned long where;
    +// BitScanReverse scans from MSB to LSB for first set bit.
    +// Returns 0 if no set bit is found.
    +#if defined(_LIBCPP_HAS_BITSCAN64)
    +  if (_BitScanReverse64(&where, mask))
    +    return static_cast(63 - where);
    +#else
    +  // Scan the high 32 bits.
    +  if (_BitScanReverse(&where, static_cast(mask >> 32)))
    +    return 63 - (where + 32); // Create a bit offset from the MSB.
    +  // Scan the low 32 bits.
    +  if (_BitScanReverse(&where, static_cast(mask)))
    +    return 63 - where;
    +#endif
    +  return 64; // Undefined Behavior.
    +#endif // _LIBCPP_COMPILER_MSVC
    +}
    +
    +inline _LIBCPP_INLINE_VISIBILITY int __pop_count(unsigned __x) {
    +#ifndef _LIBCPP_COMPILER_MSVC
    +  return __builtin_popcount  (__x);
    +#else
    +  static_assert(sizeof(unsigned) == 4, "");
    +  return __popcnt(__x);
    +#endif
    +}
    +
    +inline _LIBCPP_INLINE_VISIBILITY int __pop_count(unsigned long __x) {
    +#ifndef _LIBCPP_COMPILER_MSVC
    +  return __builtin_popcountl (__x);
    +#else
    +  static_assert(sizeof(unsigned long) == 4, "");
    +  return __popcnt(__x);
    +#endif
     }
     
    -inline _LIBCPP_INLINE_VISIBILITY int __pop_count(unsigned           __x) {return __builtin_popcount  (__x);}
    -inline _LIBCPP_INLINE_VISIBILITY int __pop_count(unsigned      long __x) {return __builtin_popcountl (__x);}
    -inline _LIBCPP_INLINE_VISIBILITY int __pop_count(unsigned long long __x) {return __builtin_popcountll(__x);}
    +inline _LIBCPP_INLINE_VISIBILITY int __pop_count(unsigned long long __x) {
    +#ifndef _LIBCPP_COMPILER_MSVC
    +  return __builtin_popcountll(__x);
    +#else
    +  static_assert(sizeof(unsigned long long) == 8, "");
    +  return __popcnt64(__x);
    +#endif
    +}
     
     // all_of
     
    
    Modified: vendor/libc++/dist/include/ctype.h
    ==============================================================================
    --- vendor/libc++/dist/include/ctype.h	Tue May 16 19:47:28 2017	(r318373)
    +++ vendor/libc++/dist/include/ctype.h	Tue May 16 19:47:31 2017	(r318374)
    @@ -40,15 +40,6 @@ int toupper(int c);
     
     #ifdef __cplusplus
     
    -#if defined(_LIBCPP_MSVCRT)
    -// We support including .h headers inside 'extern "C"' contexts, so switch
    -// back to C++ linkage before including these C++ headers.
    -extern "C++" {
    -  #include "support/win32/support.h"
    -  #include "support/win32/locale_win32.h"
    -}
    -#endif // _LIBCPP_MSVCRT
    -
     #undef isalnum
     #undef isalpha
     #undef isblank
    
    Modified: vendor/libc++/dist/include/experimental/numeric
    ==============================================================================
    --- vendor/libc++/dist/include/experimental/numeric	Tue May 16 19:47:28 2017	(r318373)
    +++ vendor/libc++/dist/include/experimental/numeric	Tue May 16 19:47:31 2017	(r318374)
    @@ -66,11 +66,11 @@ struct __abs<_Result, _Source, false> {
     
     
     template
    -_LIBCPP_CONSTEXPR _LIBCPP_INLINE_VISIBILITY
    -_Tp __gcd(_Tp __m, _Tp __n)
    +_LIBCPP_CONSTEXPR _LIBCPP_HIDDEN
    +inline _Tp __gcd(_Tp __m, _Tp __n)
     {
         static_assert((!is_signed<_Tp>::value), "" );
    -    return __n == 0 ? __m : __gcd<_Tp>(__n, __m % __n);
    +    return __n == 0 ? __m : _VSTD_LFTS_V2::__gcd<_Tp>(__n, __m % __n);
     }
     
     
    @@ -84,8 +84,9 @@ gcd(_Tp __m, _Up __n)
         static_assert((!is_same::type, bool>::value), "Second argument to gcd cannot be bool" );
         using _Rp = common_type_t<_Tp,_Up>;
         using _Wp = make_unsigned_t<_Rp>;
    -    return static_cast<_Rp>(__gcd(static_cast<_Wp>(__abs<_Rp, _Tp>()(__m)),
    -                                  static_cast<_Wp>(__abs<_Rp, _Up>()(__n))));
    +    return static_cast<_Rp>(_VSTD_LFTS_V2::__gcd(
    +      static_cast<_Wp>(__abs<_Rp, _Tp>()(__m)),
    +      static_cast<_Wp>(__abs<_Rp, _Up>()(__n))));
     }
     
     template
    @@ -100,7 +101,7 @@ lcm(_Tp __m, _Up __n)
             return 0;
     
         using _Rp = common_type_t<_Tp,_Up>;
    -    _Rp __val1 = __abs<_Rp, _Tp>()(__m) / gcd(__m, __n);
    +    _Rp __val1 = __abs<_Rp, _Tp>()(__m) / _VSTD_LFTS_V2::gcd(__m, __n);
         _Rp __val2 = __abs<_Rp, _Up>()(__n);
         _LIBCPP_ASSERT((numeric_limits<_Rp>::max() / __val1 > __val2), "Overflow in lcm");
         return __val1 * __val2;
    
    Modified: vendor/libc++/dist/include/ext/hash_map
    ==============================================================================
    --- vendor/libc++/dist/include/ext/hash_map	Tue May 16 19:47:28 2017	(r318373)
    +++ vendor/libc++/dist/include/ext/hash_map	Tue May 16 19:47:31 2017	(r318374)
    @@ -207,7 +207,7 @@ template 
     
     #if __DEPRECATED
    -#if defined(_LIBCPP_MSVC)
    +#if defined(_LIBCPP_WARNING)
         _LIBCPP_WARNING("Use of the header  is deprecated.  Migrate to ")
     #else
     #   warning Use of the header  is deprecated.  Migrate to 
    
    Modified: vendor/libc++/dist/include/ext/hash_set
    ==============================================================================
    --- vendor/libc++/dist/include/ext/hash_set	Tue May 16 19:47:28 2017	(r318373)
    +++ vendor/libc++/dist/include/ext/hash_set	Tue May 16 19:47:31 2017	(r318374)
    @@ -199,7 +199,7 @@ template 
     
     #if __DEPRECATED
    -#if defined(_LIBCPP_MSVC)
    +#if defined(_LIBCPP_WARNING)
         _LIBCPP_WARNING("Use of the header  is deprecated.  Migrate to ")
     #else
     #   warning Use of the header  is deprecated.  Migrate to 
    
    Modified: vendor/libc++/dist/include/limits
    ==============================================================================
    --- vendor/libc++/dist/include/limits	Tue May 16 19:47:28 2017	(r318373)
    +++ vendor/libc++/dist/include/limits	Tue May 16 19:47:31 2017	(r318374)
    @@ -111,8 +111,8 @@ template<> class numeric_limits
     
    -#if defined(_LIBCPP_MSVCRT)
    -#include "support/win32/limits_win32.h"
    +#if defined(_LIBCPP_COMPILER_MSVC)
    +#include "support/win32/limits_msvc_win32.h"
     #endif // _LIBCPP_MSVCRT
     
     #if defined(__IBMCPP__)
    
    Modified: vendor/libc++/dist/include/locale
    ==============================================================================
    --- vendor/libc++/dist/include/locale	Tue May 16 19:47:28 2017	(r318373)
    +++ vendor/libc++/dist/include/locale	Tue May 16 19:47:31 2017	(r318374)
    @@ -233,9 +233,6 @@ _LIBCPP_BEGIN_NAMESPACE_STD
     #define __cloc_defined
     #endif
     
    -typedef _VSTD::remove_pointer::type __locale_struct;
    -typedef _VSTD::unique_ptr<__locale_struct, decltype(&freelocale)> __locale_unique_ptr;
    -
     // __scan_keyword
     // Scans [__b, __e) until a match is found in the basic_strings range
     //  [__kb, __ke) or until it can be shown that there is no match in [__kb, __ke).
    
    Modified: vendor/libc++/dist/include/memory
    ==============================================================================
    --- vendor/libc++/dist/include/memory	Tue May 16 19:47:28 2017	(r318373)
    +++ vendor/libc++/dist/include/memory	Tue May 16 19:47:31 2017	(r318374)
    @@ -996,11 +996,11 @@ struct __rebind_pointer {
     
     // allocator_traits
     
    -namespace __has_pointer_type_imp
    +struct __has_pointer_type_imp
     {
         template  static __two __test(...);
         template  static char __test(typename _Up::pointer* = 0);
    -}
    +};
     
     template 
     struct __has_pointer_type
    @@ -3924,7 +3924,10 @@ private:
     
         template 
             _LIBCPP_INLINE_VISIBILITY
    -        void
    +        typename enable_if*
    +        >::value,
    +            void>::type
             __enable_weak_this(const enable_shared_from_this<_Yp>* __e,
                                _OrigPtr* __ptr) _NOEXCEPT
             {
    @@ -3943,6 +3946,7 @@ private:
         template  friend class _LIBCPP_TEMPLATE_VIS weak_ptr;
     };
     
    +
     template
     inline
     _LIBCPP_CONSTEXPR
    
    Modified: vendor/libc++/dist/include/numeric
    ==============================================================================
    --- vendor/libc++/dist/include/numeric	Tue May 16 19:47:28 2017	(r318373)
    +++ vendor/libc++/dist/include/numeric	Tue May 16 19:47:31 2017	(r318374)
    @@ -222,11 +222,11 @@ struct __abs<_Result, _Source, false> {
     
     
     template
    -_LIBCPP_CONSTEXPR _LIBCPP_INLINE_VISIBILITY
    +_LIBCPP_CONSTEXPR _LIBCPP_HIDDEN
     _Tp __gcd(_Tp __m, _Tp __n)
     {
         static_assert((!is_signed<_Tp>::value), "");
    -    return __n == 0 ? __m : __gcd<_Tp>(__n, __m % __n);
    +    return __n == 0 ? __m : _VSTD::__gcd<_Tp>(__n, __m % __n);
     }
     
     
    @@ -240,8 +240,9 @@ gcd(_Tp __m, _Up __n)
         static_assert((!is_same::type, bool>::value), "Second argument to gcd cannot be bool" );
         using _Rp = common_type_t<_Tp,_Up>;
         using _Wp = make_unsigned_t<_Rp>;
    -    return static_cast<_Rp>(__gcd(static_cast<_Wp>(__abs<_Rp, _Tp>()(__m)),
    -                                  static_cast<_Wp>(__abs<_Rp, _Up>()(__n))));
    +    return static_cast<_Rp>(_VSTD::__gcd(
    +        static_cast<_Wp>(__abs<_Rp, _Tp>()(__m)),
    +        static_cast<_Wp>(__abs<_Rp, _Up>()(__n))));
     }
     
     template
    @@ -256,7 +257,7 @@ lcm(_Tp __m, _Up __n)
             return 0;
     
         using _Rp = common_type_t<_Tp,_Up>;
    -    _Rp __val1 = __abs<_Rp, _Tp>()(__m) / gcd(__m, __n);
    +    _Rp __val1 = __abs<_Rp, _Tp>()(__m) / _VSTD::gcd(__m, __n);
         _Rp __val2 = __abs<_Rp, _Up>()(__n);
         _LIBCPP_ASSERT((numeric_limits<_Rp>::max() / __val1 > __val2), "Overflow in lcm");
         return __val1 * __val2;
    
    Modified: vendor/libc++/dist/include/stdio.h
    ==============================================================================
    --- vendor/libc++/dist/include/stdio.h	Tue May 16 19:47:28 2017	(r318373)
    +++ vendor/libc++/dist/include/stdio.h	Tue May 16 19:47:31 2017	(r318374)
    @@ -111,8 +111,9 @@ void perror(const char* s);
     
     // snprintf
     #if defined(_LIBCPP_MSVCRT)
    -extern "C++" {
    -#include "support/win32/support.h"
    +extern "C" {
    +int vasprintf(char **sptr, const char *__restrict fmt, va_list ap);
    +int asprintf(char **sptr, const char *__restrict fmt, ...);
     }
     #endif
     
    
    Modified: vendor/libc++/dist/include/stdlib.h
    ==============================================================================
    --- vendor/libc++/dist/include/stdlib.h	Tue May 16 19:47:28 2017	(r318373)
    +++ vendor/libc++/dist/include/stdlib.h	Tue May 16 19:47:31 2017	(r318374)
    @@ -97,10 +97,6 @@ void *aligned_alloc(size_t alignment, si
     
     extern "C++" {
     
    -#ifdef _LIBCPP_MSVCRT
    -#include "support/win32/locale_win32.h"
    -#endif // _LIBCPP_MSVCRT
    -
     #undef abs
     #undef div
     #undef labs
    
    Modified: vendor/libc++/dist/include/string_view
    ==============================================================================
    --- vendor/libc++/dist/include/string_view	Tue May 16 19:47:28 2017	(r318373)
    +++ vendor/libc++/dist/include/string_view	Tue May 16 19:47:31 2017	(r318374)
    @@ -103,7 +103,6 @@ namespace std {
           constexpr const_pointer data() const noexcept;
     
           // 7.7, basic_string_view modifiers
    -      constexpr void clear() noexcept;
           constexpr void remove_prefix(size_type n);
           constexpr void remove_suffix(size_type n);
           constexpr void swap(basic_string_view& s) noexcept;
    @@ -293,13 +292,6 @@ public:
     
     	// [string.view.modifiers], modifiers:
     	_LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
    -	void clear() _NOEXCEPT
    -	{
    -		__data = nullptr;
    -		__size = 0;
    -	}
    -
    -	_LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
     	void remove_prefix(size_type __n) _NOEXCEPT
     	{
     		_LIBCPP_ASSERT(__n <= size(), "remove_prefix() can't remove more than size()");
    
    Added: vendor/libc++/dist/include/support/win32/limits_msvc_win32.h
    ==============================================================================
    --- /dev/null	00:00:00 1970	(empty, because file is newly added)
    +++ vendor/libc++/dist/include/support/win32/limits_msvc_win32.h	Tue May 16 19:47:31 2017	(r318374)
    @@ -0,0 +1,72 @@
    +// -*- C++ -*-
    +//===------------------ support/win32/limits_msvc_win32.h -----------------===//
    +//
    +//                     The LLVM Compiler Infrastructure
    +//
    +// This file is dual licensed under the MIT and the University of Illinois Open
    +// Source Licenses. See LICENSE.TXT for details.
    +//
    +//===----------------------------------------------------------------------===//
    +
    +#ifndef _LIBCPP_SUPPORT_WIN32_LIMITS_MSVC_WIN32_H
    +#define _LIBCPP_SUPPORT_WIN32_LIMITS_MSVC_WIN32_H
    +
    +#if !defined(_LIBCPP_MSVCRT)
    +#error "This header complements the Microsoft C Runtime library, and should not be included otherwise."
    +#endif
    +#if defined(__clang__)
    +#error "This header should only be included when using Microsofts C1XX frontend"
    +#endif
    +
    +#include  // CHAR_BIT
    +#include  // limit constants
    +#include  // HUGE_VAL
    +#include  // internal MSVC header providing the needed functionality
    +
    +#define __CHAR_BIT__       CHAR_BIT
    +
    +#define __FLT_MANT_DIG__   FLT_MANT_DIG
    +#define __FLT_DIG__        FLT_DIG
    +#define __FLT_RADIX__      FLT_RADIX
    +#define __FLT_MIN_EXP__    FLT_MIN_EXP
    +#define __FLT_MIN_10_EXP__ FLT_MIN_10_EXP
    +#define __FLT_MAX_EXP__    FLT_MAX_EXP
    +#define __FLT_MAX_10_EXP__ FLT_MAX_10_EXP
    +#define __FLT_MIN__        FLT_MIN
    +#define __FLT_MAX__        FLT_MAX
    +#define __FLT_EPSILON__    FLT_EPSILON
    +// predefined by MinGW GCC
    +#define __FLT_DENORM_MIN__ 1.40129846432481707092e-45F
    +
    +#define __DBL_MANT_DIG__   DBL_MANT_DIG
    +#define __DBL_DIG__        DBL_DIG
    +#define __DBL_RADIX__      DBL_RADIX
    +#define __DBL_MIN_EXP__    DBL_MIN_EXP
    +#define __DBL_MIN_10_EXP__ DBL_MIN_10_EXP
    +#define __DBL_MAX_EXP__    DBL_MAX_EXP
    +#define __DBL_MAX_10_EXP__ DBL_MAX_10_EXP
    +#define __DBL_MIN__        DBL_MIN
    +#define __DBL_MAX__        DBL_MAX
    +#define __DBL_EPSILON__    DBL_EPSILON
    +// predefined by MinGW GCC
    +#define __DBL_DENORM_MIN__ double(4.94065645841246544177e-324L)
    +
    +#define __LDBL_MANT_DIG__   LDBL_MANT_DIG
    +#define __LDBL_DIG__        LDBL_DIG
    +#define __LDBL_RADIX__      LDBL_RADIX
    +#define __LDBL_MIN_EXP__    LDBL_MIN_EXP
    +#define __LDBL_MIN_10_EXP__ LDBL_MIN_10_EXP
    +#define __LDBL_MAX_EXP__    LDBL_MAX_EXP
    +#define __LDBL_MAX_10_EXP__ LDBL_MAX_10_EXP
    +#define __LDBL_MIN__        LDBL_MIN
    +#define __LDBL_MAX__        LDBL_MAX
    +#define __LDBL_EPSILON__    LDBL_EPSILON
    +// predefined by MinGW GCC
    +#define __LDBL_DENORM_MIN__ 3.64519953188247460253e-4951L
    +
    +// __builtin replacements/workarounds
    +#define __builtin_huge_vall()    _LInf._Long_double
    +#define __builtin_nanl(__dummmy) _LNan._Long_double
    +#define __builtin_nansl(__dummy) _LSnan._Long_double
    +
    +#endif // _LIBCPP_SUPPORT_WIN32_LIMITS_MSVC_WIN32_H
    
    Modified: vendor/libc++/dist/include/support/win32/locale_win32.h
    ==============================================================================
    --- vendor/libc++/dist/include/support/win32/locale_win32.h	Tue May 16 19:47:28 2017	(r318373)
    +++ vendor/libc++/dist/include/support/win32/locale_win32.h	Tue May 16 19:47:31 2017	(r318374)
    @@ -12,9 +12,30 @@
     #define _LIBCPP_SUPPORT_WIN32_LOCALE_WIN32_H
     
     #include <__config>
    -#include "support/win32/support.h"
    -#include "support/win32/locale_mgmt_win32.h"
     #include 
    +#include  // _locale_t
    +
    +#define LC_COLLATE_MASK _M_COLLATE
    +#define LC_CTYPE_MASK _M_CTYPE
    +#define LC_MONETARY_MASK _M_MONETARY
    +#define LC_NUMERIC_MASK _M_NUMERIC
    +#define LC_TIME_MASK _M_TIME
    +#define LC_MESSAGES_MASK _M_MESSAGES
    +#define LC_ALL_MASK (  LC_COLLATE_MASK \
    +                     | LC_CTYPE_MASK \
    +                     | LC_MESSAGES_MASK \
    +                     | LC_MONETARY_MASK \
    +                     | LC_NUMERIC_MASK \
    +                     | LC_TIME_MASK )
    +
    +#define locale_t _locale_t
    +
    +// Locale management functions
    +#define freelocale _free_locale
    +// FIXME: base currently unused. Needs manual work to construct the new locale
    +locale_t newlocale( int mask, const char * locale, locale_t base );
    +locale_t uselocale( locale_t newloc );
    +
     
     lconv *localeconv_l( locale_t loc );
     size_t mbrlen_l( const char *__restrict s, size_t n,
    @@ -88,7 +109,6 @@ _LIBCPP_FUNC_VIS int snprintf_l(char *re
     _LIBCPP_FUNC_VIS int asprintf_l( char **ret, locale_t loc, const char *format, ... );
     _LIBCPP_FUNC_VIS int vasprintf_l( char **ret, locale_t loc, const char *format, va_list ap );
     
    -
     // not-so-pressing FIXME: use locale to determine blank characters
     inline int isblank_l( int c, locale_t /*loc*/ )
     {
    @@ -99,10 +119,4 @@ inline int iswblank_l( wint_t c, locale_
         return ( c == L' ' || c == L'\t' );
     }
     
    -#if defined(_LIBCPP_MSVCRT)
    -inline int isblank( int c, locale_t /*loc*/ )
    -{ return ( c == ' ' || c == '\t' ); }
    -inline int iswblank( wint_t c, locale_t /*loc*/ )
    -{ return ( c == L' ' || c == L'\t' ); }
    -#endif // _LIBCPP_MSVCRT
     #endif // _LIBCPP_SUPPORT_WIN32_LOCALE_WIN32_H
    
    Modified: vendor/libc++/dist/include/variant
    ==============================================================================
    --- vendor/libc++/dist/include/variant	Tue May 16 19:47:28 2017	(r318373)
    +++ vendor/libc++/dist/include/variant	Tue May 16 19:47:31 2017	(r318374)
    @@ -425,30 +425,21 @@ struct __base {
         constexpr auto __fmatrix =
             __make_fmatrix<_Visitor&&,
                            decltype(_VSTD::forward<_Vs>(__vs).__as_base())...>();
    -    const size_t __indices[] = {__vs.index()...};
    -    return __at(__fmatrix, __indices)(_VSTD::forward<_Visitor>(__visitor),
    -                                      _VSTD::forward<_Vs>(__vs).__as_base()...);
    +    return __at(__fmatrix, __vs.index()...)(
    +        _VSTD::forward<_Visitor>(__visitor),
    +        _VSTD::forward<_Vs>(__vs).__as_base()...);
       }
     
     private:
       template 
       inline _LIBCPP_INLINE_VISIBILITY
    -  static constexpr const _Tp& __at_impl(const _Tp& __elem, const size_t*) {
    -    return __elem;
    -  }
    -
    -  template 
    -  inline _LIBCPP_INLINE_VISIBILITY
    -  static constexpr auto&& __at_impl(const array<_Tp, _Np>& __elems,
    -                                    const size_t* __index) {
    -    return __at_impl(__elems[*__index], __index + 1);
    -  }
    +  static constexpr const _Tp& __at(const _Tp& __elem) { return __elem; }
     
    -  template 
    +  template 
       inline _LIBCPP_INLINE_VISIBILITY
       static constexpr auto&& __at(const array<_Tp, _Np>& __elems,
    -                               const size_t (&__indices)[_Ip]) {
    -    return __at_impl(__elems, begin(__indices));
    +                               size_t __index, _Indices... __indices) {
    +    return __at(__elems[__index], __indices...);
       }
     
       template 
    @@ -1140,7 +1131,7 @@ public:
           : __impl(in_place_index<_Ip>, _VSTD::forward<_Arg>(__arg)) {}
     
       template  = 0,
    +            class = enable_if_t<(_Ip < sizeof...(_Types)), int>,
                 class _Tp = variant_alternative_t<_Ip, variant<_Types...>>,
                 enable_if_t, int> = 0>
       inline _LIBCPP_INLINE_VISIBILITY
    
    Modified: vendor/libc++/dist/include/wchar.h
    ==============================================================================
    --- vendor/libc++/dist/include/wchar.h	Tue May 16 19:47:28 2017	(r318373)
    +++ vendor/libc++/dist/include/wchar.h	Tue May 16 19:47:31 2017	(r318374)
    @@ -166,9 +166,12 @@ inline _LIBCPP_INLINE_VISIBILITY _LIBCPP
     }
     #endif
     
    -#if defined(__cplusplus) && (defined(_LIBCPP_MSVCRT) || defined(__MINGW32__))
    -extern "C++" {
    -#include  // pull in *swprintf defines
    +#if defined(__cplusplus) && defined(_LIBCPP_MSVCRT)
    +extern "C" {
    +size_t mbsnrtowcs(wchar_t *__restrict dst, const char **__restrict src,
    +                  size_t nmc, size_t len, mbstate_t *__restrict ps);
    +size_t wcsnrtombs(char *__restrict dst, const wchar_t **__restrict src,
    +                  size_t nwc, size_t len, mbstate_t *__restrict ps);
     }  // extern "C++"
     #endif  // __cplusplus && _LIBCPP_MSVCRT
     
    
    Modified: vendor/libc++/dist/src/include/atomic_support.h
    ==============================================================================
    --- vendor/libc++/dist/src/include/atomic_support.h	Tue May 16 19:47:28 2017	(r318373)
    +++ vendor/libc++/dist/src/include/atomic_support.h	Tue May 16 19:47:31 2017	(r318374)
    @@ -29,7 +29,7 @@
     #endif
     
     #if !defined(_LIBCPP_HAS_ATOMIC_BUILTINS) && !defined(_LIBCPP_HAS_NO_THREADS)
    -# if defined(_LIBCPP_MSVC)
    +# if defined(_LIBCPP_WARNING)
         _LIBCPP_WARNING("Building libc++ without __atomic builtins is unsupported")
     # else
     #   warning Building libc++ without __atomic builtins is unsupported
    
    Modified: vendor/libc++/dist/src/locale.cpp
    ==============================================================================
    --- vendor/libc++/dist/src/locale.cpp	Tue May 16 19:47:28 2017	(r318373)
    +++ vendor/libc++/dist/src/locale.cpp	Tue May 16 19:47:31 2017	(r318374)
    @@ -45,6 +45,24 @@
     
     _LIBCPP_BEGIN_NAMESPACE_STD
     
    +struct __libcpp_unique_locale {
    +  __libcpp_unique_locale(const char* nm) : __loc_(newlocale(LC_ALL_MASK, nm, 0)) {}
    +
    +  ~__libcpp_unique_locale() {
    +    if (__loc_)
    +      freelocale(__loc_);
    +  }
    +
    +  explicit operator bool() const { return __loc_; }
    +
    
    *** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
    
    From owner-svn-src-vendor@freebsd.org  Tue May 16 19:47:45 2017
    Return-Path: 
    Delivered-To: svn-src-vendor@mailman.ysv.freebsd.org
    Received: from mx1.freebsd.org (mx1.freebsd.org
     [IPv6:2001:1900:2254:206a::19:1])
     by mailman.ysv.freebsd.org (Postfix) with ESMTP id A72A2D704B4;
     Tue, 16 May 2017 19:47:45 +0000 (UTC) (envelope-from dim@FreeBSD.org)
    Received: from repo.freebsd.org (repo.freebsd.org
     [IPv6:2610:1c1:1:6068::e6a:0])
     (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
     (Client did not present a certificate)
     by mx1.freebsd.org (Postfix) with ESMTPS id 44D2D1FC0;
     Tue, 16 May 2017 19:47:45 +0000 (UTC) (envelope-from dim@FreeBSD.org)
    Received: from repo.freebsd.org ([127.0.1.37])
     by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v4GJli2Q097332;
     Tue, 16 May 2017 19:47:44 GMT (envelope-from dim@FreeBSD.org)
    Received: (from dim@localhost)
     by repo.freebsd.org (8.15.2/8.15.2/Submit) id v4GJlg3g097308;
     Tue, 16 May 2017 19:47:42 GMT (envelope-from dim@FreeBSD.org)
    Message-Id: <201705161947.v4GJlg3g097308@repo.freebsd.org>
    X-Authentication-Warning: repo.freebsd.org: dim set sender to dim@FreeBSD.org
     using -f
    From: Dimitry Andric 
    Date: Tue, 16 May 2017 19:47:42 +0000 (UTC)
    To: src-committers@freebsd.org, svn-src-all@freebsd.org,
     svn-src-vendor@freebsd.org
    Subject: svn commit: r318376 - in vendor/lld/dist: COFF ELF docs
     include/lld/Core lib/Core lib/ReaderWriter/MachO test/COFF test/ELF
     test/ELF/Inputs test/ELF/linkerscript unittests unittests/CoreTests
    X-SVN-Group: vendor
    MIME-Version: 1.0
    Content-Type: text/plain; charset=UTF-8
    Content-Transfer-Encoding: 8bit
    X-BeenThere: svn-src-vendor@freebsd.org
    X-Mailman-Version: 2.1.23
    Precedence: list
    List-Id: SVN commit messages for the vendor work area tree
     
    List-Unsubscribe: , 
     
    List-Archive: 
    List-Post: 
    List-Help: 
    List-Subscribe: ,
     
    X-List-Received-Date: Tue, 16 May 2017 19:47:45 -0000
    
    Author: dim
    Date: Tue May 16 19:47:41 2017
    New Revision: 318376
    URL: https://svnweb.freebsd.org/changeset/base/318376
    
    Log:
      Vendor import of lld trunk r303197:
      https://llvm.org/svn/llvm-project/lld/trunk@303197
    
    Added:
      vendor/lld/dist/test/ELF/gdb-index-empty.s   (contents, props changed)
      vendor/lld/dist/test/ELF/gdb-index-gc-sections.s   (contents, props changed)
      vendor/lld/dist/test/ELF/linkerscript/early-assign-symbol.s   (contents, props changed)
      vendor/lld/dist/test/ELF/linkerscript/symbol-memoryexpr.s   (contents, props changed)
      vendor/lld/dist/test/ELF/many-alloc-sections.s   (contents, props changed)
      vendor/lld/dist/test/ELF/x86-64-reloc-tpoff32-fpic.s   (contents, props changed)
    Deleted:
      vendor/lld/dist/include/lld/Core/Parallel.h
      vendor/lld/dist/include/lld/Core/TaskGroup.h
      vendor/lld/dist/lib/Core/TaskGroup.cpp
      vendor/lld/dist/test/COFF/constant-export.yaml
      vendor/lld/dist/test/ELF/Inputs/i386-static-tls-model1.s
      vendor/lld/dist/test/ELF/Inputs/i386-static-tls-model2.s
      vendor/lld/dist/test/ELF/Inputs/i386-static-tls-model3.s
      vendor/lld/dist/test/ELF/Inputs/i386-static-tls-model4.s
      vendor/lld/dist/test/ELF/i386-static-tls-model.s
      vendor/lld/dist/unittests/CoreTests/
    Modified:
      vendor/lld/dist/COFF/Driver.cpp
      vendor/lld/dist/COFF/ICF.cpp
      vendor/lld/dist/COFF/MapFile.cpp
      vendor/lld/dist/COFF/Writer.cpp
      vendor/lld/dist/ELF/Config.h
      vendor/lld/dist/ELF/Driver.cpp
      vendor/lld/dist/ELF/GdbIndex.h
      vendor/lld/dist/ELF/ICF.cpp
      vendor/lld/dist/ELF/InputFiles.cpp
      vendor/lld/dist/ELF/InputSection.cpp
      vendor/lld/dist/ELF/LinkerScript.cpp
      vendor/lld/dist/ELF/LinkerScript.h
      vendor/lld/dist/ELF/MapFile.cpp
      vendor/lld/dist/ELF/OutputSections.cpp
      vendor/lld/dist/ELF/OutputSections.h
      vendor/lld/dist/ELF/Relocations.cpp
      vendor/lld/dist/ELF/ScriptParser.cpp
      vendor/lld/dist/ELF/Strings.cpp
      vendor/lld/dist/ELF/Symbols.cpp
      vendor/lld/dist/ELF/Symbols.h
      vendor/lld/dist/ELF/SyntheticSections.cpp
      vendor/lld/dist/ELF/SyntheticSections.h
      vendor/lld/dist/ELF/Target.cpp
      vendor/lld/dist/ELF/Threads.h
      vendor/lld/dist/ELF/Thunks.cpp
      vendor/lld/dist/ELF/Writer.cpp
      vendor/lld/dist/ELF/Writer.h
      vendor/lld/dist/docs/CMakeLists.txt
      vendor/lld/dist/lib/Core/CMakeLists.txt
      vendor/lld/dist/lib/ReaderWriter/MachO/LayoutPass.cpp
      vendor/lld/dist/test/COFF/constant-export.test
      vendor/lld/dist/test/ELF/i386-tls-ie-shared.s
      vendor/lld/dist/test/ELF/incompatible-section-types2.s
      vendor/lld/dist/test/ELF/linkerscript/ehdr_start.s
      vendor/lld/dist/test/ELF/linkerscript/sections-constraint.s
      vendor/lld/dist/test/ELF/linkerscript/sections.s
      vendor/lld/dist/test/ELF/many-sections.s
      vendor/lld/dist/test/ELF/tls-dynamic-i686.s
      vendor/lld/dist/test/ELF/tls-opt-iele-i686-nopic.s
      vendor/lld/dist/unittests/CMakeLists.txt
    
    Modified: vendor/lld/dist/COFF/Driver.cpp
    ==============================================================================
    --- vendor/lld/dist/COFF/Driver.cpp	Tue May 16 19:47:39 2017	(r318375)
    +++ vendor/lld/dist/COFF/Driver.cpp	Tue May 16 19:47:41 2017	(r318376)
    @@ -18,7 +18,6 @@
     #include "lld/Driver/Driver.h"
     #include "llvm/ADT/Optional.h"
     #include "llvm/ADT/StringSwitch.h"
    -#include "llvm/LibDriver/LibDriver.h"
     #include "llvm/Object/ArchiveWriter.h"
     #include "llvm/Option/Arg.h"
     #include "llvm/Option/ArgList.h"
    @@ -29,6 +28,7 @@
     #include "llvm/Support/TarWriter.h"
     #include "llvm/Support/TargetSelect.h"
     #include "llvm/Support/raw_ostream.h"
    +#include "llvm/ToolDrivers/llvm-lib/LibDriver.h"
     #include 
     #include 
     
    
    Modified: vendor/lld/dist/COFF/ICF.cpp
    ==============================================================================
    --- vendor/lld/dist/COFF/ICF.cpp	Tue May 16 19:47:39 2017	(r318375)
    +++ vendor/lld/dist/COFF/ICF.cpp	Tue May 16 19:47:41 2017	(r318376)
    @@ -21,9 +21,9 @@
     #include "Chunks.h"
     #include "Error.h"
     #include "Symbols.h"
    -#include "lld/Core/Parallel.h"
     #include "llvm/ADT/Hashing.h"
     #include "llvm/Support/Debug.h"
    +#include "llvm/Support/Parallel.h"
     #include "llvm/Support/raw_ostream.h"
     #include 
     #include 
    @@ -192,7 +192,7 @@ void ICF::forEachClass(std::function
     getSymbolStrings(ArrayRef Syms) {
       std::vector Str(Syms.size());
    -  parallel_for((size_t)0, Syms.size(), [&](size_t I) {
    +  for_each_n(parallel::par, (size_t)0, Syms.size(), [&](size_t I) {
         raw_string_ostream OS(Str[I]);
         writeHeader(OS, Syms[I]->getRVA(), 0, 0);
         OS << indent(2) << toString(*Syms[I]);
    
    Modified: vendor/lld/dist/COFF/Writer.cpp
    ==============================================================================
    --- vendor/lld/dist/COFF/Writer.cpp	Tue May 16 19:47:39 2017	(r318375)
    +++ vendor/lld/dist/COFF/Writer.cpp	Tue May 16 19:47:41 2017	(r318376)
    @@ -17,13 +17,13 @@
     #include "PDB.h"
     #include "SymbolTable.h"
     #include "Symbols.h"
    -#include "lld/Core/Parallel.h"
     #include "llvm/ADT/DenseMap.h"
     #include "llvm/ADT/STLExtras.h"
     #include "llvm/ADT/StringSwitch.h"
     #include "llvm/Support/Debug.h"
     #include "llvm/Support/Endian.h"
     #include "llvm/Support/FileOutputBuffer.h"
    +#include "llvm/Support/Parallel.h"
     #include "llvm/Support/RandomNumberGenerator.h"
     #include "llvm/Support/raw_ostream.h"
     #include 
    @@ -745,8 +745,8 @@ void Writer::writeSections() {
         // ADD instructions).
         if (Sec->getPermissions() & IMAGE_SCN_CNT_CODE)
           memset(SecBuf, 0xCC, Sec->getRawSize());
    -    parallel_for_each(Sec->getChunks().begin(), Sec->getChunks().end(),
    -                      [&](Chunk *C) { C->writeTo(SecBuf); });
    +    for_each(parallel::par, Sec->getChunks().begin(), Sec->getChunks().end(),
    +             [&](Chunk *C) { C->writeTo(SecBuf); });
       }
     }
     
    @@ -760,16 +760,14 @@ void Writer::sortExceptionTable() {
       uint8_t *End = Begin + Sec->getVirtualSize();
       if (Config->Machine == AMD64) {
         struct Entry { ulittle32_t Begin, End, Unwind; };
    -    parallel_sort(
    -        (Entry *)Begin, (Entry *)End,
    -        [](const Entry &A, const Entry &B) { return A.Begin < B.Begin; });
    +    sort(parallel::par, (Entry *)Begin, (Entry *)End,
    +         [](const Entry &A, const Entry &B) { return A.Begin < B.Begin; });
         return;
       }
       if (Config->Machine == ARMNT) {
         struct Entry { ulittle32_t Begin, Unwind; };
    -    parallel_sort(
    -        (Entry *)Begin, (Entry *)End,
    -        [](const Entry &A, const Entry &B) { return A.Begin < B.Begin; });
    +    sort(parallel::par, (Entry *)Begin, (Entry *)End,
    +         [](const Entry &A, const Entry &B) { return A.Begin < B.Begin; });
         return;
       }
       errs() << "warning: don't know how to handle .pdata.\n";
    
    Modified: vendor/lld/dist/ELF/Config.h
    ==============================================================================
    --- vendor/lld/dist/ELF/Config.h	Tue May 16 19:47:39 2017	(r318375)
    +++ vendor/lld/dist/ELF/Config.h	Tue May 16 19:47:41 2017	(r318376)
    @@ -73,7 +73,6 @@ struct VersionDefinition {
     // Most fields are initialized by the driver.
     struct Configuration {
       InputFile *FirstElf = nullptr;
    -  bool HasStaticTlsModel = false;
       uint8_t OSABI = 0;
       llvm::CachePruningPolicy ThinLTOCachePolicy;
       llvm::StringMap SectionStartMap;
    
    Modified: vendor/lld/dist/ELF/Driver.cpp
    ==============================================================================
    --- vendor/lld/dist/ELF/Driver.cpp	Tue May 16 19:47:39 2017	(r318375)
    +++ vendor/lld/dist/ELF/Driver.cpp	Tue May 16 19:47:41 2017	(r318376)
    @@ -284,7 +284,7 @@ static int getInteger(opt::InputArgList 
       int V = Default;
       if (auto *Arg = Args.getLastArg(Key)) {
         StringRef S = Arg->getValue();
    -    if (S.getAsInteger(10, V))
    +    if (!to_integer(S, V, 10))
           error(Arg->getSpelling() + ": number expected, but got " + S);
       }
       return V;
    @@ -311,7 +311,7 @@ static uint64_t getZOptionValue(opt::Inp
         if (Pos != StringRef::npos && Key == Value.substr(0, Pos)) {
           Value = Value.substr(Pos + 1);
           uint64_t Result;
    -      if (Value.getAsInteger(0, Result))
    +      if (!to_integer(Value, Result))
             error("invalid " + Key + ": " + Value);
           return Result;
         }
    @@ -522,7 +522,7 @@ static uint64_t parseSectionAddress(Stri
       uint64_t VA = 0;
       if (S.startswith("0x"))
         S = S.drop_front(2);
    -  if (S.getAsInteger(16, VA))
    +  if (!to_integer(S, VA, 16))
         error("invalid argument: " + toString(Arg));
       return VA;
     }
    @@ -886,7 +886,7 @@ static uint64_t getImageBase(opt::InputA
     
       StringRef S = Arg->getValue();
       uint64_t V;
    -  if (S.getAsInteger(0, V)) {
    +  if (!to_integer(S, V)) {
         error("-image-base: number expected, but got " + S);
         return 0;
       }
    
    Modified: vendor/lld/dist/ELF/GdbIndex.h
    ==============================================================================
    --- vendor/lld/dist/ELF/GdbIndex.h	Tue May 16 19:47:39 2017	(r318375)
    +++ vendor/lld/dist/ELF/GdbIndex.h	Tue May 16 19:47:41 2017	(r318376)
    @@ -21,7 +21,7 @@ class InputSection;
     
     // Struct represents single entry of address area of gdb index.
     struct AddressEntry {
    -  InputSectionBase *Section;
    +  InputSection *Section;
       uint64_t LowAddress;
       uint64_t HighAddress;
       size_t CuIndex;
    
    Modified: vendor/lld/dist/ELF/ICF.cpp
    ==============================================================================
    --- vendor/lld/dist/ELF/ICF.cpp	Tue May 16 19:47:39 2017	(r318375)
    +++ vendor/lld/dist/ELF/ICF.cpp	Tue May 16 19:47:41 2017	(r318376)
    @@ -325,7 +325,7 @@ void ICF::forEachClass(std::functi
       // Split sections into 256 shards and call Fn in parallel.
       size_t NumShards = 256;
       size_t Step = Sections.size() / NumShards;
    -  parallelFor(0, NumShards, [&](size_t I) {
    +  parallelForEachN(0, NumShards, [&](size_t I) {
         forEachClassRange(I * Step, (I + 1) * Step, Fn);
       });
       forEachClassRange(Step * NumShards, Sections.size(), Fn);
    
    Modified: vendor/lld/dist/ELF/InputFiles.cpp
    ==============================================================================
    --- vendor/lld/dist/ELF/InputFiles.cpp	Tue May 16 19:47:39 2017	(r318375)
    +++ vendor/lld/dist/ELF/InputFiles.cpp	Tue May 16 19:47:41 2017	(r318376)
    @@ -383,9 +383,9 @@ elf::ObjectFile::createInputSectio
         // we see. The eglibc ARM dynamic loaders require the presence of an
         // attribute section for dlopen to work.
         // In a full implementation we would merge all attribute sections.
    -    if (In::ARMAttributes == nullptr) {
    -      In::ARMAttributes = make(this, &Sec, Name);
    -      return In::ARMAttributes;
    +    if (InX::ARMAttributes == nullptr) {
    +      InX::ARMAttributes = make(this, &Sec, Name);
    +      return InX::ARMAttributes;
         }
         return &InputSection::Discarded;
       case SHT_RELA:
    
    Modified: vendor/lld/dist/ELF/InputSection.cpp
    ==============================================================================
    --- vendor/lld/dist/ELF/InputSection.cpp	Tue May 16 19:47:39 2017	(r318375)
    +++ vendor/lld/dist/ELF/InputSection.cpp	Tue May 16 19:47:41 2017	(r318376)
    @@ -324,7 +324,7 @@ void InputSection::copyRelocations(uint8
         // section, but for --emit-relocs it is an virtual address.
         P->r_offset = RelocatedSection->OutSec->Addr +
                       RelocatedSection->getOffset(Rel.r_offset);
    -    P->setSymbolAndType(In::SymTab->getSymbolIndex(&Body), Type,
    +    P->setSymbolAndType(InX::SymTab->getSymbolIndex(&Body), Type,
                             Config->IsMips64EL);
     
         if (Body.Type == STT_SECTION) {
    @@ -400,40 +400,40 @@ getRelocTargetVA(uint32_t Type, int64_t 
         return Body.getVA(A);
       case R_GOT:
       case R_RELAX_TLS_GD_TO_IE_ABS:
    -    return Body.getGotVA() + A;
    +    return Body.getGotVA() + A;
       case R_GOTONLY_PC:
    -    return In::Got->getVA() + A - P;
    +    return InX::Got->getVA() + A - P;
       case R_GOTONLY_PC_FROM_END:
    -    return In::Got->getVA() + A - P + In::Got->getSize();
    +    return InX::Got->getVA() + A - P + InX::Got->getSize();
       case R_GOTREL:
    -    return Body.getVA(A) - In::Got->getVA();
    +    return Body.getVA(A) - InX::Got->getVA();
       case R_GOTREL_FROM_END:
    -    return Body.getVA(A) - In::Got->getVA() - In::Got->getSize();
    +    return Body.getVA(A) - InX::Got->getVA() - InX::Got->getSize();
       case R_GOT_FROM_END:
       case R_RELAX_TLS_GD_TO_IE_END:
    -    return Body.getGotOffset() + A - In::Got->getSize();
    +    return Body.getGotOffset() + A - InX::Got->getSize();
       case R_GOT_OFF:
         return Body.getGotOffset() + A;
       case R_GOT_PAGE_PC:
       case R_RELAX_TLS_GD_TO_IE_PAGE_PC:
    -    return getAArch64Page(Body.getGotVA() + A) - getAArch64Page(P);
    +    return getAArch64Page(Body.getGotVA() + A) - getAArch64Page(P);
       case R_GOT_PC:
       case R_RELAX_TLS_GD_TO_IE:
    -    return Body.getGotVA() + A - P;
    +    return Body.getGotVA() + A - P;
       case R_HINT:
       case R_NONE:
       case R_TLSDESC_CALL:
         llvm_unreachable("cannot relocate hint relocs");
       case R_MIPS_GOTREL:
    -    return Body.getVA(A) - In::MipsGot->getGp();
    +    return Body.getVA(A) - InX::MipsGot->getGp();
       case R_MIPS_GOT_GP:
    -    return In::MipsGot->getGp() + A;
    +    return InX::MipsGot->getGp() + A;
       case R_MIPS_GOT_GP_PC: {
         // R_MIPS_LO16 expression has R_MIPS_GOT_GP_PC type iif the target
         // is _gp_disp symbol. In that case we should use the following
         // formula for calculation "AHL + GP - P + 4". For details see p. 4-19 at
         // ftp://www.linux-mips.org/pub/linux/mips/doc/ABI/mipsabi.pdf
    -    uint64_t V = In::MipsGot->getGp() + A - P;
    +    uint64_t V = InX::MipsGot->getGp() + A - P;
         if (Type == R_MIPS_LO16)
           V += 4;
         return V;
    @@ -442,24 +442,21 @@ getRelocTargetVA(uint32_t Type, int64_t 
         // If relocation against MIPS local symbol requires GOT entry, this entry
         // should be initialized by 'page address'. This address is high 16-bits
         // of sum the symbol's value and the addend.
    -    return In::MipsGot->getVA() +
    -           In::MipsGot->getPageEntryOffset(Body, A) -
    -           In::MipsGot->getGp();
    +    return InX::MipsGot->getVA() + InX::MipsGot->getPageEntryOffset(Body, A) -
    +           InX::MipsGot->getGp();
       case R_MIPS_GOT_OFF:
       case R_MIPS_GOT_OFF32:
         // In case of MIPS if a GOT relocation has non-zero addend this addend
         // should be applied to the GOT entry content not to the GOT entry offset.
         // That is why we use separate expression type.
    -    return In::MipsGot->getVA() +
    -           In::MipsGot->getBodyEntryOffset(Body, A) -
    -           In::MipsGot->getGp();
    +    return InX::MipsGot->getVA() + InX::MipsGot->getBodyEntryOffset(Body, A) -
    +           InX::MipsGot->getGp();
       case R_MIPS_TLSGD:
    -    return In::MipsGot->getVA() + In::MipsGot->getTlsOffset() +
    -           In::MipsGot->getGlobalDynOffset(Body) -
    -           In::MipsGot->getGp();
    +    return InX::MipsGot->getVA() + InX::MipsGot->getTlsOffset() +
    +           InX::MipsGot->getGlobalDynOffset(Body) - InX::MipsGot->getGp();
       case R_MIPS_TLSLD:
    -    return In::MipsGot->getVA() + In::MipsGot->getTlsOffset() +
    -           In::MipsGot->getTlsIndexOff() - In::MipsGot->getGp();
    +    return InX::MipsGot->getVA() + InX::MipsGot->getTlsOffset() +
    +           InX::MipsGot->getTlsIndexOff() - InX::MipsGot->getGp();
       case R_PAGE_PC:
       case R_PLT_PAGE_PC:
         if (Body.isUndefined() && !Body.isLocal() && Body.symbol()->isWeak())
    @@ -523,19 +520,18 @@ getRelocTargetVA(uint32_t Type, int64_t 
       case R_SIZE:
         return Body.getSize() + A;
       case R_TLSDESC:
    -    return In::Got->getGlobalDynAddr(Body) + A;
    +    return InX::Got->getGlobalDynAddr(Body) + A;
       case R_TLSDESC_PAGE:
    -    return getAArch64Page(In::Got->getGlobalDynAddr(Body) + A) -
    +    return getAArch64Page(InX::Got->getGlobalDynAddr(Body) + A) -
                getAArch64Page(P);
       case R_TLSGD:
    -    return In::Got->getGlobalDynOffset(Body) + A -
    -           In::Got->getSize();
    +    return InX::Got->getGlobalDynOffset(Body) + A - InX::Got->getSize();
       case R_TLSGD_PC:
    -    return In::Got->getGlobalDynAddr(Body) + A - P;
    +    return InX::Got->getGlobalDynAddr(Body) + A - P;
       case R_TLSLD:
    -    return In::Got->getTlsIndexOff() + A - In::Got->getSize();
    +    return InX::Got->getTlsIndexOff() + A - InX::Got->getSize();
       case R_TLSLD_PC:
    -    return In::Got->getTlsIndexVA() + A - P;
    +    return InX::Got->getTlsIndexVA() + A - P;
       }
       llvm_unreachable("Invalid expression");
     }
    
    Modified: vendor/lld/dist/ELF/LinkerScript.cpp
    ==============================================================================
    --- vendor/lld/dist/ELF/LinkerScript.cpp	Tue May 16 19:47:39 2017	(r318375)
    +++ vendor/lld/dist/ELF/LinkerScript.cpp	Tue May 16 19:47:41 2017	(r318376)
    @@ -48,8 +48,12 @@ using namespace lld::elf;
     LinkerScript *elf::Script;
     
     uint64_t ExprValue::getValue() const {
    -  if (Sec)
    -    return Sec->getOffset(Val) + Sec->getOutputSection()->Addr;
    +  if (Sec) {
    +    if (Sec->getOutputSection())
    +      return Sec->getOffset(Val) + Sec->getOutputSection()->Addr;
    +    error("unable to evaluate expression: input section " + Sec->Name +
    +          " has no output section assigned");
    +  }
       return Val;
     }
     
    @@ -411,6 +415,7 @@ void LinkerScript::processCommands(Outpu
           if (OutputSection *Sec = Cmd->Sec) {
             assert(Sec->SectionIndex == INT_MAX);
             Sec->SectionIndex = I;
    +        SecToCommand[Sec] = Cmd;
           }
         }
       }
    @@ -440,6 +445,7 @@ void LinkerScript::fabricateDefaultComma
     
         auto *OSCmd = make(Sec->Name);
         OSCmd->Sec = Sec;
    +    SecToCommand[Sec] = OSCmd;
     
         // Prefer user supplied address over additional alignment constraint
         auto I = Config->SectionStartMap.find(Sec->Name);
    @@ -484,6 +490,7 @@ void LinkerScript::addOrphanSections(Out
           auto *Cmd = cast(*I);
           Factory.addInputSec(S, Name, Cmd->Sec);
           if (OutputSection *Sec = Cmd->Sec) {
    +        SecToCommand[Sec] = Cmd;
             unsigned Index = std::distance(Opt.Commands.begin(), I);
             assert(Sec->SectionIndex == INT_MAX || Sec->SectionIndex == Index);
             Sec->SectionIndex = Index;
    @@ -699,6 +706,7 @@ void LinkerScript::adjustSectionsBeforeS
         OutSec->SectionIndex = I;
         OutputSections->push_back(OutSec);
         Cmd->Sec = OutSec;
    +    SecToCommand[OutSec] = Cmd;
       }
     }
     
    @@ -822,16 +830,14 @@ void LinkerScript::placeOrphanSections()
         // If there is no command corresponding to this output section,
         // create one and put a InputSectionDescription in it so that both
         // representations agree on which input sections to use.
    -    auto Pos = std::find_if(CmdIter, E, [&](BaseCommand *Base) {
    -      auto *Cmd = dyn_cast(Base);
    -      return Cmd && Cmd->Name == Name;
    -    });
    -    if (Pos == E) {
    -      auto *Cmd = make(Name);
    +    OutputSectionCommand *Cmd = getCmd(Sec);
    +    if (!Cmd) {
    +      Cmd = make(Name);
           Opt.Commands.insert(CmdIter, Cmd);
           ++CmdIndex;
     
           Cmd->Sec = Sec;
    +      SecToCommand[Sec] = Cmd;
           auto *ISD = make("");
           for (InputSection *IS : Sec->Sections)
             ISD->Sections.push_back(IS);
    @@ -841,7 +847,11 @@ void LinkerScript::placeOrphanSections()
         }
     
         // Continue from where we found it.
    -    CmdIndex = (Pos - Opt.Commands.begin()) + 1;
    +    while (*CmdIter != Cmd) {
    +      ++CmdIter;
    +      ++CmdIndex;
    +    }
    +    ++CmdIndex;
       }
     }
     
    @@ -1000,7 +1010,7 @@ std::vector LinkerScript::cre
           break;
     
         // Assign headers specified by linker script
    -    for (size_t Id : getPhdrIndices(Sec->Name)) {
    +    for (size_t Id : getPhdrIndices(Sec)) {
           Ret[Id].add(Sec);
           if (Opt.PhdrsCommands[Id].Flags == UINT_MAX)
             Ret[Id].p_flags |= Sec->getPhdrFlags();
    @@ -1020,11 +1030,16 @@ bool LinkerScript::ignoreInterpSection()
       return true;
     }
     
    -Optional LinkerScript::getFiller(StringRef Name) {
    -  for (BaseCommand *Base : Opt.Commands)
    -    if (auto *Cmd = dyn_cast(Base))
    -      if (Cmd->Name == Name)
    -        return Cmd->Filler;
    +OutputSectionCommand *LinkerScript::getCmd(OutputSection *Sec) const {
    +  auto I = SecToCommand.find(Sec);
    +  if (I == SecToCommand.end())
    +    return nullptr;
    +  return I->second;
    +}
    +
    +Optional LinkerScript::getFiller(OutputSection *Sec) {
    +  if (OutputSectionCommand *Cmd = getCmd(Sec))
    +    return Cmd->Filler;
       return None;
     }
     
    @@ -1042,26 +1057,16 @@ static void writeInt(uint8_t *Buf, uint6
     }
     
     void LinkerScript::writeDataBytes(OutputSection *Sec, uint8_t *Buf) {
    -  auto I = std::find_if(Opt.Commands.begin(), Opt.Commands.end(),
    -                        [=](BaseCommand *Base) {
    -                          if (auto *Cmd = dyn_cast(Base))
    -                            if (Cmd->Sec == Sec)
    -                              return true;
    -                          return false;
    -                        });
    -  if (I == Opt.Commands.end())
    -    return;
    -  auto *Cmd = cast(*I);
    -  for (BaseCommand *Base : Cmd->Commands)
    -    if (auto *Data = dyn_cast(Base))
    -      writeInt(Buf + Data->Offset, Data->Expression().getValue(), Data->Size);
    +  if (OutputSectionCommand *Cmd = getCmd(Sec))
    +    for (BaseCommand *Base : Cmd->Commands)
    +      if (auto *Data = dyn_cast(Base))
    +        writeInt(Buf + Data->Offset, Data->Expression().getValue(), Data->Size);
     }
     
    -bool LinkerScript::hasLMA(StringRef Name) {
    -  for (BaseCommand *Base : Opt.Commands)
    -    if (auto *Cmd = dyn_cast(Base))
    -      if (Cmd->LMAExpr && Cmd->Name == Name)
    -        return true;
    +bool LinkerScript::hasLMA(OutputSection *Sec) {
    +  if (OutputSectionCommand *Cmd = getCmd(Sec))
    +    if (Cmd->LMAExpr)
    +      return true;
       return false;
     }
     
    @@ -1080,15 +1085,10 @@ ExprValue LinkerScript::getSymbolValue(c
     
     bool LinkerScript::isDefined(StringRef S) { return findSymbol(S) != nullptr; }
     
    -// Returns indices of ELF headers containing specific section, identified
    -// by Name. Each index is a zero based number of ELF header listed within
    -// PHDRS {} script block.
    -std::vector LinkerScript::getPhdrIndices(StringRef SectionName) {
    -  for (BaseCommand *Base : Opt.Commands) {
    -    auto *Cmd = dyn_cast(Base);
    -    if (!Cmd || Cmd->Name != SectionName)
    -      continue;
    -
    +// Returns indices of ELF headers containing specific section. Each index is a
    +// zero based number of ELF header listed within PHDRS {} script block.
    +std::vector LinkerScript::getPhdrIndices(OutputSection *Sec) {
    +  if (OutputSectionCommand *Cmd = getCmd(Sec)) {
         std::vector Ret;
         for (StringRef PhdrName : Cmd->Phdrs)
           Ret.push_back(getPhdrIndex(Cmd->Location, PhdrName));
    
    Modified: vendor/lld/dist/ELF/LinkerScript.h
    ==============================================================================
    --- vendor/lld/dist/ELF/LinkerScript.h	Tue May 16 19:47:39 2017	(r318375)
    +++ vendor/lld/dist/ELF/LinkerScript.h	Tue May 16 19:47:41 2017	(r318376)
    @@ -211,8 +211,9 @@ struct ScriptConfiguration {
       std::vector ReferencedSymbols;
     };
     
    -class LinkerScript {
    -protected:
    +class LinkerScript final {
    +  llvm::DenseMap SecToCommand;
    +  OutputSectionCommand *getCmd(OutputSection *Sec) const;
       void assignSymbol(SymbolAssignment *Cmd, bool InSec);
       void setDot(Expr E, const Twine &Loc, bool InSec);
     
    @@ -222,7 +223,7 @@ protected:
       std::vector
       createInputSectionList(OutputSectionCommand &Cmd);
     
    -  std::vector getPhdrIndices(StringRef SectionName);
    +  std::vector getPhdrIndices(OutputSection *Sec);
       size_t getPhdrIndex(const Twine &Loc, StringRef PhdrName);
     
       MemoryRegion *findMemoryRegion(OutputSectionCommand *Cmd);
    @@ -262,8 +263,8 @@ public:
       std::vector createPhdrs();
       bool ignoreInterpSection();
     
    -  llvm::Optional getFiller(StringRef Name);
    -  bool hasLMA(StringRef Name);
    +  llvm::Optional getFiller(OutputSection *Sec);
    +  bool hasLMA(OutputSection *Sec);
       bool shouldKeep(InputSectionBase *S);
       void assignOffsets(OutputSectionCommand *Cmd);
       void placeOrphanSections();
    
    Modified: vendor/lld/dist/ELF/MapFile.cpp
    ==============================================================================
    --- vendor/lld/dist/ELF/MapFile.cpp	Tue May 16 19:47:39 2017	(r318375)
    +++ vendor/lld/dist/ELF/MapFile.cpp	Tue May 16 19:47:41 2017	(r318376)
    @@ -84,7 +84,7 @@ template 
     DenseMap
     getSymbolStrings(ArrayRef Syms) {
       std::vector Str(Syms.size());
    -  parallelFor(0, Syms.size(), [&](size_t I) {
    +  parallelForEachN(0, Syms.size(), [&](size_t I) {
         raw_string_ostream OS(Str[I]);
         writeHeader(OS, Syms[I]->getVA(), Syms[I]->template getSize(),
                           0);
    
    Modified: vendor/lld/dist/ELF/OutputSections.cpp
    ==============================================================================
    --- vendor/lld/dist/ELF/OutputSections.cpp	Tue May 16 19:47:39 2017	(r318375)
    +++ vendor/lld/dist/ELF/OutputSections.cpp	Tue May 16 19:47:41 2017	(r318376)
    @@ -133,7 +133,7 @@ template  void OutputSection
       if (isa(First))
         return;
     
    -  this->Link = In::SymTab->OutSec->SectionIndex;
    +  this->Link = InX::SymTab->OutSec->SectionIndex;
       // sh_info for SHT_REL[A] sections should contain the section header index of
       // the section to which the relocation applies.
       InputSectionBase *S = First->getRelocatedSection();
    @@ -273,7 +273,7 @@ uint32_t OutputSection::getFiller() {
       // linker script. If nothing is specified and this is an executable section,
       // fall back to trap instructions to prevent bad diassembly and detect invalid
       // jumps to padding.
    -  if (Optional Filler = Script->getFiller(Name))
    +  if (Optional Filler = Script->getFiller(this))
         return *Filler;
       if (Flags & SHF_EXECINSTR)
         return Target->TrapInstr;
    @@ -297,7 +297,7 @@ template  void OutputSection
       if (Filler)
         fill(Buf, Sections.empty() ? Size : Sections[0]->OutSecOff, Filler);
     
    -  parallelFor(0, Sections.size(), [=](size_t I) {
    +  parallelForEachN(0, Sections.size(), [=](size_t I) {
         InputSection *Sec = Sections[I];
         Sec->writeTo(Buf);
     
    @@ -429,8 +429,11 @@ void OutputSectionFactory::addInputSec(I
           if (canMergeToProgbits(Sec->Type) && canMergeToProgbits(IS->Type))
             Sec->Type = SHT_PROGBITS;
           else
    -        error("Section has different type from others with the same name " +
    -              toString(IS));
    +        error("section type mismatch for " + IS->Name +
    +              "\n>>> " + toString(IS) + ": " +
    +              getELFSectionTypeName(Config->EMachine, IS->Type) +
    +              "\n>>> output section " + Sec->Name + ": " +
    +              getELFSectionTypeName(Config->EMachine, Sec->Type));
         }
         Sec->Flags |= Flags;
       } else {
    
    Modified: vendor/lld/dist/ELF/OutputSections.h
    ==============================================================================
    --- vendor/lld/dist/ELF/OutputSections.h	Tue May 16 19:47:39 2017	(r318375)
    +++ vendor/lld/dist/ELF/OutputSections.h	Tue May 16 19:47:41 2017	(r318376)
    @@ -50,6 +50,7 @@ public:
       template  void writeHeaderTo(typename ELFT::Shdr *SHdr);
     
       unsigned SectionIndex;
    +  unsigned SortRank;
     
       uint32_t getPhdrFlags() const;
     
    
    Modified: vendor/lld/dist/ELF/Relocations.cpp
    ==============================================================================
    --- vendor/lld/dist/ELF/Relocations.cpp	Tue May 16 19:47:39 2017	(r318375)
    +++ vendor/lld/dist/ELF/Relocations.cpp	Tue May 16 19:47:41 2017	(r318376)
    @@ -106,21 +106,21 @@ static unsigned handleMipsTlsRelocation(
                                             InputSectionBase &C, uint64_t Offset,
                                             int64_t Addend, RelExpr Expr) {
       if (Expr == R_MIPS_TLSLD) {
    -    if (In::MipsGot->addTlsIndex() && Config->Pic)
    -      In::RelaDyn->addReloc({Target->TlsModuleIndexRel, In::MipsGot,
    -                                   In::MipsGot->getTlsIndexOff(), false,
    +    if (InX::MipsGot->addTlsIndex() && Config->Pic)
    +      In::RelaDyn->addReloc({Target->TlsModuleIndexRel, InX::MipsGot,
    +                                   InX::MipsGot->getTlsIndexOff(), false,
                                        nullptr, 0});
         C.Relocations.push_back({Expr, Type, Offset, Addend, &Body});
         return 1;
       }
     
       if (Expr == R_MIPS_TLSGD) {
    -    if (In::MipsGot->addDynTlsEntry(Body) && Body.isPreemptible()) {
    -      uint64_t Off = In::MipsGot->getGlobalDynOffset(Body);
    +    if (InX::MipsGot->addDynTlsEntry(Body) && Body.isPreemptible()) {
    +      uint64_t Off = InX::MipsGot->getGlobalDynOffset(Body);
           In::RelaDyn->addReloc(
    -          {Target->TlsModuleIndexRel, In::MipsGot, Off, false, &Body, 0});
    +          {Target->TlsModuleIndexRel, InX::MipsGot, Off, false, &Body, 0});
           if (Body.isPreemptible())
    -        In::RelaDyn->addReloc({Target->TlsOffsetRel, In::MipsGot,
    +        In::RelaDyn->addReloc({Target->TlsOffsetRel, InX::MipsGot,
                                          Off + Config->Wordsize, false, &Body, 0});
         }
         C.Relocations.push_back({Expr, Type, Offset, Addend, &Body});
    @@ -156,17 +156,17 @@ static unsigned handleARMTlsRelocation(u
       auto AddTlsReloc = [&](uint64_t Off, uint32_t Type, SymbolBody *Dest,
                              bool Dyn) {
         if (Dyn)
    -      In::RelaDyn->addReloc({Type, In::Got, Off, false, Dest, 0});
    +      In::RelaDyn->addReloc({Type, InX::Got, Off, false, Dest, 0});
         else
    -      In::Got->Relocations.push_back({R_ABS, Type, Off, 0, Dest});
    +      InX::Got->Relocations.push_back({R_ABS, Type, Off, 0, Dest});
       };
     
       // Local Dynamic is for access to module local TLS variables, while still
       // being suitable for being dynamically loaded via dlopen.
       // GOT[e0] is the module index, with a special value of 0 for the current
       // module. GOT[e1] is unused. There only needs to be one module index entry.
    -  if (Expr == R_TLSLD_PC && In::Got->addTlsIndex()) {
    -    AddTlsReloc(In::Got->getTlsIndexOff(), Target->TlsModuleIndexRel,
    +  if (Expr == R_TLSLD_PC && InX::Got->addTlsIndex()) {
    +    AddTlsReloc(InX::Got->getTlsIndexOff(), Target->TlsModuleIndexRel,
                     NeedDynId ? nullptr : &Body, NeedDynId);
         C.Relocations.push_back({Expr, Type, Offset, Addend, &Body});
         return 1;
    @@ -176,8 +176,8 @@ static unsigned handleARMTlsRelocation(u
       // the module index and offset of symbol in TLS block we can fill these in
       // using static GOT relocations.
       if (Expr == R_TLSGD_PC) {
    -    if (In::Got->addDynTlsEntry(Body)) {
    -      uint64_t Off = In::Got->getGlobalDynOffset(Body);
    +    if (InX::Got->addDynTlsEntry(Body)) {
    +      uint64_t Off = InX::Got->getGlobalDynOffset(Body);
           AddTlsReloc(Off, Target->TlsModuleIndexRel, &Body, NeedDynId);
           AddTlsReloc(Off + Config->Wordsize, Target->TlsOffsetRel, &Body,
                       NeedDynOff);
    @@ -207,10 +207,10 @@ handleTlsRelocation(uint32_t Type, Symbo
       bool IsPreemptible = isPreemptible(Body, Type);
       if (isRelExprOneOf(Expr) &&
           Config->Shared) {
    -    if (In::Got->addDynTlsEntry(Body)) {
    -      uint64_t Off = In::Got->getGlobalDynOffset(Body);
    -      In::RelaDyn->addReloc({Target->TlsDescRel, In::Got, Off,
    -                                   !IsPreemptible, &Body, 0});
    +    if (InX::Got->addDynTlsEntry(Body)) {
    +      uint64_t Off = InX::Got->getGlobalDynOffset(Body);
    +      In::RelaDyn->addReloc(
    +          {Target->TlsDescRel, InX::Got, Off, !IsPreemptible, &Body, 0});
         }
         if (Expr != R_TLSDESC_CALL)
           C.Relocations.push_back({Expr, Type, Offset, Addend, &Body});
    @@ -224,10 +224,10 @@ handleTlsRelocation(uint32_t Type, Symbo
               {R_RELAX_TLS_LD_TO_LE, Type, Offset, Addend, &Body});
           return 2;
         }
    -    if (In::Got->addTlsIndex())
    -      In::RelaDyn->addReloc({Target->TlsModuleIndexRel, In::Got,
    -                                   In::Got->getTlsIndexOff(), false,
    -                                   nullptr, 0});
    +    if (InX::Got->addTlsIndex())
    +      In::RelaDyn->addReloc({Target->TlsModuleIndexRel, InX::Got,
    +                                   InX::Got->getTlsIndexOff(), false, nullptr,
    +                                   0});
         C.Relocations.push_back({Expr, Type, Offset, Addend, &Body});
         return 1;
       }
    @@ -242,19 +242,19 @@ handleTlsRelocation(uint32_t Type, Symbo
       if (isRelExprOneOf(Expr)) {
         if (Config->Shared) {
    -      if (In::Got->addDynTlsEntry(Body)) {
    -        uint64_t Off = In::Got->getGlobalDynOffset(Body);
    +      if (InX::Got->addDynTlsEntry(Body)) {
    +        uint64_t Off = InX::Got->getGlobalDynOffset(Body);
             In::RelaDyn->addReloc(
    -            {Target->TlsModuleIndexRel, In::Got, Off, false, &Body, 0});
    +            {Target->TlsModuleIndexRel, InX::Got, Off, false, &Body, 0});
     
             // If the symbol is preemptible we need the dynamic linker to write
             // the offset too.
             uint64_t OffsetOff = Off + Config->Wordsize;
             if (IsPreemptible)
    -          In::RelaDyn->addReloc({Target->TlsOffsetRel, In::Got,
    -                                       OffsetOff, false, &Body, 0});
    +          In::RelaDyn->addReloc(
    +              {Target->TlsOffsetRel, InX::Got, OffsetOff, false, &Body, 0});
             else
    -          In::Got->Relocations.push_back(
    +          InX::Got->Relocations.push_back(
                   {R_ABS, Target->TlsOffsetRel, OffsetOff, 0, &Body});
           }
           C.Relocations.push_back({Expr, Type, Offset, Addend, &Body});
    @@ -268,8 +268,8 @@ handleTlsRelocation(uint32_t Type, Symbo
               {Target->adjustRelaxExpr(Type, nullptr, R_RELAX_TLS_GD_TO_IE), Type,
                Offset, Addend, &Body});
           if (!Body.isInGot()) {
    -        In::Got->addEntry(Body);
    -        In::RelaDyn->addReloc({Target->TlsGotRel, In::Got,
    +        InX::Got->addEntry(Body);
    +        In::RelaDyn->addReloc({Target->TlsGotRel, InX::Got,
                                          Body.getGotOffset(), false, &Body, 0});
           }
         } else {
    @@ -518,7 +518,7 @@ template  static void addCop
       // See if this symbol is in a read-only segment. If so, preserve the symbol's
       // memory protection by reserving space in the .bss.rel.ro section.
       bool IsReadOnly = isReadOnly(SS);
    -  BssSection *Sec = IsReadOnly ? In::BssRelRo : In::Bss;
    +  BssSection *Sec = IsReadOnly ? InX::BssRelRo : InX::Bss;
       uint64_t Off = Sec->reserveSpace(SymSize, SS->getAlignment());
     
       // Look through the DSO's dynamic symbol table for aliases and create a
    @@ -774,7 +774,7 @@ static void addPltEntry(PltSection *Plt,
     
     template 
     static void addGotEntry(SymbolBody &Sym, bool Preemptible) {
    -  In::Got->addEntry(Sym);
    +  InX::Got->addEntry(Sym);
     
       uint64_t Off = Sym.getGotOffset();
       uint32_t DynType;
    @@ -792,10 +792,10 @@ static void addGotEntry(SymbolBody &Sym,
       bool Constant = !Preemptible && !(Config->Pic && !isAbsolute(Sym));
       if (!Constant)
         In::RelaDyn->addReloc(
    -        {DynType, In::Got, Off, !Preemptible, &Sym, 0});
    +        {DynType, InX::Got, Off, !Preemptible, &Sym, 0});
     
       if (Constant || (!Config->IsRela && !Preemptible))
    -    In::Got->Relocations.push_back({Expr, DynType, Off, 0, &Sym});
    +    InX::Got->Relocations.push_back({Expr, DynType, Off, 0, &Sym});
     }
     
     // The reason we have to do this early scan is as follows
    @@ -856,7 +856,7 @@ static void scanRelocs(InputSectionBase 
         // needs it to be created. Here we request for that.
         if (isRelExprOneOf(Expr))
    -      In::Got->HasGotOffRel = true;
    +      InX::Got->HasGotOffRel = true;
     
         // Read an addend.
         int64_t Addend = computeAddend(Rel, Sec.Data.data());
    @@ -874,11 +874,11 @@ static void scanRelocs(InputSectionBase 
         // If a relocation needs PLT, we create PLT and GOTPLT slots for the symbol.
         if (needsPlt(Expr) && !Body.isInPlt()) {
           if (Body.isGnuIFunc() && !Preemptible)
    -        addPltEntry(InX::Iplt, In::IgotPlt, In::RelaIplt,
    +        addPltEntry(InX::Iplt, InX::IgotPlt, In::RelaIplt,
                         Target->IRelativeRel, Body, true);
           else
    -        addPltEntry(InX::Plt, In::GotPlt, In::RelaPlt,
    -                    Target->PltRel, Body, !Preemptible);
    +        addPltEntry(InX::Plt, InX::GotPlt, In::RelaPlt, Target->PltRel,
    +                    Body, !Preemptible);
         }
     
         // Create a GOT slot if a relocation needs GOT.
    @@ -891,9 +891,9 @@ static void scanRelocs(InputSectionBase 
             // See "Global Offset Table" in Chapter 5 in the following document
             // for detailed description:
             // ftp://www.linux-mips.org/pub/linux/mips/doc/ABI/mipsabi.pdf
    -        In::MipsGot->addEntry(Body, Addend, Expr);
    +        InX::MipsGot->addEntry(Body, Addend, Expr);
             if (Body.isTls() && Body.isPreemptible())
    -          In::RelaDyn->addReloc({Target->TlsGotRel, In::MipsGot,
    +          In::RelaDyn->addReloc({Target->TlsGotRel, InX::MipsGot,
                                            Body.getGotOffset(), false, &Body, 0});
           } else if (!Body.isInGot()) {
             addGotEntry(Body, Preemptible);
    @@ -927,7 +927,7 @@ static void scanRelocs(InputSectionBase 
           // a dynamic relocation.
           // ftp://www.linux-mips.org/pub/linux/mips/doc/ABI/mipsabi.pdf p.4-19
           if (Config->EMachine == EM_MIPS)
    -        In::MipsGot->addEntry(Body, Addend, Expr);
    +        InX::MipsGot->addEntry(Body, Addend, Expr);
           continue;
         }
     
    
    Modified: vendor/lld/dist/ELF/ScriptParser.cpp
    ==============================================================================
    --- vendor/lld/dist/ELF/ScriptParser.cpp	Tue May 16 19:47:39 2017	(r318375)
    +++ vendor/lld/dist/ELF/ScriptParser.cpp	Tue May 16 19:47:41 2017	(r318376)
    @@ -639,7 +639,7 @@ ScriptParser::readOutputSectionDescripti
     // We are compatible with ld.gold because it's easier to implement.
     uint32_t ScriptParser::parseFill(StringRef Tok) {
       uint32_t V = 0;
    -  if (Tok.getAsInteger(0, V))
    +  if (!to_integer(Tok, V))
         setError("invalid filler expression: " + Tok);
     
       uint32_t Buf;
    @@ -778,23 +778,23 @@ static Optional parseInt(Strin
     
       // Hexadecimal
       uint64_t Val;
    -  if (Tok.startswith_lower("0x") && !Tok.substr(2).getAsInteger(16, Val))
    +  if (Tok.startswith_lower("0x") && to_integer(Tok.substr(2), Val, 16))
         return Val;
    -  if (Tok.endswith_lower("H") && !Tok.drop_back().getAsInteger(16, Val))
    +  if (Tok.endswith_lower("H") && to_integer(Tok.drop_back(), Val, 16))
         return Val;
     
       // Decimal
       if (Tok.endswith_lower("K")) {
    -    if (Tok.drop_back().getAsInteger(10, Val))
    +    if (!to_integer(Tok.drop_back(), Val, 10))
           return None;
         return Val * 1024;
       }
       if (Tok.endswith_lower("M")) {
    -    if (Tok.drop_back().getAsInteger(10, Val))
    +    if (!to_integer(Tok.drop_back(), Val, 10))
           return None;
         return Val * 1024 * 1024;
       }
    -  if (Tok.getAsInteger(10, Val))
    +  if (!to_integer(Tok, Val, 10))
         return None;
       return Val;
     }
    @@ -900,10 +900,22 @@ Expr ScriptParser::readPrimary() {
         StringRef Name = readParenLiteral();
         return [=] { return Script->isDefined(Name) ? 1 : 0; };
       }
    +  if (Tok == "LENGTH") {
    +    StringRef Name = readParenLiteral();
    +    if (Script->Opt.MemoryRegions.count(Name) == 0)
    +      setError("memory region not defined: " + Name);
    +    return [=] { return Script->Opt.MemoryRegions[Name].Length; };
    +  }
       if (Tok == "LOADADDR") {
         StringRef Name = readParenLiteral();
         return [=] { return Script->getOutputSection(Location, Name)->getLMA(); };
       }
    +  if (Tok == "ORIGIN") {
    +    StringRef Name = readParenLiteral();
    +    if (Script->Opt.MemoryRegions.count(Name) == 0)
    +      setError("memory region not defined: " + Name);
    +    return [=] { return Script->Opt.MemoryRegions[Name].Origin; };
    +  }
       if (Tok == "SEGMENT_START") {
         expect("(");
         skip();
    
    Modified: vendor/lld/dist/ELF/Strings.cpp
    ==============================================================================
    --- vendor/lld/dist/ELF/Strings.cpp	Tue May 16 19:47:39 2017	(r318375)
    +++ vendor/lld/dist/ELF/Strings.cpp	Tue May 16 19:47:41 2017	(r318376)
    @@ -46,7 +46,7 @@ int elf::getPriority(StringRef S) {
       if (Pos == StringRef::npos)
         return 65536;
       int V;
    -  if (S.substr(Pos + 1).getAsInteger(10, V))
    +  if (!to_integer(S.substr(Pos + 1), V, 10))
         return 65536;
       return V;
     }
    @@ -68,7 +68,7 @@ std::vector elf::parseHex(Strin
         StringRef B = S.substr(0, 2);
         S = S.substr(2);
         uint8_t H;
    -    if (B.getAsInteger(16, H)) {
    +    if (!to_integer(B, H, 16)) {
           error("not a hexadecimal value: " + B);
           return {};
         }
    
    Modified: vendor/lld/dist/ELF/Symbols.cpp
    ==============================================================================
    --- vendor/lld/dist/ELF/Symbols.cpp	Tue May 16 19:47:39 2017	(r318375)
    +++ vendor/lld/dist/ELF/Symbols.cpp	Tue May 16 19:47:41 2017	(r318376)
    @@ -163,8 +163,8 @@ uint64_t SymbolBody::getVA(int64_t Adden
       return OutVA + Addend;
     }
     
    -template  typename ELFT::uint SymbolBody::getGotVA() const {
    -  return In::Got->getVA() + getGotOffset();
    +uint64_t SymbolBody::getGotVA() const {
    +  return InX::Got->getVA() + getGotOffset();
     }
     
     uint64_t SymbolBody::getGotOffset() const {
    @@ -370,11 +370,6 @@ std::string lld::toString(const SymbolBo
       return B.getName();
     }
     
    -template uint32_t SymbolBody::template getGotVA() const;
    -template uint32_t SymbolBody::template getGotVA() const;
    -template uint64_t SymbolBody::template getGotVA() const;
    -template uint64_t SymbolBody::template getGotVA() const;
    -
     template uint32_t SymbolBody::template getSize() const;
     template uint32_t SymbolBody::template getSize() const;
     template uint64_t SymbolBody::template getSize() const;
    
    Modified: vendor/lld/dist/ELF/Symbols.h
    ==============================================================================
    --- vendor/lld/dist/ELF/Symbols.h	Tue May 16 19:47:39 2017	(r318375)
    +++ vendor/lld/dist/ELF/Symbols.h	Tue May 16 19:47:41 2017	(r318376)
    @@ -78,7 +78,7 @@ public:
       uint64_t getVA(int64_t Addend = 0) const;
     
       uint64_t getGotOffset() const;
    -  template  typename ELFT::uint getGotVA() const;
    +  uint64_t getGotVA() const;
       uint64_t getGotPltOffset() const;
       uint64_t getGotPltVA() const;
       uint64_t getPltVA() const;
    
    Modified: vendor/lld/dist/ELF/SyntheticSections.cpp
    ==============================================================================
    --- vendor/lld/dist/ELF/SyntheticSections.cpp	Tue May 16 19:47:39 2017	(r318375)
    +++ vendor/lld/dist/ELF/SyntheticSections.cpp	Tue May 16 19:47:41 2017	(r318376)
    @@ -186,7 +186,7 @@ template  void MipsOptionsSe
       Options->size = getSize();
     
       if (!Config->Relocatable)
    -    Reginfo.ri_gp_value = In::MipsGot->getGp();
    +    Reginfo.ri_gp_value = InX::MipsGot->getGp();
       memcpy(Buf + sizeof(Elf_Mips_Options), &Reginfo, sizeof(Reginfo));
     }
     
    @@ -244,7 +244,7 @@ MipsReginfoSection::MipsReginfoSec
     
     template  void MipsReginfoSection::writeTo(uint8_t *Buf) {
       if (!Config->Relocatable)
    -    Reginfo.ri_gp_value = In::MipsGot->getGp();
    +    Reginfo.ri_gp_value = InX::MipsGot->getGp();
       memcpy(Buf, &Reginfo, sizeof(Reginfo));
     }
     
    @@ -293,13 +293,12 @@ InputSection *elf::createInterpSection()
       return Sec;
     }
     
    -template 
     SymbolBody *elf::addSyntheticLocal(StringRef Name, uint8_t Type, uint64_t Value,
                                        uint64_t Size, InputSectionBase *Section) {
       auto *S = make(Name, /*IsLocal*/ true, STV_DEFAULT, Type,
                                      Value, Size, Section, nullptr);
    -  if (In::SymTab)
    -    In::SymTab->addSymbol(S);
    +  if (InX::SymTab)
    +    InX::SymTab->addSymbol(S);
       return S;
     }
     
    @@ -356,7 +355,7 @@ void BuildIdSection::computeHash(
       std::vector Hashes(Chunks.size() * HashSize);
     
       // Compute hash values.
    -  parallelFor(0, Chunks.size(), [&](size_t I) {
    +  parallelForEachN(0, Chunks.size(), [&](size_t I) {
         HashFn(Hashes.data() + I * HashSize, Chunks[I]);
       });
     
    @@ -618,17 +617,16 @@ template  void EhFrameSectio
       }
     }
     
    -template 
    -GotSection::GotSection()
    +GotBaseSection::GotBaseSection()
         : SyntheticSection(SHF_ALLOC | SHF_WRITE, SHT_PROGBITS,
                            Target->GotEntrySize, ".got") {}
     
    -template  void GotSection::addEntry(SymbolBody &Sym) {
    +void GotBaseSection::addEntry(SymbolBody &Sym) {
       Sym.GotIndex = NumEntries;
       ++NumEntries;
     }
     
    -template  bool GotSection::addDynTlsEntry(SymbolBody &Sym) {
    +bool GotBaseSection::addDynTlsEntry(SymbolBody &Sym) {
       if (Sym.GlobalDynIndex != -1U)
         return false;
       Sym.GlobalDynIndex = NumEntries;
    @@ -639,7 +637,7 @@ template  bool GotSection bool GotSection::addTlsIndex() {
    +bool GotBaseSection::addTlsIndex() {
       if (TlsIndexOff != uint32_t(-1))
         return false;
       TlsIndexOff = NumEntries * Config->Wordsize;
    @@ -647,21 +645,19 @@ template  bool GotSection
    -uint64_t GotSection::getGlobalDynAddr(const SymbolBody &B) const {
    +uint64_t GotBaseSection::getGlobalDynAddr(const SymbolBody &B) const {
       return this->getVA() + B.GlobalDynIndex * Config->Wordsize;
     }
     
    -template 
    -uint64_t GotSection::getGlobalDynOffset(const SymbolBody &B) const {
    +uint64_t GotBaseSection::getGlobalDynOffset(const SymbolBody &B) const {
       return B.GlobalDynIndex * Config->Wordsize;
     }
     
    
    *** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
    
    From owner-svn-src-vendor@freebsd.org  Tue May 16 19:48:03 2017
    Return-Path: 
    Delivered-To: svn-src-vendor@mailman.ysv.freebsd.org
    Received: from mx1.freebsd.org (mx1.freebsd.org
     [IPv6:2001:1900:2254:206a::19:1])
     by mailman.ysv.freebsd.org (Postfix) with ESMTP id D984DD70603;
     Tue, 16 May 2017 19:48:03 +0000 (UTC) (envelope-from dim@FreeBSD.org)
    Received: from repo.freebsd.org (repo.freebsd.org
     [IPv6:2610:1c1:1:6068::e6a:0])
     (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
     (Client did not present a certificate)
     by mx1.freebsd.org (Postfix) with ESMTPS id 73124211;
     Tue, 16 May 2017 19:48:03 +0000 (UTC) (envelope-from dim@FreeBSD.org)
    Received: from repo.freebsd.org ([127.0.1.37])
     by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v4GJm2Z5097467;
     Tue, 16 May 2017 19:48:02 GMT (envelope-from dim@FreeBSD.org)
    Received: (from dim@localhost)
     by repo.freebsd.org (8.15.2/8.15.2/Submit) id v4GJlxPv097432;
     Tue, 16 May 2017 19:47:59 GMT (envelope-from dim@FreeBSD.org)
    Message-Id: <201705161947.v4GJlxPv097432@repo.freebsd.org>
    X-Authentication-Warning: repo.freebsd.org: dim set sender to dim@FreeBSD.org
     using -f
    From: Dimitry Andric 
    Date: Tue, 16 May 2017 19:47:59 +0000 (UTC)
    To: src-committers@freebsd.org, svn-src-all@freebsd.org,
     svn-src-vendor@freebsd.org
    Subject: svn commit: r318378 - in vendor/lldb/dist: include/lldb
     include/lldb/API include/lldb/Breakpoint include/lldb/Core
     include/lldb/DataFormatters include/lldb/Expression include/lldb/Host
     include/lldb...
    X-SVN-Group: vendor
    MIME-Version: 1.0
    Content-Type: text/plain; charset=UTF-8
    Content-Transfer-Encoding: 8bit
    X-BeenThere: svn-src-vendor@freebsd.org
    X-Mailman-Version: 2.1.23
    Precedence: list
    List-Id: SVN commit messages for the vendor work area tree
     
    List-Unsubscribe: , 
     
    List-Archive: 
    List-Post: 
    List-Help: 
    List-Subscribe: ,
     
    X-List-Received-Date: Tue, 16 May 2017 19:48:04 -0000
    
    Author: dim
    Date: Tue May 16 19:47:58 2017
    New Revision: 318378
    URL: https://svnweb.freebsd.org/changeset/base/318378
    
    Log:
      Vendor import of lldb trunk r303197:
      https://llvm.org/svn/llvm-project/lldb/trunk@303197
    
    Added:
      vendor/lldb/dist/include/lldb/Utility/Status.h   (contents, props changed)
      vendor/lldb/dist/packages/Python/lldbsuite/test/lang/cpp/class-template-parameter-pack/
      vendor/lldb/dist/packages/Python/lldbsuite/test/lang/cpp/class-template-parameter-pack/Makefile   (contents, props changed)
      vendor/lldb/dist/packages/Python/lldbsuite/test/lang/cpp/class-template-parameter-pack/TestClassTemplateParameterPack.py   (contents, props changed)
      vendor/lldb/dist/packages/Python/lldbsuite/test/lang/cpp/class-template-parameter-pack/main.cpp   (contents, props changed)
      vendor/lldb/dist/packages/Python/lldbsuite/test/lang/cpp/function-template-parameter-pack/
      vendor/lldb/dist/packages/Python/lldbsuite/test/lang/cpp/function-template-parameter-pack/Makefile   (contents, props changed)
      vendor/lldb/dist/packages/Python/lldbsuite/test/lang/cpp/function-template-parameter-pack/TestFunctionTemplateParameterPack.py   (contents, props changed)
      vendor/lldb/dist/packages/Python/lldbsuite/test/lang/cpp/function-template-parameter-pack/main.cpp   (contents, props changed)
      vendor/lldb/dist/packages/Python/lldbsuite/test/lang/objc/ptr_refs/
      vendor/lldb/dist/packages/Python/lldbsuite/test/lang/objc/ptr_refs/Makefile   (contents, props changed)
      vendor/lldb/dist/packages/Python/lldbsuite/test/lang/objc/ptr_refs/TestPtrRefsObjC.py   (contents, props changed)
      vendor/lldb/dist/packages/Python/lldbsuite/test/lang/objc/ptr_refs/main.m
      vendor/lldb/dist/source/Utility/Status.cpp   (contents, props changed)
      vendor/lldb/dist/unittests/Utility/StatusTest.cpp   (contents, props changed)
    Deleted:
      vendor/lldb/dist/include/lldb/Utility/Error.h
      vendor/lldb/dist/source/Utility/Error.cpp
      vendor/lldb/dist/unittests/Utility/ErrorTest.cpp
    Modified:
      vendor/lldb/dist/include/lldb/API/SBError.h
      vendor/lldb/dist/include/lldb/API/SBPlatform.h
      vendor/lldb/dist/include/lldb/API/SBTarget.h
      vendor/lldb/dist/include/lldb/Breakpoint/Breakpoint.h
      vendor/lldb/dist/include/lldb/Breakpoint/BreakpointID.h
      vendor/lldb/dist/include/lldb/Breakpoint/BreakpointLocation.h
      vendor/lldb/dist/include/lldb/Breakpoint/BreakpointOptions.h
      vendor/lldb/dist/include/lldb/Breakpoint/BreakpointResolver.h
      vendor/lldb/dist/include/lldb/Breakpoint/BreakpointResolverAddress.h
      vendor/lldb/dist/include/lldb/Breakpoint/BreakpointResolverFileLine.h
      vendor/lldb/dist/include/lldb/Breakpoint/BreakpointResolverFileRegex.h
      vendor/lldb/dist/include/lldb/Breakpoint/BreakpointResolverName.h
      vendor/lldb/dist/include/lldb/Breakpoint/Watchpoint.h
      vendor/lldb/dist/include/lldb/Core/Communication.h
      vendor/lldb/dist/include/lldb/Core/Connection.h
      vendor/lldb/dist/include/lldb/Core/Debugger.h
      vendor/lldb/dist/include/lldb/Core/FormatEntity.h
      vendor/lldb/dist/include/lldb/Core/MappedHash.h
      vendor/lldb/dist/include/lldb/Core/Module.h
      vendor/lldb/dist/include/lldb/Core/ModuleList.h
      vendor/lldb/dist/include/lldb/Core/PluginManager.h
      vendor/lldb/dist/include/lldb/Core/RegisterValue.h
      vendor/lldb/dist/include/lldb/Core/Scalar.h
      vendor/lldb/dist/include/lldb/Core/SearchFilter.h
      vendor/lldb/dist/include/lldb/Core/StructuredData.h
      vendor/lldb/dist/include/lldb/Core/StructuredDataImpl.h
      vendor/lldb/dist/include/lldb/Core/Timer.h
      vendor/lldb/dist/include/lldb/Core/UserSettingsController.h
      vendor/lldb/dist/include/lldb/Core/Value.h
      vendor/lldb/dist/include/lldb/Core/ValueObject.h
      vendor/lldb/dist/include/lldb/Core/ValueObjectConstResult.h
      vendor/lldb/dist/include/lldb/Core/ValueObjectConstResultCast.h
      vendor/lldb/dist/include/lldb/Core/ValueObjectConstResultChild.h
      vendor/lldb/dist/include/lldb/Core/ValueObjectConstResultImpl.h
      vendor/lldb/dist/include/lldb/Core/ValueObjectDynamicValue.h
      vendor/lldb/dist/include/lldb/Core/ValueObjectRegister.h
      vendor/lldb/dist/include/lldb/Core/ValueObjectSyntheticFilter.h
      vendor/lldb/dist/include/lldb/Core/ValueObjectVariable.h
      vendor/lldb/dist/include/lldb/DataFormatters/TypeSummary.h
      vendor/lldb/dist/include/lldb/Expression/DWARFExpression.h
      vendor/lldb/dist/include/lldb/Expression/ExpressionParser.h
      vendor/lldb/dist/include/lldb/Expression/IRExecutionUnit.h
      vendor/lldb/dist/include/lldb/Expression/IRInterpreter.h
      vendor/lldb/dist/include/lldb/Expression/IRMemoryMap.h
      vendor/lldb/dist/include/lldb/Expression/LLVMUserExpression.h
      vendor/lldb/dist/include/lldb/Expression/Materializer.h
      vendor/lldb/dist/include/lldb/Expression/REPL.h
      vendor/lldb/dist/include/lldb/Expression/UserExpression.h
      vendor/lldb/dist/include/lldb/Expression/UtilityFunction.h
      vendor/lldb/dist/include/lldb/Host/File.h
      vendor/lldb/dist/include/lldb/Host/FileCache.h
      vendor/lldb/dist/include/lldb/Host/FileSystem.h
      vendor/lldb/dist/include/lldb/Host/Host.h
      vendor/lldb/dist/include/lldb/Host/HostNativeProcessBase.h
      vendor/lldb/dist/include/lldb/Host/HostNativeThreadBase.h
      vendor/lldb/dist/include/lldb/Host/HostProcess.h
      vendor/lldb/dist/include/lldb/Host/HostThread.h
      vendor/lldb/dist/include/lldb/Host/IOObject.h
      vendor/lldb/dist/include/lldb/Host/LockFileBase.h
      vendor/lldb/dist/include/lldb/Host/MainLoop.h
      vendor/lldb/dist/include/lldb/Host/MainLoopBase.h
      vendor/lldb/dist/include/lldb/Host/MonitoringProcessLauncher.h
      vendor/lldb/dist/include/lldb/Host/PipeBase.h
      vendor/lldb/dist/include/lldb/Host/ProcessLauncher.h
      vendor/lldb/dist/include/lldb/Host/Socket.h
      vendor/lldb/dist/include/lldb/Host/ThreadLauncher.h
      vendor/lldb/dist/include/lldb/Host/common/NativeBreakpoint.h
      vendor/lldb/dist/include/lldb/Host/common/NativeBreakpointList.h
      vendor/lldb/dist/include/lldb/Host/common/NativeProcessProtocol.h
      vendor/lldb/dist/include/lldb/Host/common/NativeRegisterContext.h
      vendor/lldb/dist/include/lldb/Host/common/NativeThreadProtocol.h
      vendor/lldb/dist/include/lldb/Host/common/NativeWatchpointList.h
      vendor/lldb/dist/include/lldb/Host/common/SoftwareBreakpoint.h
      vendor/lldb/dist/include/lldb/Host/common/TCPSocket.h
      vendor/lldb/dist/include/lldb/Host/common/UDPSocket.h
      vendor/lldb/dist/include/lldb/Host/posix/ConnectionFileDescriptorPosix.h
      vendor/lldb/dist/include/lldb/Host/posix/DomainSocket.h
      vendor/lldb/dist/include/lldb/Host/posix/HostProcessPosix.h
      vendor/lldb/dist/include/lldb/Host/posix/HostThreadPosix.h
      vendor/lldb/dist/include/lldb/Host/posix/LockFilePosix.h
      vendor/lldb/dist/include/lldb/Host/posix/PipePosix.h
      vendor/lldb/dist/include/lldb/Host/posix/ProcessLauncherPosix.h
      vendor/lldb/dist/include/lldb/Host/posix/ProcessLauncherPosixFork.h
      vendor/lldb/dist/include/lldb/Host/windows/ConnectionGenericFileWindows.h
      vendor/lldb/dist/include/lldb/Host/windows/HostProcessWindows.h
      vendor/lldb/dist/include/lldb/Host/windows/HostThreadWindows.h
      vendor/lldb/dist/include/lldb/Host/windows/LockFileWindows.h
      vendor/lldb/dist/include/lldb/Host/windows/PipeWindows.h
      vendor/lldb/dist/include/lldb/Host/windows/ProcessLauncherWindows.h
      vendor/lldb/dist/include/lldb/Interpreter/Args.h
      vendor/lldb/dist/include/lldb/Interpreter/CommandInterpreter.h
      vendor/lldb/dist/include/lldb/Interpreter/CommandReturnObject.h
      vendor/lldb/dist/include/lldb/Interpreter/OptionGroupArchitecture.h
      vendor/lldb/dist/include/lldb/Interpreter/OptionGroupBoolean.h
      vendor/lldb/dist/include/lldb/Interpreter/OptionGroupFile.h
      vendor/lldb/dist/include/lldb/Interpreter/OptionGroupFormat.h
      vendor/lldb/dist/include/lldb/Interpreter/OptionGroupOutputFile.h
      vendor/lldb/dist/include/lldb/Interpreter/OptionGroupPlatform.h
      vendor/lldb/dist/include/lldb/Interpreter/OptionGroupString.h
      vendor/lldb/dist/include/lldb/Interpreter/OptionGroupUInt64.h
      vendor/lldb/dist/include/lldb/Interpreter/OptionGroupUUID.h
      vendor/lldb/dist/include/lldb/Interpreter/OptionGroupValueObjectDisplay.h
      vendor/lldb/dist/include/lldb/Interpreter/OptionGroupVariable.h
      vendor/lldb/dist/include/lldb/Interpreter/OptionGroupWatchpoint.h
      vendor/lldb/dist/include/lldb/Interpreter/OptionValue.h
      vendor/lldb/dist/include/lldb/Interpreter/OptionValueArch.h
      vendor/lldb/dist/include/lldb/Interpreter/OptionValueArray.h
      vendor/lldb/dist/include/lldb/Interpreter/OptionValueBoolean.h
      vendor/lldb/dist/include/lldb/Interpreter/OptionValueChar.h
      vendor/lldb/dist/include/lldb/Interpreter/OptionValueDictionary.h
      vendor/lldb/dist/include/lldb/Interpreter/OptionValueEnumeration.h
      vendor/lldb/dist/include/lldb/Interpreter/OptionValueFileSpec.h
      vendor/lldb/dist/include/lldb/Interpreter/OptionValueFileSpecList.h
      vendor/lldb/dist/include/lldb/Interpreter/OptionValueFormat.h
      vendor/lldb/dist/include/lldb/Interpreter/OptionValueFormatEntity.h
      vendor/lldb/dist/include/lldb/Interpreter/OptionValueLanguage.h
      vendor/lldb/dist/include/lldb/Interpreter/OptionValuePathMappings.h
      vendor/lldb/dist/include/lldb/Interpreter/OptionValueProperties.h
      vendor/lldb/dist/include/lldb/Interpreter/OptionValueRegex.h
      vendor/lldb/dist/include/lldb/Interpreter/OptionValueSInt64.h
      vendor/lldb/dist/include/lldb/Interpreter/OptionValueString.h
      vendor/lldb/dist/include/lldb/Interpreter/OptionValueUInt64.h
      vendor/lldb/dist/include/lldb/Interpreter/OptionValueUUID.h
      vendor/lldb/dist/include/lldb/Interpreter/Options.h
      vendor/lldb/dist/include/lldb/Interpreter/ScriptInterpreter.h
      vendor/lldb/dist/include/lldb/Symbol/ClangASTContext.h
      vendor/lldb/dist/include/lldb/Symbol/ObjectFile.h
      vendor/lldb/dist/include/lldb/Symbol/SymbolContext.h
      vendor/lldb/dist/include/lldb/Symbol/Variable.h
      vendor/lldb/dist/include/lldb/Target/ABI.h
      vendor/lldb/dist/include/lldb/Target/DynamicLoader.h
      vendor/lldb/dist/include/lldb/Target/Language.h
      vendor/lldb/dist/include/lldb/Target/LanguageRuntime.h
      vendor/lldb/dist/include/lldb/Target/Memory.h
      vendor/lldb/dist/include/lldb/Target/ModuleCache.h
      vendor/lldb/dist/include/lldb/Target/ObjCLanguageRuntime.h
      vendor/lldb/dist/include/lldb/Target/PathMappingList.h
      vendor/lldb/dist/include/lldb/Target/Platform.h
      vendor/lldb/dist/include/lldb/Target/Process.h
      vendor/lldb/dist/include/lldb/Target/ProcessLaunchInfo.h
      vendor/lldb/dist/include/lldb/Target/ProcessStructReader.h
      vendor/lldb/dist/include/lldb/Target/RegisterContext.h
      vendor/lldb/dist/include/lldb/Target/StackFrame.h
      vendor/lldb/dist/include/lldb/Target/StructuredDataPlugin.h
      vendor/lldb/dist/include/lldb/Target/Target.h
      vendor/lldb/dist/include/lldb/Target/TargetList.h
      vendor/lldb/dist/include/lldb/Target/Thread.h
      vendor/lldb/dist/include/lldb/Target/ThreadSpec.h
      vendor/lldb/dist/include/lldb/Utility/JSON.h
      vendor/lldb/dist/include/lldb/Utility/RegularExpression.h
      vendor/lldb/dist/include/lldb/Utility/SelectHelper.h
      vendor/lldb/dist/include/lldb/Utility/UUID.h
      vendor/lldb/dist/include/lldb/lldb-forward.h
      vendor/lldb/dist/include/lldb/lldb-private-enumerations.h
      vendor/lldb/dist/include/lldb/lldb-private-interfaces.h
      vendor/lldb/dist/include/lldb/lldb-private-types.h
      vendor/lldb/dist/lldb.xcodeproj/project.pbxproj
      vendor/lldb/dist/packages/Python/lldbsuite/test/functionalities/return-value/TestReturnValue.py
      vendor/lldb/dist/packages/Python/lldbsuite/test/functionalities/watchpoint/variable_out_of_scope/TestWatchedVarHitWhenInScope.py
      vendor/lldb/dist/scripts/Xcode/repo.py
      vendor/lldb/dist/source/API/SBBreakpoint.cpp
      vendor/lldb/dist/source/API/SBBreakpointLocation.cpp
      vendor/lldb/dist/source/API/SBCommandReturnObject.cpp
      vendor/lldb/dist/source/API/SBDebugger.cpp
      vendor/lldb/dist/source/API/SBError.cpp
      vendor/lldb/dist/source/API/SBFrame.cpp
      vendor/lldb/dist/source/API/SBHostOS.cpp
      vendor/lldb/dist/source/API/SBModule.cpp
      vendor/lldb/dist/source/API/SBPlatform.cpp
      vendor/lldb/dist/source/API/SBProcess.cpp
      vendor/lldb/dist/source/API/SBStream.cpp
      vendor/lldb/dist/source/API/SBStructuredData.cpp
      vendor/lldb/dist/source/API/SBTarget.cpp
      vendor/lldb/dist/source/API/SBThread.cpp
      vendor/lldb/dist/source/API/SBValue.cpp
      vendor/lldb/dist/source/API/SystemInitializerFull.cpp
      vendor/lldb/dist/source/Breakpoint/Breakpoint.cpp
      vendor/lldb/dist/source/Breakpoint/BreakpointID.cpp
      vendor/lldb/dist/source/Breakpoint/BreakpointIDList.cpp
      vendor/lldb/dist/source/Breakpoint/BreakpointList.cpp
      vendor/lldb/dist/source/Breakpoint/BreakpointLocation.cpp
      vendor/lldb/dist/source/Breakpoint/BreakpointOptions.cpp
      vendor/lldb/dist/source/Breakpoint/BreakpointResolver.cpp
      vendor/lldb/dist/source/Breakpoint/BreakpointResolverAddress.cpp
      vendor/lldb/dist/source/Breakpoint/BreakpointResolverFileLine.cpp
      vendor/lldb/dist/source/Breakpoint/BreakpointResolverFileRegex.cpp
      vendor/lldb/dist/source/Breakpoint/BreakpointResolverName.cpp
      vendor/lldb/dist/source/Breakpoint/Watchpoint.cpp
      vendor/lldb/dist/source/Commands/CommandObjectArgs.cpp
      vendor/lldb/dist/source/Commands/CommandObjectArgs.h
      vendor/lldb/dist/source/Commands/CommandObjectBreakpoint.cpp
      vendor/lldb/dist/source/Commands/CommandObjectBreakpointCommand.cpp
      vendor/lldb/dist/source/Commands/CommandObjectBugreport.cpp
      vendor/lldb/dist/source/Commands/CommandObjectCommands.cpp
      vendor/lldb/dist/source/Commands/CommandObjectDisassemble.cpp
      vendor/lldb/dist/source/Commands/CommandObjectDisassemble.h
      vendor/lldb/dist/source/Commands/CommandObjectExpression.cpp
      vendor/lldb/dist/source/Commands/CommandObjectExpression.h
      vendor/lldb/dist/source/Commands/CommandObjectFrame.cpp
      vendor/lldb/dist/source/Commands/CommandObjectHelp.h
      vendor/lldb/dist/source/Commands/CommandObjectLog.cpp
      vendor/lldb/dist/source/Commands/CommandObjectMemory.cpp
      vendor/lldb/dist/source/Commands/CommandObjectPlatform.cpp
      vendor/lldb/dist/source/Commands/CommandObjectPlugin.cpp
      vendor/lldb/dist/source/Commands/CommandObjectProcess.cpp
      vendor/lldb/dist/source/Commands/CommandObjectRegister.cpp
      vendor/lldb/dist/source/Commands/CommandObjectSettings.cpp
      vendor/lldb/dist/source/Commands/CommandObjectSource.cpp
      vendor/lldb/dist/source/Commands/CommandObjectTarget.cpp
      vendor/lldb/dist/source/Commands/CommandObjectThread.cpp
      vendor/lldb/dist/source/Commands/CommandObjectType.cpp
      vendor/lldb/dist/source/Commands/CommandObjectWatchpoint.cpp
      vendor/lldb/dist/source/Commands/CommandObjectWatchpointCommand.cpp
      vendor/lldb/dist/source/Core/Address.cpp
      vendor/lldb/dist/source/Core/ArchSpec.cpp
      vendor/lldb/dist/source/Core/Communication.cpp
      vendor/lldb/dist/source/Core/Debugger.cpp
      vendor/lldb/dist/source/Core/Disassembler.cpp
      vendor/lldb/dist/source/Core/DynamicLoader.cpp
      vendor/lldb/dist/source/Core/EmulateInstruction.cpp
      vendor/lldb/dist/source/Core/FormatEntity.cpp
      vendor/lldb/dist/source/Core/IOHandler.cpp
      vendor/lldb/dist/source/Core/Mangled.cpp
      vendor/lldb/dist/source/Core/Module.cpp
      vendor/lldb/dist/source/Core/ModuleList.cpp
      vendor/lldb/dist/source/Core/PluginManager.cpp
      vendor/lldb/dist/source/Core/RegisterValue.cpp
      vendor/lldb/dist/source/Core/Scalar.cpp
      vendor/lldb/dist/source/Core/SearchFilter.cpp
      vendor/lldb/dist/source/Core/StructuredData.cpp
      vendor/lldb/dist/source/Core/Timer.cpp
      vendor/lldb/dist/source/Core/UserSettingsController.cpp
      vendor/lldb/dist/source/Core/Value.cpp
      vendor/lldb/dist/source/Core/ValueObject.cpp
      vendor/lldb/dist/source/Core/ValueObjectCast.cpp
      vendor/lldb/dist/source/Core/ValueObjectChild.cpp
      vendor/lldb/dist/source/Core/ValueObjectConstResult.cpp
      vendor/lldb/dist/source/Core/ValueObjectConstResultCast.cpp
      vendor/lldb/dist/source/Core/ValueObjectConstResultChild.cpp
      vendor/lldb/dist/source/Core/ValueObjectConstResultImpl.cpp
      vendor/lldb/dist/source/Core/ValueObjectDynamicValue.cpp
      vendor/lldb/dist/source/Core/ValueObjectMemory.cpp
      vendor/lldb/dist/source/Core/ValueObjectRegister.cpp
      vendor/lldb/dist/source/Core/ValueObjectSyntheticFilter.cpp
      vendor/lldb/dist/source/Core/ValueObjectVariable.cpp
      vendor/lldb/dist/source/DataFormatters/StringPrinter.cpp
      vendor/lldb/dist/source/DataFormatters/TypeFormat.cpp
      vendor/lldb/dist/source/Expression/DWARFExpression.cpp
      vendor/lldb/dist/source/Expression/FunctionCaller.cpp
      vendor/lldb/dist/source/Expression/IRDynamicChecks.cpp
      vendor/lldb/dist/source/Expression/IRExecutionUnit.cpp
      vendor/lldb/dist/source/Expression/IRInterpreter.cpp
      vendor/lldb/dist/source/Expression/IRMemoryMap.cpp
      vendor/lldb/dist/source/Expression/LLVMUserExpression.cpp
      vendor/lldb/dist/source/Expression/Materializer.cpp
      vendor/lldb/dist/source/Expression/REPL.cpp
      vendor/lldb/dist/source/Expression/UserExpression.cpp
      vendor/lldb/dist/source/Expression/UtilityFunction.cpp
      vendor/lldb/dist/source/Host/common/Editline.cpp
      vendor/lldb/dist/source/Host/common/File.cpp
      vendor/lldb/dist/source/Host/common/FileCache.cpp
      vendor/lldb/dist/source/Host/common/Host.cpp
      vendor/lldb/dist/source/Host/common/HostProcess.cpp
      vendor/lldb/dist/source/Host/common/HostThread.cpp
      vendor/lldb/dist/source/Host/common/LockFileBase.cpp
      vendor/lldb/dist/source/Host/common/MainLoop.cpp
      vendor/lldb/dist/source/Host/common/MonitoringProcessLauncher.cpp
      vendor/lldb/dist/source/Host/common/NativeBreakpoint.cpp
      vendor/lldb/dist/source/Host/common/NativeBreakpointList.cpp
      vendor/lldb/dist/source/Host/common/NativeProcessProtocol.cpp
      vendor/lldb/dist/source/Host/common/NativeRegisterContext.cpp
      vendor/lldb/dist/source/Host/common/NativeThreadProtocol.cpp
      vendor/lldb/dist/source/Host/common/NativeWatchpointList.cpp
      vendor/lldb/dist/source/Host/common/PipeBase.cpp
      vendor/lldb/dist/source/Host/common/Socket.cpp
      vendor/lldb/dist/source/Host/common/SoftwareBreakpoint.cpp
      vendor/lldb/dist/source/Host/common/Symbols.cpp
      vendor/lldb/dist/source/Host/common/TCPSocket.cpp
      vendor/lldb/dist/source/Host/common/ThreadLauncher.cpp
      vendor/lldb/dist/source/Host/common/UDPSocket.cpp
      vendor/lldb/dist/source/Host/freebsd/Host.cpp
      vendor/lldb/dist/source/Host/linux/Host.cpp
      vendor/lldb/dist/source/Host/macosx/Host.mm
      vendor/lldb/dist/source/Host/macosx/Symbols.cpp
      vendor/lldb/dist/source/Host/netbsd/Host.cpp
      vendor/lldb/dist/source/Host/openbsd/Host.cpp
      vendor/lldb/dist/source/Host/posix/ConnectionFileDescriptorPosix.cpp
      vendor/lldb/dist/source/Host/posix/DomainSocket.cpp
      vendor/lldb/dist/source/Host/posix/FileSystem.cpp
      vendor/lldb/dist/source/Host/posix/HostProcessPosix.cpp
      vendor/lldb/dist/source/Host/posix/HostThreadPosix.cpp
      vendor/lldb/dist/source/Host/posix/LockFilePosix.cpp
      vendor/lldb/dist/source/Host/posix/PipePosix.cpp
      vendor/lldb/dist/source/Host/posix/ProcessLauncherPosix.cpp
      vendor/lldb/dist/source/Host/posix/ProcessLauncherPosixFork.cpp
      vendor/lldb/dist/source/Host/windows/ConnectionGenericFileWindows.cpp
      vendor/lldb/dist/source/Host/windows/FileSystem.cpp
      vendor/lldb/dist/source/Host/windows/Host.cpp
      vendor/lldb/dist/source/Host/windows/HostProcessWindows.cpp
      vendor/lldb/dist/source/Host/windows/HostThreadWindows.cpp
      vendor/lldb/dist/source/Host/windows/LockFileWindows.cpp
      vendor/lldb/dist/source/Host/windows/PipeWindows.cpp
      vendor/lldb/dist/source/Host/windows/ProcessLauncherWindows.cpp
      vendor/lldb/dist/source/Initialization/SystemInitializerCommon.cpp
      vendor/lldb/dist/source/Interpreter/Args.cpp
      vendor/lldb/dist/source/Interpreter/CommandInterpreter.cpp
      vendor/lldb/dist/source/Interpreter/CommandObject.cpp
      vendor/lldb/dist/source/Interpreter/CommandReturnObject.cpp
      vendor/lldb/dist/source/Interpreter/OptionGroupArchitecture.cpp
      vendor/lldb/dist/source/Interpreter/OptionGroupBoolean.cpp
      vendor/lldb/dist/source/Interpreter/OptionGroupFile.cpp
      vendor/lldb/dist/source/Interpreter/OptionGroupFormat.cpp
      vendor/lldb/dist/source/Interpreter/OptionGroupOutputFile.cpp
      vendor/lldb/dist/source/Interpreter/OptionGroupPlatform.cpp
      vendor/lldb/dist/source/Interpreter/OptionGroupString.cpp
      vendor/lldb/dist/source/Interpreter/OptionGroupUInt64.cpp
      vendor/lldb/dist/source/Interpreter/OptionGroupUUID.cpp
      vendor/lldb/dist/source/Interpreter/OptionGroupValueObjectDisplay.cpp
      vendor/lldb/dist/source/Interpreter/OptionGroupVariable.cpp
      vendor/lldb/dist/source/Interpreter/OptionGroupWatchpoint.cpp
      vendor/lldb/dist/source/Interpreter/OptionValue.cpp
      vendor/lldb/dist/source/Interpreter/OptionValueArch.cpp
      vendor/lldb/dist/source/Interpreter/OptionValueArray.cpp
      vendor/lldb/dist/source/Interpreter/OptionValueBoolean.cpp
      vendor/lldb/dist/source/Interpreter/OptionValueChar.cpp
      vendor/lldb/dist/source/Interpreter/OptionValueDictionary.cpp
      vendor/lldb/dist/source/Interpreter/OptionValueEnumeration.cpp
      vendor/lldb/dist/source/Interpreter/OptionValueFileSpec.cpp
      vendor/lldb/dist/source/Interpreter/OptionValueFileSpecLIst.cpp
      vendor/lldb/dist/source/Interpreter/OptionValueFormat.cpp
      vendor/lldb/dist/source/Interpreter/OptionValueFormatEntity.cpp
      vendor/lldb/dist/source/Interpreter/OptionValueLanguage.cpp
      vendor/lldb/dist/source/Interpreter/OptionValuePathMappings.cpp
      vendor/lldb/dist/source/Interpreter/OptionValueProperties.cpp
      vendor/lldb/dist/source/Interpreter/OptionValueRegex.cpp
      vendor/lldb/dist/source/Interpreter/OptionValueSInt64.cpp
      vendor/lldb/dist/source/Interpreter/OptionValueString.cpp
      vendor/lldb/dist/source/Interpreter/OptionValueUInt64.cpp
      vendor/lldb/dist/source/Interpreter/OptionValueUUID.cpp
      vendor/lldb/dist/source/Interpreter/Options.cpp
      vendor/lldb/dist/source/Interpreter/ScriptInterpreter.cpp
      vendor/lldb/dist/source/Plugins/ABI/MacOSX-arm/ABIMacOSX_arm.cpp
      vendor/lldb/dist/source/Plugins/ABI/MacOSX-arm/ABIMacOSX_arm.h
      vendor/lldb/dist/source/Plugins/ABI/MacOSX-arm64/ABIMacOSX_arm64.cpp
      vendor/lldb/dist/source/Plugins/ABI/MacOSX-arm64/ABIMacOSX_arm64.h
      vendor/lldb/dist/source/Plugins/ABI/MacOSX-i386/ABIMacOSX_i386.cpp
      vendor/lldb/dist/source/Plugins/ABI/MacOSX-i386/ABIMacOSX_i386.h
      vendor/lldb/dist/source/Plugins/ABI/SysV-arm/ABISysV_arm.cpp
      vendor/lldb/dist/source/Plugins/ABI/SysV-arm/ABISysV_arm.h
      vendor/lldb/dist/source/Plugins/ABI/SysV-arm64/ABISysV_arm64.cpp
      vendor/lldb/dist/source/Plugins/ABI/SysV-arm64/ABISysV_arm64.h
      vendor/lldb/dist/source/Plugins/ABI/SysV-hexagon/ABISysV_hexagon.cpp
      vendor/lldb/dist/source/Plugins/ABI/SysV-hexagon/ABISysV_hexagon.h
      vendor/lldb/dist/source/Plugins/ABI/SysV-i386/ABISysV_i386.cpp
      vendor/lldb/dist/source/Plugins/ABI/SysV-i386/ABISysV_i386.h
      vendor/lldb/dist/source/Plugins/ABI/SysV-mips/ABISysV_mips.cpp
      vendor/lldb/dist/source/Plugins/ABI/SysV-mips/ABISysV_mips.h
      vendor/lldb/dist/source/Plugins/ABI/SysV-mips64/ABISysV_mips64.cpp
      vendor/lldb/dist/source/Plugins/ABI/SysV-mips64/ABISysV_mips64.h
      vendor/lldb/dist/source/Plugins/ABI/SysV-ppc/ABISysV_ppc.cpp
      vendor/lldb/dist/source/Plugins/ABI/SysV-ppc/ABISysV_ppc.h
      vendor/lldb/dist/source/Plugins/ABI/SysV-ppc64/ABISysV_ppc64.cpp
      vendor/lldb/dist/source/Plugins/ABI/SysV-ppc64/ABISysV_ppc64.h
      vendor/lldb/dist/source/Plugins/ABI/SysV-s390x/ABISysV_s390x.cpp
      vendor/lldb/dist/source/Plugins/ABI/SysV-s390x/ABISysV_s390x.h
      vendor/lldb/dist/source/Plugins/ABI/SysV-x86_64/ABISysV_x86_64.cpp
      vendor/lldb/dist/source/Plugins/ABI/SysV-x86_64/ABISysV_x86_64.h
      vendor/lldb/dist/source/Plugins/Disassembler/llvm/DisassemblerLLVMC.cpp
      vendor/lldb/dist/source/Plugins/DynamicLoader/Darwin-Kernel/DynamicLoaderDarwinKernel.cpp
      vendor/lldb/dist/source/Plugins/DynamicLoader/Darwin-Kernel/DynamicLoaderDarwinKernel.h
      vendor/lldb/dist/source/Plugins/DynamicLoader/Hexagon-DYLD/DynamicLoaderHexagonDYLD.cpp
      vendor/lldb/dist/source/Plugins/DynamicLoader/Hexagon-DYLD/DynamicLoaderHexagonDYLD.h
      vendor/lldb/dist/source/Plugins/DynamicLoader/Hexagon-DYLD/HexagonDYLDRendezvous.cpp
      vendor/lldb/dist/source/Plugins/DynamicLoader/MacOSX-DYLD/DynamicLoaderDarwin.cpp
      vendor/lldb/dist/source/Plugins/DynamicLoader/MacOSX-DYLD/DynamicLoaderMacOS.cpp
      vendor/lldb/dist/source/Plugins/DynamicLoader/MacOSX-DYLD/DynamicLoaderMacOS.h
      vendor/lldb/dist/source/Plugins/DynamicLoader/MacOSX-DYLD/DynamicLoaderMacOSXDYLD.cpp
      vendor/lldb/dist/source/Plugins/DynamicLoader/MacOSX-DYLD/DynamicLoaderMacOSXDYLD.h
      vendor/lldb/dist/source/Plugins/DynamicLoader/POSIX-DYLD/DYLDRendezvous.cpp
      vendor/lldb/dist/source/Plugins/DynamicLoader/POSIX-DYLD/DynamicLoaderPOSIXDYLD.cpp
      vendor/lldb/dist/source/Plugins/DynamicLoader/POSIX-DYLD/DynamicLoaderPOSIXDYLD.h
      vendor/lldb/dist/source/Plugins/DynamicLoader/Static/DynamicLoaderStatic.cpp
      vendor/lldb/dist/source/Plugins/DynamicLoader/Static/DynamicLoaderStatic.h
      vendor/lldb/dist/source/Plugins/DynamicLoader/Windows-DYLD/DynamicLoaderWindowsDYLD.cpp
      vendor/lldb/dist/source/Plugins/DynamicLoader/Windows-DYLD/DynamicLoaderWindowsDYLD.h
      vendor/lldb/dist/source/Plugins/ExpressionParser/Clang/ClangExpressionDeclMap.cpp
      vendor/lldb/dist/source/Plugins/ExpressionParser/Clang/ClangExpressionParser.cpp
      vendor/lldb/dist/source/Plugins/ExpressionParser/Clang/ClangExpressionParser.h
      vendor/lldb/dist/source/Plugins/ExpressionParser/Clang/ClangUserExpression.cpp
      vendor/lldb/dist/source/Plugins/ExpressionParser/Clang/ClangUserExpression.h
      vendor/lldb/dist/source/Plugins/ExpressionParser/Clang/ClangUtilityFunction.cpp
      vendor/lldb/dist/source/Plugins/ExpressionParser/Clang/IRForTarget.cpp
      vendor/lldb/dist/source/Plugins/ExpressionParser/Clang/IRForTarget.h
      vendor/lldb/dist/source/Plugins/ExpressionParser/Go/GoParser.cpp
      vendor/lldb/dist/source/Plugins/ExpressionParser/Go/GoParser.h
      vendor/lldb/dist/source/Plugins/ExpressionParser/Go/GoUserExpression.cpp
      vendor/lldb/dist/source/Plugins/Instruction/ARM/EmulateInstructionARM.h
      vendor/lldb/dist/source/Plugins/Instruction/ARM64/EmulateInstructionARM64.cpp
      vendor/lldb/dist/source/Plugins/Instruction/ARM64/EmulateInstructionARM64.h
      vendor/lldb/dist/source/Plugins/Instruction/MIPS/EmulateInstructionMIPS.cpp
      vendor/lldb/dist/source/Plugins/Instruction/MIPS/EmulateInstructionMIPS.h
      vendor/lldb/dist/source/Plugins/Instruction/MIPS64/EmulateInstructionMIPS64.cpp
      vendor/lldb/dist/source/Plugins/Instruction/MIPS64/EmulateInstructionMIPS64.h
      vendor/lldb/dist/source/Plugins/InstrumentationRuntime/AddressSanitizer/AddressSanitizerRuntime.cpp
      vendor/lldb/dist/source/Plugins/InstrumentationRuntime/ThreadSanitizer/ThreadSanitizerRuntime.cpp
      vendor/lldb/dist/source/Plugins/JITLoader/GDB/JITLoaderGDB.cpp
      vendor/lldb/dist/source/Plugins/Language/CPlusPlus/BlockPointer.cpp
      vendor/lldb/dist/source/Plugins/Language/CPlusPlus/CxxStringTypes.cpp
      vendor/lldb/dist/source/Plugins/Language/CPlusPlus/LibCxx.cpp
      vendor/lldb/dist/source/Plugins/Language/CPlusPlus/LibCxxList.cpp
      vendor/lldb/dist/source/Plugins/Language/CPlusPlus/LibCxxMap.cpp
      vendor/lldb/dist/source/Plugins/Language/CPlusPlus/LibCxxUnorderedMap.cpp
      vendor/lldb/dist/source/Plugins/Language/CPlusPlus/LibCxxVector.cpp
      vendor/lldb/dist/source/Plugins/Language/CPlusPlus/LibStdcpp.cpp
      vendor/lldb/dist/source/Plugins/Language/CPlusPlus/LibStdcppUniquePointer.cpp
      vendor/lldb/dist/source/Plugins/Language/Go/GoFormatterFunctions.cpp
      vendor/lldb/dist/source/Plugins/Language/Java/JavaFormatterFunctions.cpp
      vendor/lldb/dist/source/Plugins/Language/ObjC/CF.cpp
      vendor/lldb/dist/source/Plugins/Language/ObjC/Cocoa.cpp
      vendor/lldb/dist/source/Plugins/Language/ObjC/NSArray.cpp
      vendor/lldb/dist/source/Plugins/Language/ObjC/NSDictionary.cpp
      vendor/lldb/dist/source/Plugins/Language/ObjC/NSError.cpp
      vendor/lldb/dist/source/Plugins/Language/ObjC/NSException.cpp
      vendor/lldb/dist/source/Plugins/Language/ObjC/NSSet.cpp
      vendor/lldb/dist/source/Plugins/Language/ObjC/NSString.cpp
      vendor/lldb/dist/source/Plugins/LanguageRuntime/CPlusPlus/ItaniumABI/ItaniumABILanguageRuntime.cpp
      vendor/lldb/dist/source/Plugins/LanguageRuntime/Go/GoLanguageRuntime.cpp
      vendor/lldb/dist/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCClassDescriptorV2.cpp
      vendor/lldb/dist/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntime.cpp
      vendor/lldb/dist/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV1.cpp
      vendor/lldb/dist/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV2.cpp
      vendor/lldb/dist/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCTrampolineHandler.cpp
      vendor/lldb/dist/source/Plugins/LanguageRuntime/RenderScript/RenderScriptRuntime/RenderScriptRuntime.cpp
      vendor/lldb/dist/source/Plugins/LanguageRuntime/RenderScript/RenderScriptRuntime/RenderScriptRuntime.h
      vendor/lldb/dist/source/Plugins/LanguageRuntime/RenderScript/RenderScriptRuntime/RenderScriptScriptGroup.cpp
      vendor/lldb/dist/source/Plugins/MemoryHistory/asan/MemoryHistoryASan.cpp
      vendor/lldb/dist/source/Plugins/ObjectContainer/BSD-Archive/ObjectContainerBSDArchive.cpp
      vendor/lldb/dist/source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp
      vendor/lldb/dist/source/Plugins/ObjectFile/ELF/ObjectFileELF.h
      vendor/lldb/dist/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp
      vendor/lldb/dist/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.h
      vendor/lldb/dist/source/Plugins/ObjectFile/PECOFF/ObjectFilePECOFF.cpp
      vendor/lldb/dist/source/Plugins/ObjectFile/PECOFF/ObjectFilePECOFF.h
      vendor/lldb/dist/source/Plugins/ObjectFile/PECOFF/WindowsMiniDump.cpp
      vendor/lldb/dist/source/Plugins/ObjectFile/PECOFF/WindowsMiniDump.h
      vendor/lldb/dist/source/Plugins/OperatingSystem/Go/OperatingSystemGo.cpp
      vendor/lldb/dist/source/Plugins/OperatingSystem/Go/OperatingSystemGo.h
      vendor/lldb/dist/source/Plugins/OperatingSystem/Python/OperatingSystemPython.cpp
      vendor/lldb/dist/source/Plugins/Platform/Android/AdbClient.cpp
      vendor/lldb/dist/source/Plugins/Platform/Android/AdbClient.h
      vendor/lldb/dist/source/Plugins/Platform/Android/PlatformAndroid.cpp
      vendor/lldb/dist/source/Plugins/Platform/Android/PlatformAndroid.h
      vendor/lldb/dist/source/Plugins/Platform/Android/PlatformAndroidRemoteGDBServer.cpp
      vendor/lldb/dist/source/Plugins/Platform/Android/PlatformAndroidRemoteGDBServer.h
      vendor/lldb/dist/source/Plugins/Platform/FreeBSD/PlatformFreeBSD.cpp
      vendor/lldb/dist/source/Plugins/Platform/FreeBSD/PlatformFreeBSD.h
      vendor/lldb/dist/source/Plugins/Platform/Kalimba/PlatformKalimba.cpp
      vendor/lldb/dist/source/Plugins/Platform/Kalimba/PlatformKalimba.h
      vendor/lldb/dist/source/Plugins/Platform/Linux/PlatformLinux.cpp
      vendor/lldb/dist/source/Plugins/Platform/Linux/PlatformLinux.h
      vendor/lldb/dist/source/Plugins/Platform/MacOSX/PlatformAppleSimulator.cpp
      vendor/lldb/dist/source/Plugins/Platform/MacOSX/PlatformAppleSimulator.h
      vendor/lldb/dist/source/Plugins/Platform/MacOSX/PlatformAppleTVSimulator.cpp
      vendor/lldb/dist/source/Plugins/Platform/MacOSX/PlatformAppleTVSimulator.h
      vendor/lldb/dist/source/Plugins/Platform/MacOSX/PlatformAppleWatchSimulator.cpp
      vendor/lldb/dist/source/Plugins/Platform/MacOSX/PlatformAppleWatchSimulator.h
      vendor/lldb/dist/source/Plugins/Platform/MacOSX/PlatformDarwin.cpp
      vendor/lldb/dist/source/Plugins/Platform/MacOSX/PlatformDarwin.h
      vendor/lldb/dist/source/Plugins/Platform/MacOSX/PlatformDarwinKernel.cpp
      vendor/lldb/dist/source/Plugins/Platform/MacOSX/PlatformDarwinKernel.h
      vendor/lldb/dist/source/Plugins/Platform/MacOSX/PlatformMacOSX.cpp
      vendor/lldb/dist/source/Plugins/Platform/MacOSX/PlatformMacOSX.h
      vendor/lldb/dist/source/Plugins/Platform/MacOSX/PlatformRemoteAppleTV.cpp
      vendor/lldb/dist/source/Plugins/Platform/MacOSX/PlatformRemoteAppleWatch.cpp
      vendor/lldb/dist/source/Plugins/Platform/MacOSX/PlatformRemoteDarwinDevice.cpp
      vendor/lldb/dist/source/Plugins/Platform/MacOSX/PlatformRemoteDarwinDevice.h
      vendor/lldb/dist/source/Plugins/Platform/MacOSX/PlatformRemoteiOS.cpp
      vendor/lldb/dist/source/Plugins/Platform/MacOSX/PlatformiOSSimulator.cpp
      vendor/lldb/dist/source/Plugins/Platform/MacOSX/PlatformiOSSimulator.h
      vendor/lldb/dist/source/Plugins/Platform/MacOSX/PlatformiOSSimulatorCoreSimulatorSupport.h
      vendor/lldb/dist/source/Plugins/Platform/MacOSX/PlatformiOSSimulatorCoreSimulatorSupport.mm
      vendor/lldb/dist/source/Plugins/Platform/NetBSD/PlatformNetBSD.cpp
      vendor/lldb/dist/source/Plugins/Platform/NetBSD/PlatformNetBSD.h
      vendor/lldb/dist/source/Plugins/Platform/OpenBSD/PlatformOpenBSD.cpp
      vendor/lldb/dist/source/Plugins/Platform/POSIX/PlatformPOSIX.cpp
      vendor/lldb/dist/source/Plugins/Platform/POSIX/PlatformPOSIX.h
      vendor/lldb/dist/source/Plugins/Platform/Windows/PlatformWindows.cpp
      vendor/lldb/dist/source/Plugins/Platform/Windows/PlatformWindows.h
      vendor/lldb/dist/source/Plugins/Platform/gdb-server/PlatformRemoteGDBServer.cpp
      vendor/lldb/dist/source/Plugins/Platform/gdb-server/PlatformRemoteGDBServer.h
      vendor/lldb/dist/source/Plugins/Process/Darwin/DarwinProcessLauncher.cpp
      vendor/lldb/dist/source/Plugins/Process/Darwin/DarwinProcessLauncher.h
      vendor/lldb/dist/source/Plugins/Process/Darwin/MachException.cpp
      vendor/lldb/dist/source/Plugins/Process/Darwin/MachException.h
      vendor/lldb/dist/source/Plugins/Process/Darwin/NativeProcessDarwin.cpp
      vendor/lldb/dist/source/Plugins/Process/Darwin/NativeProcessDarwin.h
      vendor/lldb/dist/source/Plugins/Process/Darwin/NativeThreadDarwin.cpp
      vendor/lldb/dist/source/Plugins/Process/Darwin/NativeThreadDarwin.h
      vendor/lldb/dist/source/Plugins/Process/Darwin/NativeThreadListDarwin.cpp
      vendor/lldb/dist/source/Plugins/Process/Darwin/NativeThreadListDarwin.h
      vendor/lldb/dist/source/Plugins/Process/FreeBSD/ProcessFreeBSD.cpp
      vendor/lldb/dist/source/Plugins/Process/FreeBSD/ProcessFreeBSD.h
      vendor/lldb/dist/source/Plugins/Process/FreeBSD/ProcessMonitor.cpp
      vendor/lldb/dist/source/Plugins/Process/FreeBSD/ProcessMonitor.h
      vendor/lldb/dist/source/Plugins/Process/FreeBSD/RegisterContextPOSIXProcessMonitor_arm.cpp
      vendor/lldb/dist/source/Plugins/Process/FreeBSD/RegisterContextPOSIXProcessMonitor_arm64.cpp
      vendor/lldb/dist/source/Plugins/Process/FreeBSD/RegisterContextPOSIXProcessMonitor_mips64.cpp
      vendor/lldb/dist/source/Plugins/Process/FreeBSD/RegisterContextPOSIXProcessMonitor_powerpc.cpp
      vendor/lldb/dist/source/Plugins/Process/FreeBSD/RegisterContextPOSIXProcessMonitor_x86.cpp
      vendor/lldb/dist/source/Plugins/Process/Linux/NativeProcessLinux.cpp
      vendor/lldb/dist/source/Plugins/Process/Linux/NativeProcessLinux.h
      vendor/lldb/dist/source/Plugins/Process/Linux/NativeRegisterContextLinux.cpp
      vendor/lldb/dist/source/Plugins/Process/Linux/NativeRegisterContextLinux.h
      vendor/lldb/dist/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm.cpp
      vendor/lldb/dist/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm.h
      vendor/lldb/dist/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.cpp
      vendor/lldb/dist/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.h
      vendor/lldb/dist/source/Plugins/Process/Linux/NativeRegisterContextLinux_mips64.cpp
      vendor/lldb/dist/source/Plugins/Process/Linux/NativeRegisterContextLinux_mips64.h
      vendor/lldb/dist/source/Plugins/Process/Linux/NativeRegisterContextLinux_s390x.cpp
      vendor/lldb/dist/source/Plugins/Process/Linux/NativeRegisterContextLinux_s390x.h
      vendor/lldb/dist/source/Plugins/Process/Linux/NativeRegisterContextLinux_x86_64.cpp
      vendor/lldb/dist/source/Plugins/Process/Linux/NativeRegisterContextLinux_x86_64.h
      vendor/lldb/dist/source/Plugins/Process/Linux/NativeThreadLinux.cpp
      vendor/lldb/dist/source/Plugins/Process/Linux/NativeThreadLinux.h
      vendor/lldb/dist/source/Plugins/Process/Linux/SingleStepCheck.cpp
      vendor/lldb/dist/source/Plugins/Process/MacOSX-Kernel/CommunicationKDP.cpp
      vendor/lldb/dist/source/Plugins/Process/MacOSX-Kernel/CommunicationKDP.h
      vendor/lldb/dist/source/Plugins/Process/MacOSX-Kernel/ProcessKDP.cpp
      vendor/lldb/dist/source/Plugins/Process/MacOSX-Kernel/ProcessKDP.h
      vendor/lldb/dist/source/Plugins/Process/MacOSX-Kernel/RegisterContextKDP_arm.cpp
      vendor/lldb/dist/source/Plugins/Process/MacOSX-Kernel/RegisterContextKDP_arm64.cpp
      vendor/lldb/dist/source/Plugins/Process/MacOSX-Kernel/RegisterContextKDP_i386.cpp
      vendor/lldb/dist/source/Plugins/Process/MacOSX-Kernel/RegisterContextKDP_x86_64.cpp
      vendor/lldb/dist/source/Plugins/Process/NetBSD/NativeProcessNetBSD.cpp
      vendor/lldb/dist/source/Plugins/Process/NetBSD/NativeProcessNetBSD.h
      vendor/lldb/dist/source/Plugins/Process/NetBSD/NativeRegisterContextNetBSD.cpp
      vendor/lldb/dist/source/Plugins/Process/NetBSD/NativeRegisterContextNetBSD.h
      vendor/lldb/dist/source/Plugins/Process/NetBSD/NativeRegisterContextNetBSD_x86_64.cpp
      vendor/lldb/dist/source/Plugins/Process/NetBSD/NativeRegisterContextNetBSD_x86_64.h
      vendor/lldb/dist/source/Plugins/Process/NetBSD/NativeThreadNetBSD.cpp
      vendor/lldb/dist/source/Plugins/Process/NetBSD/NativeThreadNetBSD.h
      vendor/lldb/dist/source/Plugins/Process/Utility/DynamicRegisterInfo.cpp
      vendor/lldb/dist/source/Plugins/Process/Utility/RegisterContextLLDB.cpp
      vendor/lldb/dist/source/Plugins/Process/Utility/RegisterContextMemory.cpp
      vendor/lldb/dist/source/Plugins/Process/Utility/RegisterContextThreadMemory.cpp
      vendor/lldb/dist/source/Plugins/Process/Utility/RegisterContextThreadMemory.h
      vendor/lldb/dist/source/Plugins/Process/Utility/ThreadMemory.cpp
      vendor/lldb/dist/source/Plugins/Process/Utility/ThreadMemory.h
      vendor/lldb/dist/source/Plugins/Process/Utility/UnwindMacOSXFrameBackchain.cpp
      vendor/lldb/dist/source/Plugins/Process/Windows/Common/DebuggerThread.cpp
      vendor/lldb/dist/source/Plugins/Process/Windows/Common/DebuggerThread.h
      vendor/lldb/dist/source/Plugins/Process/Windows/Common/IDebugDelegate.h
      vendor/lldb/dist/source/Plugins/Process/Windows/Common/LocalDebugDelegate.cpp
      vendor/lldb/dist/source/Plugins/Process/Windows/Common/LocalDebugDelegate.h
      vendor/lldb/dist/source/Plugins/Process/Windows/Common/ProcessWindows.cpp
      vendor/lldb/dist/source/Plugins/Process/Windows/Common/ProcessWindows.h
      vendor/lldb/dist/source/Plugins/Process/Windows/Common/RegisterContextWindows.cpp
      vendor/lldb/dist/source/Plugins/Process/Windows/Common/x64/RegisterContextWindows_x64.cpp
      vendor/lldb/dist/source/Plugins/Process/Windows/Common/x86/RegisterContextWindows_x86.cpp
      vendor/lldb/dist/source/Plugins/Process/elf-core/ProcessElfCore.cpp
      vendor/lldb/dist/source/Plugins/Process/elf-core/ProcessElfCore.h
      vendor/lldb/dist/source/Plugins/Process/elf-core/RegisterContextPOSIXCore_x86_64.cpp
      vendor/lldb/dist/source/Plugins/Process/elf-core/ThreadElfCore.cpp
      vendor/lldb/dist/source/Plugins/Process/elf-core/ThreadElfCore.h
      vendor/lldb/dist/source/Plugins/Process/gdb-remote/GDBRemoteCommunication.cpp
      vendor/lldb/dist/source/Plugins/Process/gdb-remote/GDBRemoteCommunication.h
      vendor/lldb/dist/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.cpp
      vendor/lldb/dist/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.h
      vendor/lldb/dist/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServer.cpp
      vendor/lldb/dist/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServer.h
      vendor/lldb/dist/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerCommon.cpp
      vendor/lldb/dist/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerCommon.h
      vendor/lldb/dist/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerLLGS.cpp
      vendor/lldb/dist/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerLLGS.h
      vendor/lldb/dist/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerPlatform.cpp
      vendor/lldb/dist/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerPlatform.h
      vendor/lldb/dist/source/Plugins/Process/gdb-remote/GDBRemoteRegisterContext.cpp
      vendor/lldb/dist/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp
      vendor/lldb/dist/source/Plugins/Process/gdb-remote/ProcessGDBRemote.h
      vendor/lldb/dist/source/Plugins/Process/mach-core/ProcessMachCore.cpp
      vendor/lldb/dist/source/Plugins/Process/mach-core/ProcessMachCore.h
      vendor/lldb/dist/source/Plugins/Process/minidump/MinidumpParser.cpp
      vendor/lldb/dist/source/Plugins/Process/minidump/MinidumpParser.h
      vendor/lldb/dist/source/Plugins/Process/minidump/MinidumpTypes.cpp
      vendor/lldb/dist/source/Plugins/Process/minidump/MinidumpTypes.h
      vendor/lldb/dist/source/Plugins/Process/minidump/ProcessMinidump.cpp
      vendor/lldb/dist/source/Plugins/Process/minidump/ProcessMinidump.h
      vendor/lldb/dist/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp
      vendor/lldb/dist/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.h
      vendor/lldb/dist/source/Plugins/StructuredData/DarwinLog/StructuredDataDarwinLog.cpp
      vendor/lldb/dist/source/Plugins/StructuredData/DarwinLog/StructuredDataDarwinLog.h
      vendor/lldb/dist/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp
      vendor/lldb/dist/source/Plugins/SymbolFile/DWARF/DWARFASTParserOCaml.cpp
      vendor/lldb/dist/source/Plugins/SymbolFile/DWARF/DWARFCompileUnit.cpp
      vendor/lldb/dist/source/Plugins/SymbolFile/DWARF/DWARFDebugAranges.cpp
      vendor/lldb/dist/source/Plugins/SymbolFile/DWARF/DWARFDebugInfoEntry.cpp
      vendor/lldb/dist/source/Plugins/SymbolFile/DWARF/DWARFDebugLine.cpp
      vendor/lldb/dist/source/Plugins/SymbolFile/DWARF/DWARFDebugPubnames.cpp
      vendor/lldb/dist/source/Plugins/SymbolFile/DWARF/DWARFDefines.cpp
      vendor/lldb/dist/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp
      vendor/lldb/dist/source/Plugins/SymbolFile/DWARF/SymbolFileDWARFDebugMap.cpp
      vendor/lldb/dist/source/Plugins/SymbolVendor/ELF/SymbolVendorELF.cpp
      vendor/lldb/dist/source/Plugins/SymbolVendor/MacOSX/SymbolVendorMacOSX.cpp
      vendor/lldb/dist/source/Plugins/SystemRuntime/MacOSX/AppleGetItemInfoHandler.cpp
      vendor/lldb/dist/source/Plugins/SystemRuntime/MacOSX/AppleGetItemInfoHandler.h
      vendor/lldb/dist/source/Plugins/SystemRuntime/MacOSX/AppleGetPendingItemsHandler.cpp
      vendor/lldb/dist/source/Plugins/SystemRuntime/MacOSX/AppleGetPendingItemsHandler.h
      vendor/lldb/dist/source/Plugins/SystemRuntime/MacOSX/AppleGetQueuesHandler.cpp
      vendor/lldb/dist/source/Plugins/SystemRuntime/MacOSX/AppleGetQueuesHandler.h
      vendor/lldb/dist/source/Plugins/SystemRuntime/MacOSX/AppleGetThreadItemInfoHandler.cpp
      vendor/lldb/dist/source/Plugins/SystemRuntime/MacOSX/AppleGetThreadItemInfoHandler.h
      vendor/lldb/dist/source/Plugins/SystemRuntime/MacOSX/SystemRuntimeMacOSX.cpp
      vendor/lldb/dist/source/Plugins/UnwindAssembly/InstEmulation/UnwindAssemblyInstEmulation.cpp
      vendor/lldb/dist/source/Plugins/UnwindAssembly/x86/UnwindAssembly-x86.cpp
      vendor/lldb/dist/source/Symbol/ClangASTContext.cpp
      vendor/lldb/dist/source/Symbol/CompactUnwindInfo.cpp
      vendor/lldb/dist/source/Symbol/CompilerType.cpp
      vendor/lldb/dist/source/Symbol/DWARFCallFrameInfo.cpp
      vendor/lldb/dist/source/Symbol/JavaASTContext.cpp
      vendor/lldb/dist/source/Symbol/ObjectFile.cpp
      vendor/lldb/dist/source/Symbol/SymbolContext.cpp
      vendor/lldb/dist/source/Symbol/Symtab.cpp
      vendor/lldb/dist/source/Symbol/Type.cpp
      vendor/lldb/dist/source/Symbol/Variable.cpp
      vendor/lldb/dist/source/Target/Language.cpp
      vendor/lldb/dist/source/Target/LanguageRuntime.cpp
      vendor/lldb/dist/source/Target/Memory.cpp
      vendor/lldb/dist/source/Target/ModuleCache.cpp
      vendor/lldb/dist/source/Target/ObjCLanguageRuntime.cpp
      vendor/lldb/dist/source/Target/PathMappingList.cpp
      vendor/lldb/dist/source/Target/Platform.cpp
      vendor/lldb/dist/source/Target/Process.cpp
      vendor/lldb/dist/source/Target/ProcessLaunchInfo.cpp
      vendor/lldb/dist/source/Target/RegisterContext.cpp
      vendor/lldb/dist/source/Target/StackFrame.cpp
      vendor/lldb/dist/source/Target/StopInfo.cpp
      vendor/lldb/dist/source/Target/Target.cpp
      vendor/lldb/dist/source/Target/TargetList.cpp
      vendor/lldb/dist/source/Target/Thread.cpp
      vendor/lldb/dist/source/Target/ThreadPlanCallFunction.cpp
      vendor/lldb/dist/source/Target/ThreadPlanTracer.cpp
      vendor/lldb/dist/source/Target/ThreadSpec.cpp
      vendor/lldb/dist/source/Utility/CMakeLists.txt
      vendor/lldb/dist/source/Utility/JSON.cpp
      vendor/lldb/dist/source/Utility/SelectHelper.cpp
      vendor/lldb/dist/source/Utility/UUID.cpp
      vendor/lldb/dist/tools/debugserver/source/DNBError.h
      vendor/lldb/dist/tools/debugserver/source/JSON.cpp
      vendor/lldb/dist/tools/debugserver/source/JSON.h
      vendor/lldb/dist/tools/debugserver/source/MacOSX/MachException.cpp
      vendor/lldb/dist/tools/debugserver/source/MacOSX/MachProcess.mm
      vendor/lldb/dist/tools/debugserver/source/MacOSX/MachTask.mm
      vendor/lldb/dist/tools/debugserver/source/MacOSX/MachThreadList.cpp
      vendor/lldb/dist/tools/debugserver/source/MacOSX/MachVMMemory.cpp
      vendor/lldb/dist/tools/debugserver/source/MacOSX/arm/DNBArchImpl.cpp
      vendor/lldb/dist/tools/debugserver/source/MacOSX/arm64/DNBArchImplARM64.cpp
      vendor/lldb/dist/tools/debugserver/source/PseudoTerminal.cpp
      vendor/lldb/dist/tools/debugserver/source/PseudoTerminal.h
      vendor/lldb/dist/tools/debugserver/source/RNBContext.cpp
      vendor/lldb/dist/tools/debugserver/source/RNBRemote.cpp
      vendor/lldb/dist/tools/lldb-mi/MICmdBase.cpp
      vendor/lldb/dist/tools/lldb-mi/MICmdCmdData.h
      vendor/lldb/dist/tools/lldb-mi/MIDriver.cpp
      vendor/lldb/dist/tools/lldb-mi/MIDriverBase.cpp
      vendor/lldb/dist/tools/lldb-server/Acceptor.cpp
      vendor/lldb/dist/tools/lldb-server/Acceptor.h
      vendor/lldb/dist/tools/lldb-server/lldb-gdbserver.cpp
      vendor/lldb/dist/tools/lldb-server/lldb-platform.cpp
      vendor/lldb/dist/unittests/Breakpoint/BreakpointIDTest.cpp
      vendor/lldb/dist/unittests/Core/ScalarTest.cpp
      vendor/lldb/dist/unittests/Core/TimerTest.cpp
      vendor/lldb/dist/unittests/Editline/EditlineTest.cpp
      vendor/lldb/dist/unittests/Expression/GoParserTest.cpp
      vendor/lldb/dist/unittests/Host/MainLoopTest.cpp
      vendor/lldb/dist/unittests/Host/SocketTest.cpp
      vendor/lldb/dist/unittests/Process/gdb-remote/GDBRemoteCommunicationClientTest.cpp
      vendor/lldb/dist/unittests/Process/gdb-remote/GDBRemoteTestUtils.cpp
      vendor/lldb/dist/unittests/Target/ModuleCacheTest.cpp
      vendor/lldb/dist/unittests/Utility/CMakeLists.txt
      vendor/lldb/dist/unittests/debugserver/RNBSocketTest.cpp
    
    Modified: vendor/lldb/dist/include/lldb/API/SBError.h
    ==============================================================================
    --- vendor/lldb/dist/include/lldb/API/SBError.h	Tue May 16 19:47:48 2017	(r318377)
    +++ vendor/lldb/dist/include/lldb/API/SBError.h	Tue May 16 19:47:58 2017	(r318378)
    @@ -68,18 +68,18 @@ protected:
       friend class SBBreakpoint;
       friend class SBBreakpointLocation;
     
    -  lldb_private::Error *get();
    +  lldb_private::Status *get();
     
    -  lldb_private::Error *operator->();
    +  lldb_private::Status *operator->();
     
    -  const lldb_private::Error &operator*() const;
    +  const lldb_private::Status &operator*() const;
     
    -  lldb_private::Error &ref();
    +  lldb_private::Status &ref();
     
    -  void SetError(const lldb_private::Error &lldb_error);
    +  void SetError(const lldb_private::Status &lldb_error);
     
     private:
    -  std::unique_ptr m_opaque_ap;
    +  std::unique_ptr m_opaque_ap;
     
       void CreateIfNeeded();
     };
    
    Modified: vendor/lldb/dist/include/lldb/API/SBPlatform.h
    ==============================================================================
    --- vendor/lldb/dist/include/lldb/API/SBPlatform.h	Tue May 16 19:47:48 2017	(r318377)
    +++ vendor/lldb/dist/include/lldb/API/SBPlatform.h	Tue May 16 19:47:58 2017	(r318378)
    @@ -156,7 +156,8 @@ protected:
       void SetSP(const lldb::PlatformSP &platform_sp);
     
       SBError ExecuteConnected(
    -      const std::function &func);
    +      const std::function
    +          &func);
     
       lldb::PlatformSP m_opaque_sp;
     };
    
    Modified: vendor/lldb/dist/include/lldb/API/SBTarget.h
    ==============================================================================
    --- vendor/lldb/dist/include/lldb/API/SBTarget.h	Tue May 16 19:47:48 2017	(r318377)
    +++ vendor/lldb/dist/include/lldb/API/SBTarget.h	Tue May 16 19:47:58 2017	(r318378)
    @@ -544,7 +544,7 @@ public:
       ///     into this call
       ///
       /// @param[out] error
    -  ///     Error information is written here if the memory read fails.
    +  ///     Status information is written here if the memory read fails.
       ///
       /// @return
       ///     The amount of data read in host bytes.
    
    Modified: vendor/lldb/dist/include/lldb/Breakpoint/Breakpoint.h
    ==============================================================================
    --- vendor/lldb/dist/include/lldb/Breakpoint/Breakpoint.h	Tue May 16 19:47:48 2017	(r318377)
    +++ vendor/lldb/dist/include/lldb/Breakpoint/Breakpoint.h	Tue May 16 19:47:58 2017	(r318378)
    @@ -169,7 +169,7 @@ public:
     
         virtual bool EvaluatePrecondition(StoppointCallbackContext &context);
     
    -    virtual Error ConfigurePrecondition(Args &options);
    +    virtual Status ConfigurePrecondition(Args &options);
     
         virtual void GetDescription(Stream &stream, lldb::DescriptionLevel level);
       };
    @@ -178,7 +178,7 @@ public:
     
       // Saving & restoring breakpoints:
       static lldb::BreakpointSP CreateFromStructuredData(
    -      Target &target, StructuredData::ObjectSP &data_object_sp, Error &error);
    +      Target &target, StructuredData::ObjectSP &data_object_sp, Status &error);
     
       static bool
       SerializedBreakpointMatchesNames(StructuredData::ObjectSP &bkpt_object_sp,
    @@ -613,7 +613,7 @@ public:
     
       lldb::SearchFilterSP GetSearchFilter() { return m_filter_sp; }
     
    -  bool AddName(const char *new_name, Error &error);
    +  bool AddName(llvm::StringRef new_name, Status &error);
     
       void RemoveName(const char *name_to_remove) {
         if (name_to_remove)
    
    Modified: vendor/lldb/dist/include/lldb/Breakpoint/BreakpointID.h
    ==============================================================================
    --- vendor/lldb/dist/include/lldb/Breakpoint/BreakpointID.h	Tue May 16 19:47:48 2017	(r318377)
    +++ vendor/lldb/dist/include/lldb/Breakpoint/BreakpointID.h	Tue May 16 19:47:58 2017	(r318378)
    @@ -84,7 +84,7 @@ public:
       ///     \b true if the name is a breakpoint name (as opposed to an ID or
       ///     range) false otherwise.
       //------------------------------------------------------------------
    -  static bool StringIsBreakpointName(llvm::StringRef str, Error &error);
    +  static bool StringIsBreakpointName(llvm::StringRef str, Status &error);
     
       //------------------------------------------------------------------
       /// Takes a breakpoint ID and the breakpoint location id and returns
    
    Modified: vendor/lldb/dist/include/lldb/Breakpoint/BreakpointLocation.h
    ==============================================================================
    --- vendor/lldb/dist/include/lldb/Breakpoint/BreakpointLocation.h	Tue May 16 19:47:48 2017	(r318377)
    +++ vendor/lldb/dist/include/lldb/Breakpoint/BreakpointLocation.h	Tue May 16 19:47:58 2017	(r318378)
    @@ -161,7 +161,7 @@ public:
       //------------------------------------------------------------------
       const char *GetConditionText(size_t *hash = nullptr) const;
     
    -  bool ConditionSaysStop(ExecutionContext &exe_ctx, Error &error);
    +  bool ConditionSaysStop(ExecutionContext &exe_ctx, Status &error);
     
       //------------------------------------------------------------------
       /// Set the valid thread to be checked when the breakpoint is hit.
    
    Modified: vendor/lldb/dist/include/lldb/Breakpoint/BreakpointOptions.h
    ==============================================================================
    --- vendor/lldb/dist/include/lldb/Breakpoint/BreakpointOptions.h	Tue May 16 19:47:48 2017	(r318377)
    +++ vendor/lldb/dist/include/lldb/Breakpoint/BreakpointOptions.h	Tue May 16 19:47:58 2017	(r318378)
    @@ -50,7 +50,7 @@ public:
     
         static std::unique_ptr
         CreateFromStructuredData(const StructuredData::Dictionary &options_dict,
    -                             Error &error);
    +                             Status &error);
     
         StringList user_source;
         std::string script_source;
    @@ -119,7 +119,7 @@ public:
       static std::unique_ptr
       CreateFromStructuredData(Target &target,
                                const StructuredData::Dictionary &data_dict,
    -                           Error &error);
    +                           Status &error);
     
       virtual StructuredData::ObjectSP SerializeToStructuredData();
     
    
    Modified: vendor/lldb/dist/include/lldb/Breakpoint/BreakpointResolver.h
    ==============================================================================
    --- vendor/lldb/dist/include/lldb/Breakpoint/BreakpointResolver.h	Tue May 16 19:47:48 2017	(r318377)
    +++ vendor/lldb/dist/include/lldb/Breakpoint/BreakpointResolver.h	Tue May 16 19:47:58 2017	(r318378)
    @@ -140,7 +140,7 @@ public:
     
       static lldb::BreakpointResolverSP
       CreateFromStructuredData(const StructuredData::Dictionary &resolver_dict,
    -                           Error &error);
    +                           Status &error);
     
       virtual StructuredData::ObjectSP SerializeToStructuredData() {
         return StructuredData::ObjectSP();
    @@ -192,7 +192,7 @@ public:
     
       static const char *ResolverTyToName(enum ResolverTy);
     
    -  static ResolverTy NameToResolverTy(const char *name);
    +  static ResolverTy NameToResolverTy(llvm::StringRef name);
     
       virtual lldb::BreakpointResolverSP
       CopyForBreakpoint(Breakpoint &breakpoint) = 0;
    
    Modified: vendor/lldb/dist/include/lldb/Breakpoint/BreakpointResolverAddress.h
    ==============================================================================
    --- vendor/lldb/dist/include/lldb/Breakpoint/BreakpointResolverAddress.h	Tue May 16 19:47:48 2017	(r318377)
    +++ vendor/lldb/dist/include/lldb/Breakpoint/BreakpointResolverAddress.h	Tue May 16 19:47:58 2017	(r318378)
    @@ -39,7 +39,7 @@ public:
       static BreakpointResolver *
       CreateFromStructuredData(Breakpoint *bkpt,
                                const StructuredData::Dictionary &options_dict,
    -                           Error &error);
    +                           Status &error);
     
       StructuredData::ObjectSP SerializeToStructuredData() override;
     
    
    Modified: vendor/lldb/dist/include/lldb/Breakpoint/BreakpointResolverFileLine.h
    ==============================================================================
    --- vendor/lldb/dist/include/lldb/Breakpoint/BreakpointResolverFileLine.h	Tue May 16 19:47:48 2017	(r318377)
    +++ vendor/lldb/dist/include/lldb/Breakpoint/BreakpointResolverFileLine.h	Tue May 16 19:47:58 2017	(r318378)
    @@ -36,7 +36,7 @@ public:
       static BreakpointResolver *
       CreateFromStructuredData(Breakpoint *bkpt,
                                const StructuredData::Dictionary &data_dict,
    -                           Error &error);
    +                           Status &error);
     
       StructuredData::ObjectSP SerializeToStructuredData() override;
     
    
    Modified: vendor/lldb/dist/include/lldb/Breakpoint/BreakpointResolverFileRegex.h
    ==============================================================================
    --- vendor/lldb/dist/include/lldb/Breakpoint/BreakpointResolverFileRegex.h	Tue May 16 19:47:48 2017	(r318377)
    +++ vendor/lldb/dist/include/lldb/Breakpoint/BreakpointResolverFileRegex.h	Tue May 16 19:47:58 2017	(r318378)
    @@ -38,7 +38,7 @@ public:
       static BreakpointResolver *
       CreateFromStructuredData(Breakpoint *bkpt,
                                const StructuredData::Dictionary &options_dict,
    -                           Error &error);
    +                           Status &error);
     
       StructuredData::ObjectSP SerializeToStructuredData() override;
     
    
    Modified: vendor/lldb/dist/include/lldb/Breakpoint/BreakpointResolverName.h
    ==============================================================================
    --- vendor/lldb/dist/include/lldb/Breakpoint/BreakpointResolverName.h	Tue May 16 19:47:48 2017	(r318377)
    +++ vendor/lldb/dist/include/lldb/Breakpoint/BreakpointResolverName.h	Tue May 16 19:47:58 2017	(r318378)
    @@ -57,7 +57,7 @@ public:
       static BreakpointResolver *
       CreateFromStructuredData(Breakpoint *bkpt,
                                const StructuredData::Dictionary &data_dict,
    -                           Error &error);
    +                           Status &error);
     
       StructuredData::ObjectSP SerializeToStructuredData() override;
     
    
    Modified: vendor/lldb/dist/include/lldb/Breakpoint/Watchpoint.h
    ==============================================================================
    --- vendor/lldb/dist/include/lldb/Breakpoint/Watchpoint.h	Tue May 16 19:47:48 2017	(r318377)
    +++ vendor/lldb/dist/include/lldb/Breakpoint/Watchpoint.h	Tue May 16 19:47:58 2017	(r318378)
    @@ -100,7 +100,7 @@ public:
       void DumpSnapshots(Stream *s, const char *prefix = nullptr) const;
       void DumpWithLevel(Stream *s, lldb::DescriptionLevel description_level) const;
       Target &GetTarget() { return m_target; }
    -  const Error &GetError() { return m_error; }
    +  const Status &GetError() { return m_error; }
     
       //------------------------------------------------------------------
       /// Returns the WatchpointOptions structure set for this watchpoint.
    @@ -213,8 +213,8 @@ private:
       lldb::ValueObjectSP m_old_value_sp;
       lldb::ValueObjectSP m_new_value_sp;
       CompilerType m_type;
    -  Error m_error; // An error object describing errors associated with this
    -                 // watchpoint.
    +  Status m_error; // An error object describing errors associated with this
    +                  // watchpoint.
       WatchpointOptions
           m_options; // Settable watchpoint options, which is a delegate to handle
                      // the callback machinery.
    
    Modified: vendor/lldb/dist/include/lldb/Core/Communication.h
    ==============================================================================
    --- vendor/lldb/dist/include/lldb/Core/Communication.h	Tue May 16 19:47:48 2017	(r318377)
    +++ vendor/lldb/dist/include/lldb/Core/Communication.h	Tue May 16 19:47:58 2017	(r318378)
    @@ -33,7 +33,7 @@ namespace lldb_private {
     class ConstString;
     }
     namespace lldb_private {
    -class Error;
    +class Status;
     }
     
     namespace lldb_private {
    @@ -71,7 +71,7 @@ namespace lldb_private {
     /// reads data and caches any received bytes. To start the read thread
     /// clients call:
     ///
    -///     bool Communication::StartReadThread (Error *);
    +///     bool Communication::StartReadThread (Status *);
     ///
     /// If true is returned a read thread has been spawned that will
     /// continually execute a call to the pure virtual DoRead function:
    @@ -154,10 +154,10 @@ public:
       ///     internal error object should be filled in with an
       ///     appropriate value based on the result of this function.
       ///
    -  /// @see Error& Communication::GetError ();
    +  /// @see Status& Communication::GetError ();
       /// @see bool Connection::Connect (const char *url);
       //------------------------------------------------------------------
    -  lldb::ConnectionStatus Connect(const char *url, Error *error_ptr);
    +  lldb::ConnectionStatus Connect(const char *url, Status *error_ptr);
     
       //------------------------------------------------------------------
       /// Disconnect the communications connection if one is currently
    @@ -168,10 +168,10 @@ public:
       ///     internal error object should be filled in with an
       ///     appropriate value based on the result of this function.
       ///
    -  /// @see Error& Communication::GetError ();
    +  /// @see Status& Communication::GetError ();
       /// @see bool Connection::Disconnect ();
       //------------------------------------------------------------------
    -  lldb::ConnectionStatus Disconnect(Error *error_ptr = nullptr);
    +  lldb::ConnectionStatus Disconnect(Status *error_ptr = nullptr);
     
       //------------------------------------------------------------------
       /// Check if the connection is valid.
    @@ -217,7 +217,7 @@ public:
       /// @see size_t Connection::Read (void *, size_t);
       //------------------------------------------------------------------
       size_t Read(void *dst, size_t dst_len, const Timeout &timeout,
    -              lldb::ConnectionStatus &status, Error *error_ptr);
    +              lldb::ConnectionStatus &status, Status *error_ptr);
     
       //------------------------------------------------------------------
       /// The actual write function that attempts to write to the
    @@ -237,7 +237,7 @@ public:
       ///     The number of bytes actually Written.
       //------------------------------------------------------------------
       size_t Write(const void *src, size_t src_len, lldb::ConnectionStatus &status,
    -               Error *error_ptr);
    +               Status *error_ptr);
     
       //------------------------------------------------------------------
       /// Sets the connection that it to be used by this class.
    @@ -280,7 +280,7 @@ public:
       /// @see void Communication::AppendBytesToCache (const uint8_t * bytes, size_t
       /// len, bool broadcast);
       //------------------------------------------------------------------
    -  virtual bool StartReadThread(Error *error_ptr = nullptr);
    +  virtual bool StartReadThread(Status *error_ptr = nullptr);
     
       //------------------------------------------------------------------
       /// Stops the read thread by cancelling it.
    @@ -289,9 +289,9 @@ public:
       ///     \b True if the read thread was successfully canceled, \b
       ///     false otherwise.
       //------------------------------------------------------------------
    -  virtual bool StopReadThread(Error *error_ptr = nullptr);
    +  virtual bool StopReadThread(Status *error_ptr = nullptr);
     
    -  virtual bool JoinReadThread(Error *error_ptr = nullptr);
    +  virtual bool JoinReadThread(Status *error_ptr = nullptr);
       //------------------------------------------------------------------
       /// Checks if there is a currently running read thread.
       ///
    @@ -361,7 +361,7 @@ protected:
     
       size_t ReadFromConnection(void *dst, size_t dst_len,
                                 const Timeout &timeout,
    -                            lldb::ConnectionStatus &status, Error *error_ptr);
    +                            lldb::ConnectionStatus &status, Status *error_ptr);
     
       //------------------------------------------------------------------
       /// Append new bytes that get read from the read thread into the
    
    Modified: vendor/lldb/dist/include/lldb/Core/Connection.h
    ==============================================================================
    --- vendor/lldb/dist/include/lldb/Core/Connection.h	Tue May 16 19:47:48 2017	(r318377)
    +++ vendor/lldb/dist/include/lldb/Core/Connection.h	Tue May 16 19:47:58 2017	(r318378)
    @@ -22,7 +22,7 @@
     #include  // for size_t
     
     namespace lldb_private {
    -class Error;
    +class Status;
     }
     namespace lldb_private {
     template  class Timeout;
    @@ -75,10 +75,10 @@ public:
       ///     internal error object should be filled in with an
       ///     appropriate value based on the result of this function.
       ///
    -  /// @see Error& Communication::GetError ();
    +  /// @see Status& Communication::GetError ();
       //------------------------------------------------------------------
       virtual lldb::ConnectionStatus Connect(llvm::StringRef url,
    -                                         Error *error_ptr) = 0;
    +                                         Status *error_ptr) = 0;
     
       //------------------------------------------------------------------
       /// Disconnect the communications connection if one is currently
    @@ -94,9 +94,9 @@ public:
       ///     internal error object should be filled in with an
       ///     appropriate value based on the result of this function.
       ///
    -  /// @see Error& Communication::GetError ();
    +  /// @see Status& Communication::GetError ();
       //------------------------------------------------------------------
    -  virtual lldb::ConnectionStatus Disconnect(Error *error_ptr) = 0;
    +  virtual lldb::ConnectionStatus Disconnect(Status *error_ptr) = 0;
     
       //------------------------------------------------------------------
       /// Check if the connection is valid.
    @@ -137,7 +137,7 @@ public:
       //------------------------------------------------------------------
       virtual size_t Read(void *dst, size_t dst_len,
                           const Timeout &timeout,
    -                      lldb::ConnectionStatus &status, Error *error_ptr) = 0;
    +                      lldb::ConnectionStatus &status, Status *error_ptr) = 0;
     
       //------------------------------------------------------------------
       /// The actual write function that attempts to write to the
    @@ -162,7 +162,7 @@ public:
       ///     The number of bytes actually Written.
       //------------------------------------------------------------------
       virtual size_t Write(const void *dst, size_t dst_len,
    -                       lldb::ConnectionStatus &status, Error *error_ptr) = 0;
    +                       lldb::ConnectionStatus &status, Status *error_ptr) = 0;
     
       //------------------------------------------------------------------
       /// Returns a URI that describes this connection object
    
    Modified: vendor/lldb/dist/include/lldb/Core/Debugger.h
    ==============================================================================
    --- vendor/lldb/dist/include/lldb/Core/Debugger.h	Tue May 16 19:47:48 2017	(r318377)
    +++ vendor/lldb/dist/include/lldb/Core/Debugger.h	Tue May 16 19:47:58 2017	(r318378)
    @@ -30,8 +30,8 @@
     #include "lldb/Target/Platform.h"
     #include "lldb/Target/TargetList.h"
     #include "lldb/Utility/ConstString.h" // for ConstString
    -#include "lldb/Utility/Error.h"       // for Error
     #include "lldb/Utility/FileSpec.h"    // for FileSpec
    +#include "lldb/Utility/Status.h"      // for Status
     #include "lldb/Utility/UserID.h"
     #include "lldb/lldb-defines.h"              // for DISALLOW_COPY_AND_ASSIGN
     #include "lldb/lldb-enumerations.h"         // for ScriptLanguage, Langua...
    @@ -239,9 +239,9 @@ public:
         eStopDisassemblyTypeAlways
       };
     
    -  Error SetPropertyValue(const ExecutionContext *exe_ctx,
    -                         VarSetOperationType op, llvm::StringRef property_path,
    -    llvm::StringRef value) override;
    +  Status SetPropertyValue(const ExecutionContext *exe_ctx,
    +                          VarSetOperationType op, llvm::StringRef property_path,
    +                          llvm::StringRef value) override;
     
       bool GetAutoConfirm() const;
     
    @@ -306,7 +306,7 @@ public:
     
       const ConstString &GetInstanceName() { return m_instance_name; }
     
    -  bool LoadPlugin(const FileSpec &spec, Error &error);
    +  bool LoadPlugin(const FileSpec &spec, Status &error);
     
       void ExecuteIOHandlers();
     
    @@ -318,7 +318,7 @@ public:
     
       bool IsHandlingEvents() const { return m_event_handler_thread.IsJoinable(); }
     
    -  Error RunREPL(lldb::LanguageType language, const char *repl_options);
    +  Status RunREPL(lldb::LanguageType language, const char *repl_options);
     
       // This is for use in the command interpreter, when you either want the
       // selected target, or if no target
    
    Modified: vendor/lldb/dist/include/lldb/Core/FormatEntity.h
    ==============================================================================
    --- vendor/lldb/dist/include/lldb/Core/FormatEntity.h	Tue May 16 19:47:48 2017	(r318377)
    +++ vendor/lldb/dist/include/lldb/Core/FormatEntity.h	Tue May 16 19:47:58 2017	(r318378)
    @@ -10,8 +10,8 @@
     #ifndef liblldb_FormatEntity_h_
     #define liblldb_FormatEntity_h_
     
    -#include "lldb/Utility/Error.h"
    -#include "lldb/Utility/FileSpec.h"  // for FileSpec
    +#include "lldb/Utility/FileSpec.h" // for FileSpec
    +#include "lldb/Utility/Status.h"
     #include "lldb/lldb-enumerations.h" // for Format::eFormatDefault, Format
     #include "lldb/lldb-types.h"        // for addr_t
     #include                 // for min
    @@ -205,11 +205,11 @@ public:
                                 const Address *addr, ValueObject *valobj,
                                 bool function_changed, bool initial_function);
     
    -  static Error Parse(const llvm::StringRef &format, Entry &entry);
    +  static Status Parse(const llvm::StringRef &format, Entry &entry);
     
    -  static Error ExtractVariableInfo(llvm::StringRef &format_str,
    -                                   llvm::StringRef &variable_name,
    -                                   llvm::StringRef &variable_format);
    +  static Status ExtractVariableInfo(llvm::StringRef &format_str,
    +                                    llvm::StringRef &variable_name,
    +                                    llvm::StringRef &variable_format);
     
       static size_t AutoComplete(llvm::StringRef s, int match_start_point,
                                  int max_return_elements, bool &word_complete,
    @@ -228,8 +228,8 @@ public:
                                  llvm::StringRef element_format);
     
     protected:
    -  static Error ParseInternal(llvm::StringRef &format, Entry &parent_entry,
    -                             uint32_t depth);
    +  static Status ParseInternal(llvm::StringRef &format, Entry &parent_entry,
    +                              uint32_t depth);
     };
     } // namespace lldb_private
     
    
    Modified: vendor/lldb/dist/include/lldb/Core/MappedHash.h
    ==============================================================================
    --- vendor/lldb/dist/include/lldb/Core/MappedHash.h	Tue May 16 19:47:48 2017	(r318377)
    +++ vendor/lldb/dist/include/lldb/Core/MappedHash.h	Tue May 16 19:47:58 2017	(r318378)
    @@ -326,7 +326,7 @@ public:
               1u, // Bucket hash data collision, but key didn't match
           eResultEndOfHashData = 2u, // The chain of items for this hash data in
                                      // this bucket is terminated, search no more
    -      eResultError = 3u          // Error parsing the hash data, abort
    +      eResultError = 3u          // Status parsing the hash data, abort
         };
     
         struct Pair {
    @@ -409,7 +409,7 @@ public:
                       // searching
                       return false;
                     case eResultError:
    -                  // Error parsing the hash data, abort
    +                  // Status parsing the hash data, abort
                       return false;
                     }
                   }
    
    Modified: vendor/lldb/dist/include/lldb/Core/Module.h
    ==============================================================================
    --- vendor/lldb/dist/include/lldb/Core/Module.h	Tue May 16 19:47:48 2017	(r318377)
    +++ vendor/lldb/dist/include/lldb/Core/Module.h	Tue May 16 19:47:58 2017	(r318378)
    @@ -17,8 +17,8 @@
     #include "lldb/Symbol/TypeSystem.h"
     #include "lldb/Target/PathMappingList.h"
     #include "lldb/Utility/ConstString.h" // for ConstString
    -#include "lldb/Utility/Error.h"       // for Error
     #include "lldb/Utility/FileSpec.h"
    +#include "lldb/Utility/Status.h" // for Status
     #include "lldb/Utility/UUID.h"
     #include "lldb/lldb-defines.h"      // for DISALLOW_COPY_AND_ASSIGN
     #include "lldb/lldb-enumerations.h" // for LanguageType, SymbolType
    @@ -652,7 +652,7 @@ public:
       //------------------------------------------------------------------
       bool IsLoadedInTarget(Target *target);
     
    -  bool LoadScriptingResourceInTarget(Target *target, Error &error,
    +  bool LoadScriptingResourceInTarget(Target *target, Status &error,
                                          Stream *feedback_stream = nullptr);
     
       //------------------------------------------------------------------
    @@ -728,7 +728,7 @@ public:
       ///     failed (see the `error` for more information in that case).
       //------------------------------------------------------------------
       ObjectFile *GetMemoryObjectFile(const lldb::ProcessSP &process_sp,
    -                                  lldb::addr_t header_addr, Error &error,
    +                                  lldb::addr_t header_addr, Status &error,
                                       size_t size_to_read = 512);
       //------------------------------------------------------------------
       /// Get the symbol vendor interface for the current architecture.
    @@ -1033,7 +1033,7 @@ public:
       ///
       /// @return
       //------------------------------------------------------------------
    -  Error LoadInMemory(Target &target, bool set_pc);
    +  Status LoadInMemory(Target &target, bool set_pc);
     
       //----------------------------------------------------------------------
       /// @class LookupInfo Module.h "lldb/Core/Module.h"
    
    Modified: vendor/lldb/dist/include/lldb/Core/ModuleList.h
    ==============================================================================
    --- vendor/lldb/dist/include/lldb/Core/ModuleList.h	Tue May 16 19:47:48 2017	(r318377)
    +++ vendor/lldb/dist/include/lldb/Core/ModuleList.h	Tue May 16 19:47:58 2017	(r318378)
    @@ -12,9 +12,9 @@
     
     #include "lldb/Core/Address.h"     // for Address
     #include "lldb/Core/ModuleSpec.h"  // for ModuleSpec
    -#include "lldb/Utility/Error.h"    // for Error
     #include "lldb/Utility/FileSpec.h" // for FileSpec
     #include "lldb/Utility/Iterable.h"
    +#include "lldb/Utility/Status.h" // for Status
     #include "lldb/lldb-enumerations.h"
     #include "lldb/lldb-forward.h"
     #include "lldb/lldb-types.h"
    @@ -530,18 +530,18 @@ public:
       //------------------------------------------------------------------
       size_t GetSize() const;
     
    -  bool LoadScriptingResourcesInTarget(Target *target, std::list &errors,
    +  bool LoadScriptingResourcesInTarget(Target *target, std::list &errors,
                                           Stream *feedback_stream = nullptr,
                                           bool continue_on_error = true);
     
       static bool ModuleIsInCache(const Module *module_ptr);
     
    -  static Error GetSharedModule(const ModuleSpec &module_spec,
    -                               lldb::ModuleSP &module_sp,
    -                               const FileSpecList *module_search_paths_ptr,
    -                               lldb::ModuleSP *old_module_sp_ptr,
    -                               bool *did_create_ptr,
    -                               bool always_create = false);
    +  static Status GetSharedModule(const ModuleSpec &module_spec,
    +                                lldb::ModuleSP &module_sp,
    +                                const FileSpecList *module_search_paths_ptr,
    +                                lldb::ModuleSP *old_module_sp_ptr,
    +                                bool *did_create_ptr,
    +                                bool always_create = false);
     
       static bool RemoveSharedModule(lldb::ModuleSP &module_sp);
     
    
    Modified: vendor/lldb/dist/include/lldb/Core/PluginManager.h
    ==============================================================================
    --- vendor/lldb/dist/include/lldb/Core/PluginManager.h	Tue May 16 19:47:48 2017	(r318377)
    +++ vendor/lldb/dist/include/lldb/Core/PluginManager.h	Tue May 16 19:47:58 2017	(r318378)
    @@ -10,8 +10,8 @@
     #ifndef liblldb_PluginManager_h_
     #define liblldb_PluginManager_h_
     
    -#include "lldb/Utility/Error.h" // for Error
     #include "lldb/Utility/FileSpec.h"
    +#include "lldb/Utility/Status.h"          // for Status
     #include "lldb/lldb-enumerations.h"       // for ScriptLanguage
     #include "lldb/lldb-forward.h"            // for OptionValuePropertiesSP
     #include "lldb/lldb-private-interfaces.h" // for DebuggerInitializeCallback
    @@ -202,8 +202,8 @@ public:
       static ObjectFileCreateMemoryInstance
       GetObjectFileCreateMemoryCallbackForPluginName(const ConstString &name);
     
    -  static Error SaveCore(const lldb::ProcessSP &process_sp,
    -                        const FileSpec &outfile);
    +  static Status SaveCore(const lldb::ProcessSP &process_sp,
    +                         const FileSpec &outfile);
     
       //------------------------------------------------------------------
       // ObjectContainer
    
    Modified: vendor/lldb/dist/include/lldb/Core/RegisterValue.h
    ==============================================================================
    --- vendor/lldb/dist/include/lldb/Core/RegisterValue.h	Tue May 16 19:47:48 2017	(r318377)
    +++ vendor/lldb/dist/include/lldb/Core/RegisterValue.h	Tue May 16 19:47:58 2017	(r318378)
    @@ -12,7 +12,7 @@
     
     #include "lldb/Core/Scalar.h"
     #include "lldb/Utility/Endian.h"
    -#include "lldb/Utility/Error.h"     // for Error
    +#include "lldb/Utility/Status.h"    // for Status
     #include "lldb/lldb-enumerations.h" // for ByteOrder, Format
     #include "lldb/lldb-types.h"        // for offset_t
     
    @@ -105,11 +105,11 @@ public:
       // into "dst".
       uint32_t GetAsMemoryData(const RegisterInfo *reg_info, void *dst,
                                uint32_t dst_len, lldb::ByteOrder dst_byte_order,
    -                           Error &error) const;
    +                           Status &error) const;
     
       uint32_t SetFromMemoryData(const RegisterInfo *reg_info, const void *src,
                                  uint32_t src_len, lldb::ByteOrder src_byte_order,
    -                             Error &error);
    +                             Status &error);
     
       bool GetScalarValue(Scalar &scalar) const;
     
    @@ -241,13 +241,13 @@ public:
     
       bool SignExtend(uint32_t sign_bitpos);
     
    -  Error SetValueFromString(const RegisterInfo *reg_info,
    -                           llvm::StringRef value_str);
    -  Error SetValueFromString(const RegisterInfo *reg_info,
    -                           const char *value_str) = delete;
    +  Status SetValueFromString(const RegisterInfo *reg_info,
    +                            llvm::StringRef value_str);
    +  Status SetValueFromString(const RegisterInfo *reg_info,
    +                            const char *value_str) = delete;
     
    -  Error SetValueFromData(const RegisterInfo *reg_info, DataExtractor &data,
    -                         lldb::offset_t offset, bool partial_data_ok);
    +  Status SetValueFromData(const RegisterInfo *reg_info, DataExtractor &data,
    +                          lldb::offset_t offset, bool partial_data_ok);
     
       // The default value of 0 for reg_name_right_align_at means no alignment at
       // all.
    
    Modified: vendor/lldb/dist/include/lldb/Core/Scalar.h
    ==============================================================================
    --- vendor/lldb/dist/include/lldb/Core/Scalar.h	Tue May 16 19:47:48 2017	(r318377)
    +++ vendor/lldb/dist/include/lldb/Core/Scalar.h	Tue May 16 19:47:58 2017	(r318378)
    @@ -10,7 +10,7 @@
     #ifndef liblldb_Scalar_h_
     #define liblldb_Scalar_h_
     
    -#include "lldb/Utility/Error.h"      // for Error
    +#include "lldb/Utility/Status.h"     // for Status
     #include "lldb/lldb-enumerations.h"  // for Encoding, ByteOrder
     #include "lldb/lldb-private-types.h" // for type128
     
    @@ -146,7 +146,7 @@ public:
       bool GetData(DataExtractor &data, size_t limit_byte_size = UINT32_MAX) const;
     
       size_t GetAsMemoryData(void *dst, size_t dst_len,
    -                         lldb::ByteOrder dst_byte_order, Error &error) const;
    +                         lldb::ByteOrder dst_byte_order, Status &error) const;
     
       bool IsZero() const;
     
    @@ -272,11 +272,11 @@ public:
     
       long double LongDouble(long double fail_value = 0.0) const;
     
    -  Error SetValueFromCString(const char *s, lldb::Encoding encoding,
    -                            size_t byte_size);
    +  Status SetValueFromCString(const char *s, lldb::Encoding encoding,
    +                             size_t byte_size);
     
    -  Error SetValueFromData(DataExtractor &data, lldb::Encoding encoding,
    -                         size_t byte_size);
    +  Status SetValueFromData(DataExtractor &data, lldb::Encoding encoding,
    +                          size_t byte_size);
     
       static bool UIntValueIsValidForSize(uint64_t uval64, size_t total_byte_size) {
         if (total_byte_size > 8)
    
    Modified: vendor/lldb/dist/include/lldb/Core/SearchFilter.h
    ==============================================================================
    --- vendor/lldb/dist/include/lldb/Core/SearchFilter.h	Tue May 16 19:47:48 2017	(r318377)
    +++ vendor/lldb/dist/include/lldb/Core/SearchFilter.h	Tue May 16 19:47:58 2017	(r318378)
    @@ -28,7 +28,7 @@ namespace lldb_private {
     class CompileUnit;
     }
     namespace lldb_private {
    -class Error;
    +class Status;
     }
     namespace lldb_private {
     class Function;
    @@ -250,7 +250,7 @@ public:
       static lldb::SearchFilterSP
       CreateFromStructuredData(Target &target,
                                const StructuredData::Dictionary &data_dict,
    -                           Error &error);
    +                           Status &error);
     
       virtual StructuredData::ObjectSP SerializeToStructuredData() {
         return StructuredData::ObjectSP();
    @@ -285,7 +285,7 @@ public:
     
       static const char *FilterTyToName(enum FilterTy);
     
    -  static FilterTy NameToFilterTy(const char *name);
    +  static FilterTy NameToFilterTy(llvm::StringRef name);
     
     protected:
       // Serialization of SearchFilter options:
    @@ -351,7 +351,7 @@ public:
       static lldb::SearchFilterSP
       CreateFromStructuredData(Target &target,
                                const StructuredData::Dictionary &data_dict,
    -                           Error &error);
    +                           Status &error);
     
       StructuredData::ObjectSP SerializeToStructuredData() override;
     
    @@ -405,7 +405,7 @@ public:
       static lldb::SearchFilterSP
       CreateFromStructuredData(Target &target,
                                const StructuredData::Dictionary &data_dict,
    -                           Error &error);
    +                           Status &error);
     
       StructuredData::ObjectSP SerializeToStructuredData() override;
     
    @@ -462,7 +462,7 @@ public:
       static lldb::SearchFilterSP
       CreateFromStructuredData(Target &target,
                                const StructuredData::Dictionary &data_dict,
    -                           Error &error);
    +                           Status &error);
     
       StructuredData::ObjectSP SerializeToStructuredData() override;
     
    @@ -515,7 +515,7 @@ public:
       static lldb::SearchFilterSP
       CreateFromStructuredData(Target &target,
                                const StructuredData::Dictionary &data_dict,
    -                           Error &error);
    +                           Status &error);
     
       StructuredData::ObjectSP SerializeToStructuredData() override;
     
    
    Modified: vendor/lldb/dist/include/lldb/Core/StructuredData.h
    ==============================================================================
    --- vendor/lldb/dist/include/lldb/Core/StructuredData.h	Tue May 16 19:47:48 2017	(r318377)
    +++ vendor/lldb/dist/include/lldb/Core/StructuredData.h	Tue May 16 19:47:58 2017	(r318378)
    @@ -28,7 +28,7 @@
     #include  // for uint64_t
     
     namespace lldb_private {
    -class Error;
    +class Status;
     }
     namespace lldb_private {
     class Stream;
    @@ -143,15 +143,12 @@ public:
                                                 : nullptr);
         }
     
    -    std::string GetStringValue(const char *fail_value = nullptr) {
    +    llvm::StringRef GetStringValue(const char *fail_value = nullptr) {
           String *s = GetAsString();
           if (s)
             return s->GetValue();
     
    -      if (fail_value && fail_value[0])
    -        return std::string(fail_value);
    -
    -      return std::string();
    +      return fail_value;
         }
     
         Generic *GetAsGeneric() {
    @@ -220,7 +217,7 @@ public:
           return success;
         }
     
    -    bool GetItemAtIndexAsString(size_t idx, std::string &result) const {
    +    bool GetItemAtIndexAsString(size_t idx, llvm::StringRef &result) const {
           ObjectSP value_sp = GetItemAtIndex(idx);
           if (value_sp.get()) {
             if (auto string_value = value_sp->GetAsString()) {
    @@ -231,8 +228,8 @@ public:
           return false;
         }
     
    -    bool GetItemAtIndexAsString(size_t idx, std::string &result,
    -                                const std::string &default_val) const {
    +    bool GetItemAtIndexAsString(size_t idx, llvm::StringRef &result,
    +                                llvm::StringRef default_val) const {
           bool success = GetItemAtIndexAsString(idx, result);
           if (!success)
             result = default_val;
    @@ -339,18 +336,13 @@ public:
     
       class String : public Object {
       public:
    -    String(const char *cstr = nullptr) : Object(Type::eTypeString), m_value() {
    -      if (cstr)
    -        m_value = cstr;
    -    }
    -
    -    String(const std::string &s) : Object(Type::eTypeString), m_value(s) {}
    -
    -    String(const std::string &&s) : Object(Type::eTypeString), m_value(s) {}
    +    String() : Object(Type::eTypeString) {}
    +    explicit String(llvm::StringRef S)
    +        : Object(Type::eTypeString), m_value(S) {}
     
    -    void SetValue(const std::string &string) { m_value = string; }
    +    void SetValue(llvm::StringRef S) { m_value = S; }
     
    -    const std::string &GetValue() { return m_value; }
    +    llvm::StringRef GetValue() { return m_value; }
     
         void Dump(Stream &s, bool pretty_print = true) const override;
     
    @@ -430,7 +422,7 @@ public:
         }
     
         bool GetValueForKeyAsString(llvm::StringRef key,
    -                                std::string &result) const {
    +                                llvm::StringRef &result) const {
           ObjectSP value_sp = GetValueForKey(key);
           if (value_sp.get()) {
             if (auto string_value = value_sp->GetAsString()) {
    @@ -441,14 +433,14 @@ public:
           return false;
         }
     
    -    bool GetValueForKeyAsString(llvm::StringRef key, std::string &result,
    +    bool GetValueForKeyAsString(llvm::StringRef key, llvm::StringRef &result,
                                     const char *default_val) const {
           bool success = GetValueForKeyAsString(key, result);
           if (!success) {
             if (default_val)
               result = default_val;
             else
    -          result.clear();
    +          result = llvm::StringRef();
           }
           return success;
         }
    @@ -513,7 +505,7 @@ public:
           AddItem(key, std::make_shared(value));
         }
     
    -    void AddStringItem(llvm::StringRef key, std::string value) {
    +    void AddStringItem(llvm::StringRef key, llvm::StringRef value) {
           AddItem(key, std::make_shared(std::move(value)));
         }
     
    @@ -558,7 +550,7 @@ public:
     
       static ObjectSP ParseJSON(std::string json_text);
     
    -  static ObjectSP ParseJSONFromFile(const FileSpec &file, Error &error);
    +  static ObjectSP ParseJSONFromFile(const FileSpec &file, Status &error);
     };
     
     } // namespace lldb_private
    
    Modified: vendor/lldb/dist/include/lldb/Core/StructuredDataImpl.h
    ==============================================================================
    --- vendor/lldb/dist/include/lldb/Core/StructuredDataImpl.h	Tue May 16 19:47:48 2017	(r318377)
    +++ vendor/lldb/dist/include/lldb/Core/StructuredDataImpl.h	Tue May 16 19:47:58 2017	(r318378)
    @@ -12,9 +12,9 @@
     
     #include "lldb/Core/Event.h"
     #include "lldb/Core/StructuredData.h"
    -#include "lldb/Utility/Error.h"
    -#include "lldb/Utility/Stream.h"
     #include "lldb/Target/StructuredDataPlugin.h"
    +#include "lldb/Utility/Status.h"
    +#include "lldb/Utility/Stream.h"
     #include "lldb/lldb-forward.h"
     
     #pragma mark--
    @@ -45,8 +45,8 @@ public:
         m_data_sp.reset();
       }
     
    -  Error GetAsJSON(Stream &stream) const {
    -    Error error;
    +  Status GetAsJSON(Stream &stream) const {
    +    Status error;
     
         if (!m_data_sp) {
           error.SetErrorString("No structured data.");
    @@ -57,8 +57,8 @@ public:
         return error;
       }
     
    -  Error GetDescription(Stream &stream) const {
    -    Error error;
    +  Status GetDescription(Stream &stream) const {
    +    Status error;
     
         if (!m_data_sp) {
           error.SetErrorString("Cannot pretty print structured data: "
    
    Modified: vendor/lldb/dist/include/lldb/Core/Timer.h
    ==============================================================================
    --- vendor/lldb/dist/include/lldb/Core/Timer.h	Tue May 16 19:47:48 2017	(r318377)
    +++ vendor/lldb/dist/include/lldb/Core/Timer.h	Tue May 16 19:47:58 2017	(r318378)
    @@ -37,10 +37,23 @@ namespace lldb_private {
     
     class Timer {
     public:
    +  class Category {
    +  public:
    +    explicit Category(const char *category_name);
    +
    +  private:
    +    friend class Timer;
    +    const char *m_name;
    +    std::atomic m_nanos;
    +    std::atomic m_next;
    +
    +    DISALLOW_COPY_AND_ASSIGN(Category);
    +  };
    +
       //--------------------------------------------------------------
       /// Default constructor.
       //--------------------------------------------------------------
    -  Timer(const char *category, const char *format, ...)
    +  Timer(Category &category, const char *format, ...)
           __attribute__((format(printf, 3, 4)));
     
       //--------------------------------------------------------------
    @@ -62,7 +75,7 @@ protected:
       using TimePoint = std::chrono::steady_clock::time_point;
       void ChildDuration(TimePoint::duration dur) { m_child_duration += dur; }
     
    -  const char *m_category;
    +  Category &m_category;
       TimePoint m_total_start;
       TimePoint::duration m_child_duration{0};
     
    
    Modified: vendor/lldb/dist/include/lldb/Core/UserSettingsController.h
    ==============================================================================
    --- vendor/lldb/dist/include/lldb/Core/UserSettingsController.h	Tue May 16 19:47:48 2017	(r318377)
    +++ vendor/lldb/dist/include/lldb/Core/UserSettingsController.h	Tue May 16 19:47:58 2017	(r318378)
    @@ -10,7 +10,7 @@
     #ifndef liblldb_UserSettingsController_h_
     #define liblldb_UserSettingsController_h_
     
    -#include "lldb/Utility/Error.h"             // for Error
    +#include "lldb/Utility/Status.h"            // for Status
     #include "lldb/lldb-forward.h"              // for OptionValuePropertiesSP
     #include "lldb/lldb-private-enumerations.h" // for VarSetOperationType
     
    @@ -57,15 +57,16 @@ public:
       virtual lldb::OptionValueSP GetPropertyValue(const ExecutionContext *exe_ctx,
                                                    llvm::StringRef property_path,
                                                    bool will_modify,
    -                                               Error &error) const;
    +                                               Status &error) const;
     
    -  virtual Error SetPropertyValue(const ExecutionContext *exe_ctx,
    -                                 VarSetOperationType op,
    -    llvm::StringRef property_path, llvm::StringRef value);
    -
    -  virtual Error DumpPropertyValue(const ExecutionContext *exe_ctx, Stream &strm,
    -    llvm::StringRef property_path,
    -                                  uint32_t dump_mask);
    +  virtual Status SetPropertyValue(const ExecutionContext *exe_ctx,
    +                                  VarSetOperationType op,
    +                                  llvm::StringRef property_path,
    +                                  llvm::StringRef value);
    +
    +  virtual Status DumpPropertyValue(const ExecutionContext *exe_ctx,
    +                                   Stream &strm, llvm::StringRef property_path,
    +                                   uint32_t dump_mask);
     
       virtual void DumpAllPropertyValues(const ExecutionContext *exe_ctx,
                                          Stream &strm, uint32_t dump_mask);
    
    Modified: vendor/lldb/dist/include/lldb/Core/Value.h
    ==============================================================================
    --- vendor/lldb/dist/include/lldb/Core/Value.h	Tue May 16 19:47:48 2017	(r318377)
    +++ vendor/lldb/dist/include/lldb/Core/Value.h	Tue May 16 19:47:58 2017	(r318378)
    @@ -13,7 +13,7 @@
     #include "lldb/Core/Scalar.h"
     #include "lldb/Symbol/CompilerType.h"
     #include "lldb/Utility/DataBufferHeap.h"
    -#include "lldb/Utility/Error.h"
    +#include "lldb/Utility/Status.h"
     #include "lldb/lldb-enumerations.h"         // for ByteOrder, ByteOrder::eB...
     #include "lldb/lldb-private-enumerations.h" // for AddressType
     #include "lldb/lldb-private-types.h"        // for type128, RegisterInfo
    @@ -219,11 +219,11 @@ public:
     
       lldb::Format GetValueDefaultFormat();
     
    -  uint64_t GetValueByteSize(Error *error_ptr, ExecutionContext *exe_ctx);
    +  uint64_t GetValueByteSize(Status *error_ptr, ExecutionContext *exe_ctx);
     
    -  Error GetValueAsData(ExecutionContext *exe_ctx, DataExtractor &data,
    -                       uint32_t data_offset,
    -                       Module *module); // Can be nullptr
    +  Status GetValueAsData(ExecutionContext *exe_ctx, DataExtractor &data,
    +                        uint32_t data_offset,
    +                        Module *module); // Can be nullptr
     
       static const char *GetValueTypeAsCString(ValueType context_type);
     
    
    Modified: vendor/lldb/dist/include/lldb/Core/ValueObject.h
    ==============================================================================
    --- vendor/lldb/dist/include/lldb/Core/ValueObject.h	Tue May 16 19:47:48 2017	(r318377)
    +++ vendor/lldb/dist/include/lldb/Core/ValueObject.h	Tue May 16 19:47:58 2017	(r318378)
    @@ -18,8 +18,8 @@
     #include "lldb/Target/Process.h"
     #include "lldb/Utility/ConstString.h"
     #include "lldb/Utility/DataExtractor.h"
    -#include "lldb/Utility/Error.h"
     #include "lldb/Utility/SharedCluster.h"
    +#include "lldb/Utility/Status.h"
     #include "lldb/Utility/UserID.h"
     #include "lldb/lldb-defines.h"              // for LLDB_INVALID...
     #include "lldb/lldb-enumerations.h"         // for DynamicValue...
    @@ -462,7 +462,7 @@ public:
     
       virtual int64_t GetValueAsSigned(int64_t fail_value, bool *success = nullptr);
     
    -  virtual bool SetValueFromCString(const char *value_str, Error &error);
    +  virtual bool SetValueFromCString(const char *value_str, Status &error);
     
       // Return the module associated with this value object in case the
       // value is from an executable file and might have its data in
    @@ -482,7 +482,7 @@ public:
       //------------------------------------------------------------------
       // The functions below should NOT be modified by subclasses
       //------------------------------------------------------------------
    -  const Error &GetError();
    +  const Status &GetError();
     
       const ConstString &GetName() const;
     
    @@ -520,7 +520,7 @@ public:
       // return 'false' whenever you set the error, otherwise
       // callers may assume true means everything is OK - this will
       // break breakpoint conditions among potentially a few others
    -  virtual bool IsLogicalTrue(Error &error);
    +  virtual bool IsLogicalTrue(Status &error);
     
       virtual const char *GetLocationAsCString();
     
    @@ -620,7 +620,7 @@ public:
     
       virtual lldb::ValueObjectSP CreateConstantValue(const ConstString &name);
     
    
    *** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
    
    From owner-svn-src-vendor@freebsd.org  Tue May 16 19:47:49 2017
    Return-Path: 
    Delivered-To: svn-src-vendor@mailman.ysv.freebsd.org
    Received: from mx1.freebsd.org (mx1.freebsd.org
     [IPv6:2001:1900:2254:206a::19:1])
     by mailman.ysv.freebsd.org (Postfix) with ESMTP id A85D6D7051C;
     Tue, 16 May 2017 19:47:49 +0000 (UTC) (envelope-from dim@FreeBSD.org)
    Received: from repo.freebsd.org (repo.freebsd.org
     [IPv6:2610:1c1:1:6068::e6a:0])
     (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
     (Client did not present a certificate)
     by mx1.freebsd.org (Postfix) with ESMTPS id 5B76599;
     Tue, 16 May 2017 19:47:49 +0000 (UTC) (envelope-from dim@FreeBSD.org)
    Received: from repo.freebsd.org ([127.0.1.37])
     by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v4GJlmHf097380;
     Tue, 16 May 2017 19:47:48 GMT (envelope-from dim@FreeBSD.org)
    Received: (from dim@localhost)
     by repo.freebsd.org (8.15.2/8.15.2/Submit) id v4GJlmKa097379;
     Tue, 16 May 2017 19:47:48 GMT (envelope-from dim@FreeBSD.org)
    Message-Id: <201705161947.v4GJlmKa097379@repo.freebsd.org>
    X-Authentication-Warning: repo.freebsd.org: dim set sender to dim@FreeBSD.org
     using -f
    From: Dimitry Andric 
    Date: Tue, 16 May 2017 19:47:48 +0000 (UTC)
    To: src-committers@freebsd.org, svn-src-all@freebsd.org,
     svn-src-vendor@freebsd.org
    Subject: svn commit: r318377 - vendor/lld/lld-trunk-r303197
    X-SVN-Group: vendor
    MIME-Version: 1.0
    Content-Type: text/plain; charset=UTF-8
    Content-Transfer-Encoding: 8bit
    X-BeenThere: svn-src-vendor@freebsd.org
    X-Mailman-Version: 2.1.23
    Precedence: list
    List-Id: SVN commit messages for the vendor work area tree
     
    List-Unsubscribe: , 
     
    List-Archive: 
    List-Post: 
    List-Help: 
    List-Subscribe: ,
     
    X-List-Received-Date: Tue, 16 May 2017 19:47:49 -0000
    
    Author: dim
    Date: Tue May 16 19:47:48 2017
    New Revision: 318377
    URL: https://svnweb.freebsd.org/changeset/base/318377
    
    Log:
      Tag lld trunk r303197.
    
    Added:
      vendor/lld/lld-trunk-r303197/
         - copied from r318376, vendor/lld/dist/
    
    From owner-svn-src-vendor@freebsd.org  Tue May 16 19:48:08 2017
    Return-Path: 
    Delivered-To: svn-src-vendor@mailman.ysv.freebsd.org
    Received: from mx1.freebsd.org (mx1.freebsd.org
     [IPv6:2001:1900:2254:206a::19:1])
     by mailman.ysv.freebsd.org (Postfix) with ESMTP id A0C78D70631;
     Tue, 16 May 2017 19:48:08 +0000 (UTC) (envelope-from dim@FreeBSD.org)
    Received: from repo.freebsd.org (repo.freebsd.org
     [IPv6:2610:1c1:1:6068::e6a:0])
     (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
     (Client did not present a certificate)
     by mx1.freebsd.org (Postfix) with ESMTPS id 590E2284;
     Tue, 16 May 2017 19:48:08 +0000 (UTC) (envelope-from dim@FreeBSD.org)
    Received: from repo.freebsd.org ([127.0.1.37])
     by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v4GJm71l097520;
     Tue, 16 May 2017 19:48:07 GMT (envelope-from dim@FreeBSD.org)
    Received: (from dim@localhost)
     by repo.freebsd.org (8.15.2/8.15.2/Submit) id v4GJm7Bm097519;
     Tue, 16 May 2017 19:48:07 GMT (envelope-from dim@FreeBSD.org)
    Message-Id: <201705161948.v4GJm7Bm097519@repo.freebsd.org>
    X-Authentication-Warning: repo.freebsd.org: dim set sender to dim@FreeBSD.org
     using -f
    From: Dimitry Andric 
    Date: Tue, 16 May 2017 19:48:07 +0000 (UTC)
    To: src-committers@freebsd.org, svn-src-all@freebsd.org,
     svn-src-vendor@freebsd.org
    Subject: svn commit: r318379 - vendor/lldb/lldb-trunk-r303197
    X-SVN-Group: vendor
    MIME-Version: 1.0
    Content-Type: text/plain; charset=UTF-8
    Content-Transfer-Encoding: 8bit
    X-BeenThere: svn-src-vendor@freebsd.org
    X-Mailman-Version: 2.1.23
    Precedence: list
    List-Id: SVN commit messages for the vendor work area tree
     
    List-Unsubscribe: , 
     
    List-Archive: 
    List-Post: 
    List-Help: 
    List-Subscribe: ,
     
    X-List-Received-Date: Tue, 16 May 2017 19:48:08 -0000
    
    Author: dim
    Date: Tue May 16 19:48:07 2017
    New Revision: 318379
    URL: https://svnweb.freebsd.org/changeset/base/318379
    
    Log:
      Tag lldb trunk r303197.
    
    Added:
      vendor/lldb/lldb-trunk-r303197/
         - copied from r318378, vendor/lldb/dist/
    
    From owner-svn-src-vendor@freebsd.org  Wed May 17 20:22:43 2017
    Return-Path: 
    Delivered-To: svn-src-vendor@mailman.ysv.freebsd.org
    Received: from mx1.freebsd.org (mx1.freebsd.org
     [IPv6:2001:1900:2254:206a::19:1])
     by mailman.ysv.freebsd.org (Postfix) with ESMTP id F24CCD714A3;
     Wed, 17 May 2017 20:22:42 +0000 (UTC) (envelope-from dim@FreeBSD.org)
    Received: from repo.freebsd.org (repo.freebsd.org
     [IPv6:2610:1c1:1:6068::e6a:0])
     (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
     (Client did not present a certificate)
     by mx1.freebsd.org (Postfix) with ESMTPS id A7CA61BF2;
     Wed, 17 May 2017 20:22:42 +0000 (UTC) (envelope-from dim@FreeBSD.org)
    Received: from repo.freebsd.org ([127.0.1.37])
     by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v4HKMfhW015248;
     Wed, 17 May 2017 20:22:41 GMT (envelope-from dim@FreeBSD.org)
    Received: (from dim@localhost)
     by repo.freebsd.org (8.15.2/8.15.2/Submit) id v4HKMeJf015232;
     Wed, 17 May 2017 20:22:40 GMT (envelope-from dim@FreeBSD.org)
    Message-Id: <201705172022.v4HKMeJf015232@repo.freebsd.org>
    X-Authentication-Warning: repo.freebsd.org: dim set sender to dim@FreeBSD.org
     using -f
    From: Dimitry Andric 
    Date: Wed, 17 May 2017 20:22:40 +0000 (UTC)
    To: src-committers@freebsd.org, svn-src-all@freebsd.org,
     svn-src-vendor@freebsd.org
    Subject: svn commit: r318414 - in vendor/llvm/dist: include/llvm/ADT
     include/llvm/Analysis include/llvm/DebugInfo/CodeView
     include/llvm/DebugInfo/DWARF include/llvm/DebugInfo/PDB/Native
     include/llvm/IR incl...
    X-SVN-Group: vendor
    MIME-Version: 1.0
    Content-Type: text/plain; charset=UTF-8
    Content-Transfer-Encoding: 8bit
    X-BeenThere: svn-src-vendor@freebsd.org
    X-Mailman-Version: 2.1.23
    Precedence: list
    List-Id: SVN commit messages for the vendor work area tree
     
    List-Unsubscribe: , 
     
    List-Archive: 
    List-Post: 
    List-Help: 
    List-Subscribe: ,
     
    X-List-Received-Date: Wed, 17 May 2017 20:22:43 -0000
    
    Author: dim
    Date: Wed May 17 20:22:39 2017
    New Revision: 318414
    URL: https://svnweb.freebsd.org/changeset/base/318414
    
    Log:
      Vendor import of llvm trunk r303291:
      https://llvm.org/svn/llvm-project/llvm/trunk@303291
    
    Added:
      vendor/llvm/dist/test/Analysis/CostModel/SystemZ/div-pow2.ll
      vendor/llvm/dist/test/Analysis/CostModel/X86/ctlz.ll
      vendor/llvm/dist/test/Analysis/CostModel/X86/ctpop.ll
      vendor/llvm/dist/test/Analysis/CostModel/X86/cttz.ll
      vendor/llvm/dist/test/CodeGen/AMDGPU/packed-op-sel.ll
      vendor/llvm/dist/test/CodeGen/PowerPC/save-bp.ll
      vendor/llvm/dist/test/CodeGen/PowerPC/save-cr-ppc32svr4.ll
      vendor/llvm/dist/test/CodeGen/PowerPC/save-crbp-ppc32svr4.ll
      vendor/llvm/dist/test/CodeGen/X86/GlobalISel/regbankselect-X32.mir
      vendor/llvm/dist/test/CodeGen/X86/GlobalISel/select-add-x32.mir
      vendor/llvm/dist/test/ExecutionEngine/RuntimeDyld/X86/ELF_x86-64_debug_frame.s   (contents, props changed)
      vendor/llvm/dist/test/Transforms/Coroutines/coro-catchswitch.ll
      vendor/llvm/dist/test/Transforms/InstCombine/debuginfo-skip.ll
      vendor/llvm/dist/test/Transforms/LoopVectorize/AArch64/pr33053.ll
      vendor/llvm/dist/unittests/Support/CrashRecoveryTest.cpp   (contents, props changed)
    Deleted:
      vendor/llvm/dist/test/Analysis/CostModel/X86/ctbits-cost.ll
      vendor/llvm/dist/test/CodeGen/X86/leaFixup32.mir
      vendor/llvm/dist/test/CodeGen/X86/leaFixup64.mir
    Modified:
      vendor/llvm/dist/include/llvm/ADT/APInt.h
      vendor/llvm/dist/include/llvm/ADT/BitVector.h
      vendor/llvm/dist/include/llvm/ADT/PostOrderIterator.h
      vendor/llvm/dist/include/llvm/ADT/PriorityWorklist.h
      vendor/llvm/dist/include/llvm/ADT/SCCIterator.h
      vendor/llvm/dist/include/llvm/ADT/Sequence.h
      vendor/llvm/dist/include/llvm/ADT/SetVector.h
      vendor/llvm/dist/include/llvm/ADT/SmallBitVector.h
      vendor/llvm/dist/include/llvm/ADT/SmallPtrSet.h
      vendor/llvm/dist/include/llvm/ADT/SmallVector.h
      vendor/llvm/dist/include/llvm/ADT/SparseBitVector.h
      vendor/llvm/dist/include/llvm/ADT/SparseMultiSet.h
      vendor/llvm/dist/include/llvm/ADT/SparseSet.h
      vendor/llvm/dist/include/llvm/ADT/StringExtras.h
      vendor/llvm/dist/include/llvm/ADT/StringMap.h
      vendor/llvm/dist/include/llvm/ADT/StringRef.h
      vendor/llvm/dist/include/llvm/ADT/StringSet.h
      vendor/llvm/dist/include/llvm/ADT/TinyPtrVector.h
      vendor/llvm/dist/include/llvm/ADT/UniqueVector.h
      vendor/llvm/dist/include/llvm/Analysis/ProfileSummaryInfo.h
      vendor/llvm/dist/include/llvm/DebugInfo/CodeView/CVTypeVisitor.h
      vendor/llvm/dist/include/llvm/DebugInfo/CodeView/RandomAccessTypeVisitor.h
      vendor/llvm/dist/include/llvm/DebugInfo/DWARF/DWARFAttribute.h
      vendor/llvm/dist/include/llvm/DebugInfo/DWARF/DWARFDebugArangeSet.h
      vendor/llvm/dist/include/llvm/DebugInfo/DWARF/DWARFDebugAranges.h
      vendor/llvm/dist/include/llvm/DebugInfo/DWARF/DWARFDebugRangeList.h
      vendor/llvm/dist/include/llvm/DebugInfo/DWARF/DWARFDie.h
      vendor/llvm/dist/include/llvm/DebugInfo/DWARF/DWARFFormValue.h
      vendor/llvm/dist/include/llvm/DebugInfo/DWARF/DWARFGdbIndex.h
      vendor/llvm/dist/include/llvm/DebugInfo/DWARF/DWARFRelocMap.h
      vendor/llvm/dist/include/llvm/DebugInfo/DWARF/DWARFUnit.h
      vendor/llvm/dist/include/llvm/DebugInfo/PDB/Native/TpiStream.h
      vendor/llvm/dist/include/llvm/IR/IntrinsicsPowerPC.td
      vendor/llvm/dist/include/llvm/Target/GlobalISel/SelectionDAGCompat.td
      vendor/llvm/dist/lib/Analysis/DependenceAnalysis.cpp
      vendor/llvm/dist/lib/Analysis/InlineCost.cpp
      vendor/llvm/dist/lib/Analysis/InstructionSimplify.cpp
      vendor/llvm/dist/lib/Analysis/ProfileSummaryInfo.cpp
      vendor/llvm/dist/lib/Analysis/ScalarEvolution.cpp
      vendor/llvm/dist/lib/CodeGen/AggressiveAntiDepBreaker.cpp
      vendor/llvm/dist/lib/CodeGen/AsmPrinter/CodeViewDebug.cpp
      vendor/llvm/dist/lib/CodeGen/AsmPrinter/DbgValueHistoryCalculator.cpp
      vendor/llvm/dist/lib/CodeGen/GlobalISel/IRTranslator.cpp
      vendor/llvm/dist/lib/CodeGen/MachineVerifier.cpp
      vendor/llvm/dist/lib/CodeGen/RegAllocGreedy.cpp
      vendor/llvm/dist/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
      vendor/llvm/dist/lib/CodeGen/SpillPlacement.cpp
      vendor/llvm/dist/lib/CodeGen/StackColoring.cpp
      vendor/llvm/dist/lib/CodeGen/TargetLoweringBase.cpp
      vendor/llvm/dist/lib/CodeGen/TargetPassConfig.cpp
      vendor/llvm/dist/lib/CodeGen/TargetRegisterInfo.cpp
      vendor/llvm/dist/lib/DebugInfo/CodeView/CVTypeDumper.cpp
      vendor/llvm/dist/lib/DebugInfo/CodeView/CVTypeVisitor.cpp
      vendor/llvm/dist/lib/DebugInfo/CodeView/RandomAccessTypeVisitor.cpp
      vendor/llvm/dist/lib/DebugInfo/CodeView/TypeDumpVisitor.cpp
      vendor/llvm/dist/lib/DebugInfo/CodeView/TypeStreamMerger.cpp
      vendor/llvm/dist/lib/DebugInfo/DWARF/DWARFContext.cpp
      vendor/llvm/dist/lib/DebugInfo/PDB/Native/PDBTypeServerHandler.cpp
      vendor/llvm/dist/lib/ExecutionEngine/RuntimeDyld/RuntimeDyld.cpp
      vendor/llvm/dist/lib/Support/CrashRecoveryContext.cpp
      vendor/llvm/dist/lib/Support/Unix/Path.inc
      vendor/llvm/dist/lib/Target/AArch64/AArch64FrameLowering.cpp
      vendor/llvm/dist/lib/Target/AArch64/AArch64ISelLowering.cpp
      vendor/llvm/dist/lib/Target/AArch64/AArch64ISelLowering.h
      vendor/llvm/dist/lib/Target/AArch64/AArch64TargetTransformInfo.cpp
      vendor/llvm/dist/lib/Target/AArch64/AArch64TargetTransformInfo.h
      vendor/llvm/dist/lib/Target/AMDGPU/AMDGPUISelDAGToDAG.cpp
      vendor/llvm/dist/lib/Target/AMDGPU/AMDGPUSubtarget.h
      vendor/llvm/dist/lib/Target/AMDGPU/SIISelLowering.cpp
      vendor/llvm/dist/lib/Target/AMDGPU/SIInstrInfo.cpp
      vendor/llvm/dist/lib/Target/AMDGPU/SIRegisterInfo.cpp
      vendor/llvm/dist/lib/Target/AMDGPU/VOP3Instructions.td
      vendor/llvm/dist/lib/Target/ARM/ARMInstructionSelector.cpp
      vendor/llvm/dist/lib/Target/ARM/Thumb1FrameLowering.cpp
      vendor/llvm/dist/lib/Target/Mips/MipsDelaySlotFiller.cpp
      vendor/llvm/dist/lib/Target/PowerPC/PPCFrameLowering.cpp
      vendor/llvm/dist/lib/Target/PowerPC/PPCISelLowering.cpp
      vendor/llvm/dist/lib/Target/PowerPC/PPCISelLowering.h
      vendor/llvm/dist/lib/Target/PowerPC/PPCInstr64Bit.td
      vendor/llvm/dist/lib/Target/PowerPC/PPCInstrInfo.cpp
      vendor/llvm/dist/lib/Target/PowerPC/PPCInstrInfo.td
      vendor/llvm/dist/lib/Target/SystemZ/SystemZTargetTransformInfo.cpp
      vendor/llvm/dist/lib/Target/WebAssembly/WebAssemblyRegColoring.cpp
      vendor/llvm/dist/lib/Target/WebAssembly/known_gcc_test_failures.txt
      vendor/llvm/dist/lib/Target/X86/X86.td
      vendor/llvm/dist/lib/Target/X86/X86FixupLEAs.cpp
      vendor/llvm/dist/lib/Target/X86/X86InstructionSelector.cpp
      vendor/llvm/dist/lib/Target/X86/X86LegalizerInfo.cpp
      vendor/llvm/dist/lib/Target/X86/X86Subtarget.h
      vendor/llvm/dist/lib/Target/X86/X86TargetMachine.cpp
      vendor/llvm/dist/lib/Target/X86/X86TargetTransformInfo.cpp
      vendor/llvm/dist/lib/Transforms/Coroutines/CoroFrame.cpp
      vendor/llvm/dist/lib/Transforms/InstCombine/InstCombineInternal.h
      vendor/llvm/dist/lib/Transforms/InstCombine/InstructionCombining.cpp
      vendor/llvm/dist/lib/Transforms/Scalar/LICM.cpp
      vendor/llvm/dist/lib/Transforms/Scalar/LoopIdiomRecognize.cpp
      vendor/llvm/dist/lib/Transforms/Scalar/LoopStrengthReduce.cpp
      vendor/llvm/dist/lib/Transforms/Scalar/NewGVN.cpp
      vendor/llvm/dist/lib/Transforms/Scalar/Reassociate.cpp
      vendor/llvm/dist/lib/Transforms/Scalar/SimpleLoopUnswitch.cpp
      vendor/llvm/dist/test/Analysis/CostModel/X86/bitreverse.ll
      vendor/llvm/dist/test/CodeGen/AArch64/aarch64-addv.ll
      vendor/llvm/dist/test/CodeGen/AArch64/aarch64-minmaxv.ll
      vendor/llvm/dist/test/CodeGen/AArch64/arm64-vabs.ll
      vendor/llvm/dist/test/CodeGen/AArch64/ldst-zero.ll
      vendor/llvm/dist/test/CodeGen/AArch64/misched-stp.ll
      vendor/llvm/dist/test/CodeGen/AMDGPU/fmax3.ll
      vendor/llvm/dist/test/CodeGen/AMDGPU/fmin3.ll
      vendor/llvm/dist/test/CodeGen/AMDGPU/global-constant.ll
      vendor/llvm/dist/test/CodeGen/AMDGPU/immv216.ll
      vendor/llvm/dist/test/CodeGen/AMDGPU/max3.ll
      vendor/llvm/dist/test/CodeGen/AMDGPU/min3.ll
      vendor/llvm/dist/test/CodeGen/ARM/2011-02-04-AntidepMultidef.ll
      vendor/llvm/dist/test/CodeGen/ARM/2012-10-04-AAPCS-byval-align8.ll
      vendor/llvm/dist/test/CodeGen/ARM/dag-combine-ldst.ll
      vendor/llvm/dist/test/CodeGen/MSP430/vararg.ll
      vendor/llvm/dist/test/CodeGen/Mips/msa/bmzi_bmnzi.ll
      vendor/llvm/dist/test/CodeGen/PowerPC/atomic-2.ll
      vendor/llvm/dist/test/CodeGen/PowerPC/atomics-indexed.ll
      vendor/llvm/dist/test/CodeGen/PowerPC/atomics-regression.ll
      vendor/llvm/dist/test/CodeGen/PowerPC/atomics.ll
      vendor/llvm/dist/test/CodeGen/PowerPC/ppcf128sf.ll
      vendor/llvm/dist/test/CodeGen/SPARC/32abi.ll
      vendor/llvm/dist/test/CodeGen/SPARC/64abi.ll
      vendor/llvm/dist/test/CodeGen/SystemZ/swift-return.ll
      vendor/llvm/dist/test/CodeGen/Thumb/stack-access.ll
      vendor/llvm/dist/test/CodeGen/Thumb2/ldr-str-imm12.ll
      vendor/llvm/dist/test/CodeGen/X86/GlobalISel/add-scalar.ll
      vendor/llvm/dist/test/CodeGen/X86/GlobalISel/legalize-add.mir
      vendor/llvm/dist/test/CodeGen/X86/arg-copy-elide.ll
      vendor/llvm/dist/test/CodeGen/X86/nontemporal.ll
      vendor/llvm/dist/test/CodeGen/X86/psubus.ll
      vendor/llvm/dist/test/CodeGen/X86/store-narrow.ll
      vendor/llvm/dist/test/CodeGen/X86/swift-return.ll
      vendor/llvm/dist/test/CodeGen/X86/win32-spill-xmm.ll
      vendor/llvm/dist/test/CodeGen/X86/win64_sibcall.ll
      vendor/llvm/dist/test/CodeGen/X86/win64_vararg.ll
      vendor/llvm/dist/test/CodeGen/X86/x86-64-ms_abi-vararg.ll
      vendor/llvm/dist/test/Feature/optnone-llc.ll
      vendor/llvm/dist/test/MC/AMDGPU/vop3-gfx9.s
      vendor/llvm/dist/test/TableGen/GlobalISelEmitter.td
      vendor/llvm/dist/test/Transforms/Inline/inline-hot-callee.ll
      vendor/llvm/dist/test/Transforms/InstCombine/canonicalize_branch.ll
      vendor/llvm/dist/test/Transforms/InstSimplify/AndOrXor.ll
      vendor/llvm/dist/test/Transforms/LoopVectorize/AArch64/reduction-small-size.ll
      vendor/llvm/dist/test/Transforms/NewGVN/pr32934.ll
      vendor/llvm/dist/test/Transforms/SLPVectorizer/AArch64/gather-root.ll
      vendor/llvm/dist/tools/llvm-pdbdump/Analyze.cpp
      vendor/llvm/dist/tools/llvm-pdbdump/LLVMOutputStyle.cpp
      vendor/llvm/dist/tools/llvm-pdbdump/PdbYaml.cpp
      vendor/llvm/dist/tools/llvm-pdbdump/YamlTypeDumper.cpp
      vendor/llvm/dist/unittests/ADT/BitVectorTest.cpp
      vendor/llvm/dist/unittests/Analysis/ProfileSummaryInfoTest.cpp
      vendor/llvm/dist/unittests/DebugInfo/CodeView/RandomAccessVisitorTest.cpp
      vendor/llvm/dist/unittests/DebugInfo/PDB/TypeServerHandlerTest.cpp
      vendor/llvm/dist/unittests/Support/BinaryStreamTest.cpp
      vendor/llvm/dist/unittests/Support/CMakeLists.txt
      vendor/llvm/dist/utils/TableGen/AsmMatcherEmitter.cpp
      vendor/llvm/dist/utils/TableGen/GlobalISelEmitter.cpp
      vendor/llvm/dist/utils/lit/lit/main.py
      vendor/llvm/dist/utils/lit/lit/run.py
    
    Modified: vendor/llvm/dist/include/llvm/ADT/APInt.h
    ==============================================================================
    --- vendor/llvm/dist/include/llvm/ADT/APInt.h	Wed May 17 19:34:36 2017	(r318413)
    +++ vendor/llvm/dist/include/llvm/ADT/APInt.h	Wed May 17 20:22:39 2017	(r318414)
    @@ -1067,9 +1067,7 @@ public:
       /// \returns the bit value at bitPosition
       bool operator[](unsigned bitPosition) const {
         assert(bitPosition < getBitWidth() && "Bit position out of bounds!");
    -    return (maskBit(bitPosition) &
    -            (isSingleWord() ? U.VAL : U.pVal[whichWord(bitPosition)])) !=
    -           0;
    +    return (maskBit(bitPosition) & getWord(bitPosition)) != 0;
       }
     
       /// @}
    
    Modified: vendor/llvm/dist/include/llvm/ADT/BitVector.h
    ==============================================================================
    --- vendor/llvm/dist/include/llvm/ADT/BitVector.h	Wed May 17 19:34:36 2017	(r318413)
    +++ vendor/llvm/dist/include/llvm/ADT/BitVector.h	Wed May 17 20:22:39 2017	(r318414)
    @@ -15,6 +15,7 @@
     #define LLVM_ADT_BITVECTOR_H
     
     #include "llvm/ADT/ArrayRef.h"
    +#include "llvm/ADT/iterator_range.h"
     #include "llvm/Support/MathExtras.h"
     #include 
     #include 
    @@ -26,6 +27,50 @@
     
     namespace llvm {
     
    +/// ForwardIterator for the bits that are set.
    +/// Iterators get invalidated when resize / reserve is called.
    +template  class const_set_bits_iterator_impl {
    +  const BitVectorT &Parent;
    +  int Current = 0;
    +
    +  void advance() {
    +    assert(Current != -1 && "Trying to advance past end.");
    +    Current = Parent.find_next(Current);
    +  }
    +
    +public:
    +  const_set_bits_iterator_impl(const BitVectorT &Parent, int Current)
    +      : Parent(Parent), Current(Current) {}
    +  explicit const_set_bits_iterator_impl(const BitVectorT &Parent)
    +      : const_set_bits_iterator_impl(Parent, Parent.find_first()) {}
    +  const_set_bits_iterator_impl(const const_set_bits_iterator_impl &) = default;
    +
    +  const_set_bits_iterator_impl operator++(int) {
    +    auto Prev = *this;
    +    advance();
    +    return Prev;
    +  }
    +
    +  const_set_bits_iterator_impl &operator++() {
    +    advance();
    +    return *this;
    +  }
    +
    +  unsigned operator*() const { return Current; }
    +
    +  bool operator==(const const_set_bits_iterator_impl &Other) const {
    +    assert(&Parent == &Other.Parent &&
    +           "Comparing iterators from different BitVectors");
    +    return Current == Other.Current;
    +  }
    +
    +  bool operator!=(const const_set_bits_iterator_impl &Other) const {
    +    assert(&Parent == &Other.Parent &&
    +           "Comparing iterators from different BitVectors");
    +    return Current != Other.Current;
    +  }
    +};
    +
     class BitVector {
       typedef unsigned long BitWord;
     
    @@ -73,6 +118,18 @@ public:
         }
       };
     
    +  typedef const_set_bits_iterator_impl const_set_bits_iterator;
    +  typedef const_set_bits_iterator set_iterator;
    +
    +  const_set_bits_iterator set_bits_begin() const {
    +    return const_set_bits_iterator(*this);
    +  }
    +  const_set_bits_iterator set_bits_end() const {
    +    return const_set_bits_iterator(*this, -1);
    +  }
    +  iterator_range set_bits() const {
    +    return make_range(set_bits_begin(), set_bits_end());
    +  }
     
       /// BitVector default ctor - Creates an empty bitvector.
       BitVector() : Size(0) {}
    @@ -146,138 +203,164 @@ public:
         return !any();
       }
     
    -  /// find_first - Returns the index of the first set bit, -1 if none
    -  /// of the bits are set.
    -  int find_first() const {
    -    for (unsigned i = 0; i < NumBitWords(size()); ++i)
    -      if (Bits[i] != 0)
    -        return i * BITWORD_SIZE + countTrailingZeros(Bits[i]);
    -    return -1;
    -  }
    -
    -  /// find_last - Returns the index of the last set bit, -1 if none of the bits
    -  /// are set.
    -  int find_last() const {
    -    if (Size == 0)
    +  /// find_first_in - Returns the index of the first set bit in the range
    +  /// [Begin, End).  Returns -1 if all bits in the range are unset.
    +  int find_first_in(unsigned Begin, unsigned End) const {
    +    assert(Begin <= End && End <= Size);
    +    if (Begin == End)
           return -1;
     
    -    unsigned N = NumBitWords(size());
    -    assert(N > 0);
    +    unsigned FirstWord = Begin / BITWORD_SIZE;
    +    unsigned LastWord = (End - 1) / BITWORD_SIZE;
     
    -    unsigned i = N - 1;
    -    while (i > 0 && Bits[i] == BitWord(0))
    -      --i;
    +    // Check subsequent words.
    +    for (unsigned i = FirstWord; i <= LastWord; ++i) {
    +      BitWord Copy = Bits[i];
     
    -    return int((i + 1) * BITWORD_SIZE - countLeadingZeros(Bits[i])) - 1;
    -  }
    +      if (i == FirstWord) {
    +        unsigned FirstBit = Begin % BITWORD_SIZE;
    +        Copy &= maskTrailingZeros(FirstBit);
    +      }
     
    -  /// find_first_unset - Returns the index of the first unset bit, -1 if all
    -  /// of the bits are set.
    -  int find_first_unset() const {
    -    for (unsigned i = 0; i < NumBitWords(size()); ++i)
    -      if (Bits[i] != ~0UL) {
    -        unsigned Result = i * BITWORD_SIZE + countTrailingOnes(Bits[i]);
    -        return Result < size() ? Result : -1;
    +      if (i == LastWord) {
    +        unsigned LastBit = (End - 1) % BITWORD_SIZE;
    +        Copy &= maskTrailingOnes(LastBit + 1);
           }
    +      if (Copy != 0)
    +        return i * BITWORD_SIZE + countTrailingZeros(Copy);
    +    }
         return -1;
       }
     
    -  /// find_last_unset - Returns the index of the last unset bit, -1 if all of
    -  /// the bits are set.
    -  int find_last_unset() const {
    -    if (Size == 0)
    +  /// find_last_in - Returns the index of the last set bit in the range
    +  /// [Begin, End).  Returns -1 if all bits in the range are unset.
    +  int find_last_in(unsigned Begin, unsigned End) const {
    +    assert(Begin <= End && End <= Size);
    +    if (Begin == End)
           return -1;
     
    -    const unsigned N = NumBitWords(size());
    -    assert(N > 0);
    +    unsigned LastWord = (End - 1) / BITWORD_SIZE;
    +    unsigned FirstWord = Begin / BITWORD_SIZE;
     
    -    unsigned i = N - 1;
    -    BitWord W = Bits[i];
    +    for (unsigned i = LastWord + 1; i >= FirstWord + 1; --i) {
    +      unsigned CurrentWord = i - 1;
     
    -    // The last word in the BitVector has some unused bits, so we need to set
    -    // them all to 1 first.  Set them all to 1 so they don't get treated as
    -    // valid unset bits.
    -    unsigned UnusedCount = BITWORD_SIZE - size() % BITWORD_SIZE;
    -    W |= maskLeadingOnes(UnusedCount);
    +      BitWord Copy = Bits[CurrentWord];
    +      if (CurrentWord == LastWord) {
    +        unsigned LastBit = (End - 1) % BITWORD_SIZE;
    +        Copy &= maskTrailingOnes(LastBit + 1);
    +      }
     
    -    while (W == ~BitWord(0) && --i > 0)
    -      W = Bits[i];
    +      if (CurrentWord == FirstWord) {
    +        unsigned FirstBit = Begin % BITWORD_SIZE;
    +        Copy &= maskTrailingZeros(FirstBit);
    +      }
    +
    +      if (Copy != 0)
    +        return (CurrentWord + 1) * BITWORD_SIZE - countLeadingZeros(Copy) - 1;
    +    }
     
    -    return int((i + 1) * BITWORD_SIZE - countLeadingOnes(W)) - 1;
    +    return -1;
       }
     
    -  /// find_next - Returns the index of the next set bit following the
    -  /// "Prev" bit. Returns -1 if the next set bit is not found.
    -  int find_next(unsigned Prev) const {
    -    ++Prev;
    -    if (Prev >= Size)
    +  /// find_first_unset_in - Returns the index of the first unset bit in the
    +  /// range [Begin, End).  Returns -1 if all bits in the range are set.
    +  int find_first_unset_in(unsigned Begin, unsigned End) const {
    +    assert(Begin <= End && End <= Size);
    +    if (Begin == End)
           return -1;
     
    -    unsigned WordPos = Prev / BITWORD_SIZE;
    -    unsigned BitPos = Prev % BITWORD_SIZE;
    -    BitWord Copy = Bits[WordPos];
    -    // Mask off previous bits.
    -    Copy &= maskTrailingZeros(BitPos);
    -
    -    if (Copy != 0)
    -      return WordPos * BITWORD_SIZE + countTrailingZeros(Copy);
    +    unsigned FirstWord = Begin / BITWORD_SIZE;
    +    unsigned LastWord = (End - 1) / BITWORD_SIZE;
     
         // Check subsequent words.
    -    for (unsigned i = WordPos+1; i < NumBitWords(size()); ++i)
    -      if (Bits[i] != 0)
    -        return i * BITWORD_SIZE + countTrailingZeros(Bits[i]);
    +    for (unsigned i = FirstWord; i <= LastWord; ++i) {
    +      BitWord Copy = Bits[i];
    +
    +      if (i == FirstWord) {
    +        unsigned FirstBit = Begin % BITWORD_SIZE;
    +        Copy |= maskTrailingOnes(FirstBit);
    +      }
    +
    +      if (i == LastWord) {
    +        unsigned LastBit = (End - 1) % BITWORD_SIZE;
    +        Copy |= maskTrailingZeros(LastBit + 1);
    +      }
    +      if (Copy != ~0UL) {
    +        unsigned Result = i * BITWORD_SIZE + countTrailingOnes(Copy);
    +        return Result < size() ? Result : -1;
    +      }
    +    }
         return -1;
       }
     
    -  /// find_next_unset - Returns the index of the next unset bit following the
    -  /// "Prev" bit.  Returns -1 if all remaining bits are set.
    -  int find_next_unset(unsigned Prev) const {
    -    ++Prev;
    -    if (Prev >= Size)
    +  /// find_last_unset_in - Returns the index of the last unset bit in the
    +  /// range [Begin, End).  Returns -1 if all bits in the range are set.
    +  int find_last_unset_in(unsigned Begin, unsigned End) const {
    +    assert(Begin <= End && End <= Size);
    +    if (Begin == End)
           return -1;
     
    -    unsigned WordPos = Prev / BITWORD_SIZE;
    -    unsigned BitPos = Prev % BITWORD_SIZE;
    -    BitWord Copy = Bits[WordPos];
    -    // Mask in previous bits.
    -    BitWord Mask = (1 << BitPos) - 1;
    -    Copy |= Mask;
    +    unsigned LastWord = (End - 1) / BITWORD_SIZE;
    +    unsigned FirstWord = Begin / BITWORD_SIZE;
     
    -    if (Copy != ~0UL)
    -      return next_unset_in_word(WordPos, Copy);
    +    for (unsigned i = LastWord + 1; i >= FirstWord + 1; --i) {
    +      unsigned CurrentWord = i - 1;
     
    -    // Check subsequent words.
    -    for (unsigned i = WordPos + 1; i < NumBitWords(size()); ++i)
    -      if (Bits[i] != ~0UL)
    -        return next_unset_in_word(i, Bits[i]);
    +      BitWord Copy = Bits[CurrentWord];
    +      if (CurrentWord == LastWord) {
    +        unsigned LastBit = (End - 1) % BITWORD_SIZE;
    +        Copy |= maskTrailingZeros(LastBit + 1);
    +      }
    +
    +      if (CurrentWord == FirstWord) {
    +        unsigned FirstBit = Begin % BITWORD_SIZE;
    +        Copy |= maskTrailingOnes(FirstBit);
    +      }
    +
    +      if (Copy != ~0UL) {
    +        unsigned Result =
    +            (CurrentWord + 1) * BITWORD_SIZE - countLeadingOnes(Copy) - 1;
    +        return Result < Size ? Result : -1;
    +      }
    +    }
         return -1;
       }
     
    +  /// find_first - Returns the index of the first set bit, -1 if none
    +  /// of the bits are set.
    +  int find_first() const { return find_first_in(0, Size); }
    +
    +  /// find_last - Returns the index of the last set bit, -1 if none of the bits
    +  /// are set.
    +  int find_last() const { return find_last_in(0, Size); }
    +
    +  /// find_next - Returns the index of the next set bit following the
    +  /// "Prev" bit. Returns -1 if the next set bit is not found.
    +  int find_next(unsigned Prev) const { return find_first_in(Prev + 1, Size); }
    +
       /// find_prev - Returns the index of the first set bit that precedes the
       /// the bit at \p PriorTo.  Returns -1 if all previous bits are unset.
    -  int find_prev(unsigned PriorTo) const {
    -    if (PriorTo == 0)
    -      return -1;
    +  int find_prev(unsigned PriorTo) const { return find_last_in(0, PriorTo); }
     
    -    --PriorTo;
    +  /// find_first_unset - Returns the index of the first unset bit, -1 if all
    +  /// of the bits are set.
    +  int find_first_unset() const { return find_first_unset_in(0, Size); }
     
    -    unsigned WordPos = PriorTo / BITWORD_SIZE;
    -    unsigned BitPos = PriorTo % BITWORD_SIZE;
    -    BitWord Copy = Bits[WordPos];
    -    // Mask off next bits.
    -    Copy &= maskTrailingOnes(BitPos + 1);
    -
    -    if (Copy != 0)
    -      return (WordPos + 1) * BITWORD_SIZE - countLeadingZeros(Copy) - 1;
    -
    -    // Check previous words.
    -    for (unsigned i = 1; i <= WordPos; ++i) {
    -      unsigned Index = WordPos - i;
    -      if (Bits[Index] == 0)
    -        continue;
    -      return (Index + 1) * BITWORD_SIZE - countLeadingZeros(Bits[Index]) - 1;
    -    }
    -    return -1;
    +  /// find_next_unset - Returns the index of the next unset bit following the
    +  /// "Prev" bit.  Returns -1 if all remaining bits are set.
    +  int find_next_unset(unsigned Prev) const {
    +    return find_first_unset_in(Prev + 1, Size);
    +  }
    +
    +  /// find_last_unset - Returns the index of the last unset bit, -1 if all of
    +  /// the bits are set.
    +  int find_last_unset() const { return find_last_unset_in(0, Size); }
    +
    +  /// find_prev_unset - Returns the index of the first unset bit that precedes
    +  /// the bit at \p PriorTo.  Returns -1 if all previous bits are set.
    +  int find_prev_unset(unsigned PriorTo) {
    +    return find_last_unset_in(0, PriorTo);
       }
     
       /// clear - Removes all bits from the bitvector. Does not change capacity.
    
    Modified: vendor/llvm/dist/include/llvm/ADT/PostOrderIterator.h
    ==============================================================================
    --- vendor/llvm/dist/include/llvm/ADT/PostOrderIterator.h	Wed May 17 19:34:36 2017	(r318413)
    +++ vendor/llvm/dist/include/llvm/ADT/PostOrderIterator.h	Wed May 17 20:22:39 2017	(r318414)
    @@ -96,24 +96,14 @@ template ,
           public po_iterator_storage {
    -  typedef std::iterator super;
    -  typedef typename GT::NodeRef NodeRef;
    -  typedef typename GT::ChildIteratorType ChildItTy;
    +  using super = std::iterator;
    +  using NodeRef = typename GT::NodeRef;
    +  using ChildItTy = typename GT::ChildIteratorType;
     
       // VisitStack - Used to maintain the ordering.  Top = current block
       // First element is basic block pointer, second is the 'next child' to visit
       std::vector> VisitStack;
     
    -  void traverseChild() {
    -    while (VisitStack.back().second != GT::child_end(VisitStack.back().first)) {
    -      NodeRef BB = *VisitStack.back().second++;
    -      if (this->insertEdge(Optional(VisitStack.back().first), BB)) {
    -        // If the block is not visited...
    -        VisitStack.push_back(std::make_pair(BB, GT::child_begin(BB)));
    -      }
    -    }
    -  }
    -
       po_iterator(NodeRef BB) {
         this->insertEdge(Optional(), BB);
         VisitStack.push_back(std::make_pair(BB, GT::child_begin(BB)));
    @@ -134,8 +124,18 @@ class po_iterator
           : po_iterator_storage(S) {
       } // End is when stack is empty.
     
    +  void traverseChild() {
    +    while (VisitStack.back().second != GT::child_end(VisitStack.back().first)) {
    +      NodeRef BB = *VisitStack.back().second++;
    +      if (this->insertEdge(Optional(VisitStack.back().first), BB)) {
    +        // If the block is not visited...
    +        VisitStack.push_back(std::make_pair(BB, GT::child_begin(BB)));
    +      }
    +    }
    +  }
    +
     public:
    -  typedef typename super::pointer pointer;
    +  using pointer = typename super::pointer;
     
       // Provide static "constructors"...
       static po_iterator begin(GraphT G) {
    @@ -286,7 +286,8 @@ inverse_post_order_ext(const T &G, SetTy
     
     template>
     class ReversePostOrderTraversal {
    -  typedef typename GT::NodeRef NodeRef;
    +  using NodeRef = typename GT::NodeRef;
    +
       std::vector Blocks; // Block list in normal PO order
     
       void Initialize(NodeRef BB) {
    @@ -294,7 +295,7 @@ class ReversePostOrderTraversal {
       }
     
     public:
    -  typedef typename std::vector::reverse_iterator rpo_iterator;
    +  using rpo_iterator = typename std::vector::reverse_iterator;
     
       ReversePostOrderTraversal(GraphT G) { Initialize(GT::getEntryNode(G)); }
     
    
    Modified: vendor/llvm/dist/include/llvm/ADT/PriorityWorklist.h
    ==============================================================================
    --- vendor/llvm/dist/include/llvm/ADT/PriorityWorklist.h	Wed May 17 19:34:36 2017	(r318413)
    +++ vendor/llvm/dist/include/llvm/ADT/PriorityWorklist.h	Wed May 17 20:22:39 2017	(r318414)
    @@ -17,13 +17,14 @@
     #define LLVM_ADT_PRIORITYWORKLIST_H
     
     #include "llvm/ADT/DenseMap.h"
    -#include "llvm/ADT/STLExtras.h"
    -#include "llvm/ADT/Sequence.h"
     #include "llvm/ADT/SmallVector.h"
    +#include "llvm/ADT/STLExtras.h"
     #include "llvm/Support/Compiler.h"
     #include 
     #include 
     #include 
    +#include 
    +#include 
     #include 
     
     namespace llvm {
    @@ -55,11 +56,11 @@ template >
     class PriorityWorklist {
     public:
    -  typedef T value_type;
    -  typedef T key_type;
    -  typedef T& reference;
    -  typedef const T& const_reference;
    -  typedef typename MapT::size_type size_type;
    +  using value_type = T;
    +  using key_type = T;
    +  using reference = T&;
    +  using const_reference = const T&;
    +  using size_type = typename MapT::size_type;
     
       /// Construct an empty PriorityWorklist
       PriorityWorklist() = default;
    
    Modified: vendor/llvm/dist/include/llvm/ADT/SCCIterator.h
    ==============================================================================
    --- vendor/llvm/dist/include/llvm/ADT/SCCIterator.h	Wed May 17 19:34:36 2017	(r318413)
    +++ vendor/llvm/dist/include/llvm/ADT/SCCIterator.h	Wed May 17 20:22:39 2017	(r318414)
    @@ -1,4 +1,4 @@
    -//===---- ADT/SCCIterator.h - Strongly Connected Comp. Iter. ----*- C++ -*-===//
    +//===- ADT/SCCIterator.h - Strongly Connected Comp. Iter. -------*- C++ -*-===//
     //
     //                     The LLVM Compiler Infrastructure
     //
    @@ -43,10 +43,10 @@ template , std::forward_iterator_tag,
                              const std::vector, ptrdiff_t> {
    -  typedef typename GT::NodeRef NodeRef;
    -  typedef typename GT::ChildIteratorType ChildItTy;
    -  typedef std::vector SccTy;
    -  typedef typename scc_iterator::reference reference;
    +  using NodeRef = typename GT::NodeRef;
    +  using ChildItTy = typename GT::ChildIteratorType;
    +  using SccTy = std::vector;
    +  using reference = typename scc_iterator::reference;
     
       /// Element of VisitStack during DFS.
       struct StackElement {
    
    Modified: vendor/llvm/dist/include/llvm/ADT/Sequence.h
    ==============================================================================
    --- vendor/llvm/dist/include/llvm/ADT/Sequence.h	Wed May 17 19:34:36 2017	(r318413)
    +++ vendor/llvm/dist/include/llvm/ADT/Sequence.h	Wed May 17 20:22:39 2017	(r318414)
    @@ -13,27 +13,31 @@
     ///
     //===----------------------------------------------------------------------===//
     
    -#ifndef LLVM_ADT_SEQ_H
    -#define LLVM_ADT_SEQ_H
    +#ifndef LLVM_ADT_SEQUENCE_H
    +#define LLVM_ADT_SEQUENCE_H
     
     #include "llvm/ADT/iterator.h"
     #include "llvm/ADT/iterator_range.h"
    +#include 
    +#include 
    +#include 
     
     namespace llvm {
     
     namespace detail {
    +
     template 
     class value_sequence_iterator
         : public iterator_facade_base,
                                       std::random_access_iterator_tag,
                                       const ValueT> {
    -  typedef typename value_sequence_iterator::iterator_facade_base BaseT;
    +  using BaseT = typename value_sequence_iterator::iterator_facade_base;
     
       ValueT Value;
     
     public:
    -  typedef typename BaseT::difference_type difference_type;
    -  typedef typename BaseT::reference reference;
    +  using difference_type = typename BaseT::difference_type;
    +  using reference = typename BaseT::reference;
     
       value_sequence_iterator() = default;
       value_sequence_iterator(const value_sequence_iterator &) = default;
    @@ -65,7 +69,8 @@ public:
     
       reference operator*() const { return Value; }
     };
    -} // End detail namespace.
    +
    +} // end namespace detail
     
     template 
     iterator_range> seq(ValueT Begin,
    @@ -74,6 +79,6 @@ iterator_range(End));
     }
     
    -}
    +} // end namespace llvm
     
    -#endif
    +#endif // LLVM_ADT_SEQUENCE_H
    
    Modified: vendor/llvm/dist/include/llvm/ADT/SetVector.h
    ==============================================================================
    --- vendor/llvm/dist/include/llvm/ADT/SetVector.h	Wed May 17 19:34:36 2017	(r318413)
    +++ vendor/llvm/dist/include/llvm/ADT/SetVector.h	Wed May 17 20:22:39 2017	(r318414)
    @@ -40,17 +40,17 @@ template >
     class SetVector {
     public:
    -  typedef T value_type;
    -  typedef T key_type;
    -  typedef T& reference;
    -  typedef const T& const_reference;
    -  typedef Set set_type;
    -  typedef Vector vector_type;
    -  typedef typename vector_type::const_iterator iterator;
    -  typedef typename vector_type::const_iterator const_iterator;
    -  typedef typename vector_type::const_reverse_iterator reverse_iterator;
    -  typedef typename vector_type::const_reverse_iterator const_reverse_iterator;
    -  typedef typename vector_type::size_type size_type;
    +  using value_type = T;
    +  using key_type = T;
    +  using reference = T&;
    +  using const_reference = const T&;
    +  using set_type = Set;
    +  using vector_type = Vector;
    +  using iterator = typename vector_type::const_iterator;
    +  using const_iterator = typename vector_type::const_iterator;
    +  using reverse_iterator = typename vector_type::const_reverse_iterator;
    +  using const_reverse_iterator = typename vector_type::const_reverse_iterator;
    +  using size_type = typename vector_type::size_type;
     
       /// \brief Construct an empty SetVector
       SetVector() = default;
    
    Modified: vendor/llvm/dist/include/llvm/ADT/SmallBitVector.h
    ==============================================================================
    --- vendor/llvm/dist/include/llvm/ADT/SmallBitVector.h	Wed May 17 19:34:36 2017	(r318413)
    +++ vendor/llvm/dist/include/llvm/ADT/SmallBitVector.h	Wed May 17 20:22:39 2017	(r318414)
    @@ -134,6 +134,19 @@ private:
       }
     
     public:
    +  typedef const_set_bits_iterator_impl const_set_bits_iterator;
    +  typedef const_set_bits_iterator set_iterator;
    +
    +  const_set_bits_iterator set_bits_begin() const {
    +    return const_set_bits_iterator(*this);
    +  }
    +  const_set_bits_iterator set_bits_end() const {
    +    return const_set_bits_iterator(*this, -1);
    +  }
    +  iterator_range set_bits() const {
    +    return make_range(set_bits_begin(), set_bits_end());
    +  }
    +
       /// Creates an empty bitvector.
       SmallBitVector() : X(1) {}
     
    
    Modified: vendor/llvm/dist/include/llvm/ADT/SmallPtrSet.h
    ==============================================================================
    --- vendor/llvm/dist/include/llvm/ADT/SmallPtrSet.h	Wed May 17 19:34:36 2017	(r318413)
    +++ vendor/llvm/dist/include/llvm/ADT/SmallPtrSet.h	Wed May 17 20:22:39 2017	(r318414)
    @@ -27,15 +27,13 @@
     #include 
     #include 
     
    -#if LLVM_ENABLE_ABI_BREAKING_CHECKS
     namespace llvm {
    +
    +#if LLVM_ENABLE_ABI_BREAKING_CHECKS
     template  struct ReverseIterate { static bool value; };
     template  bool ReverseIterate::value = false;
    -}
     #endif
     
    -namespace llvm {
    -
     /// SmallPtrSetImplBase - This is the common code shared among all the
     /// SmallPtrSet<>'s, which is almost everything.  SmallPtrSet has two modes, one
     /// for small and one for large sets.
    @@ -92,7 +90,7 @@ protected:
       }
     
     public:
    -  typedef unsigned size_type;
    +  using size_type = unsigned;
     
       SmallPtrSetImplBase &operator=(const SmallPtrSetImplBase &) = delete;
     
    @@ -273,14 +271,14 @@ protected:
     /// SmallPtrSetIterator - This implements a const_iterator for SmallPtrSet.
     template
     class SmallPtrSetIterator : public SmallPtrSetIteratorImpl {
    -  typedef PointerLikeTypeTraits PtrTraits;
    +  using PtrTraits = PointerLikeTypeTraits;
     
     public:
    -  typedef PtrTy                     value_type;
    -  typedef PtrTy                     reference;
    -  typedef PtrTy                     pointer;
    -  typedef std::ptrdiff_t            difference_type;
    -  typedef std::forward_iterator_tag iterator_category;
    +  using value_type = PtrTy;
    +  using reference = PtrTy;
    +  using pointer = PtrTy;
    +  using difference_type = std::ptrdiff_t;
    +  using iterator_category = std::forward_iterator_tag;
     
       explicit SmallPtrSetIterator(const void *const *BP, const void *const *E)
         : SmallPtrSetIteratorImpl(BP, E) {}
    @@ -351,8 +349,8 @@ struct RoundUpToPowerOfTwo {
     template 
     class SmallPtrSetImpl : public SmallPtrSetImplBase {
       using ConstPtrType = typename add_const_past_pointer::type;
    -  typedef PointerLikeTypeTraits PtrTraits;
    -  typedef PointerLikeTypeTraits ConstPtrTraits;
    +  using PtrTraits = PointerLikeTypeTraits;
    +  using ConstPtrTraits = PointerLikeTypeTraits;
     
     protected:
       // Constructors that forward to the base.
    @@ -365,8 +363,8 @@ protected:
           : SmallPtrSetImplBase(SmallStorage, SmallSize) {}
     
     public:
    -  typedef SmallPtrSetIterator iterator;
    -  typedef SmallPtrSetIterator const_iterator;
    +  using iterator = SmallPtrSetIterator;
    +  using const_iterator = SmallPtrSetIterator;
     
       SmallPtrSetImpl(const SmallPtrSetImpl &) = delete;
     
    @@ -431,7 +429,7 @@ class SmallPtrSet : public SmallPtrSetIm
       // DenseSet<> instead if you expect many elements in the set.
       static_assert(SmallSize <= 32, "SmallSize should be small");
     
    -  typedef SmallPtrSetImpl BaseT;
    +  using BaseT = SmallPtrSetImpl;
     
       // Make sure that SmallSize is a power of two, round up if not.
       enum { SmallSizePowTwo = RoundUpToPowerOfTwo::Val };
    
    Modified: vendor/llvm/dist/include/llvm/ADT/SmallVector.h
    ==============================================================================
    --- vendor/llvm/dist/include/llvm/ADT/SmallVector.h	Wed May 17 19:34:36 2017	(r318413)
    +++ vendor/llvm/dist/include/llvm/ADT/SmallVector.h	Wed May 17 20:22:39 2017	(r318414)
    @@ -71,7 +71,7 @@ private:
       // Allocate raw space for N elements of type T.  If T has a ctor or dtor, we
       // don't want it to be automatically run, so we need to represent the space as
       // something else.  Use an array of char of sufficient alignment.
    -  typedef AlignedCharArrayUnion U;
    +  using U = AlignedCharArrayUnion;
       U FirstEl;
       // Space after 'FirstEl' is clobbered, do not add any instance vars after it.
     
    @@ -96,19 +96,19 @@ protected:
       void setEnd(T *P) { this->EndX = P; }
     
     public:
    -  typedef size_t size_type;
    -  typedef ptrdiff_t difference_type;
    -  typedef T value_type;
    -  typedef T *iterator;
    -  typedef const T *const_iterator;
    -
    -  typedef std::reverse_iterator const_reverse_iterator;
    -  typedef std::reverse_iterator reverse_iterator;
    -
    -  typedef T &reference;
    -  typedef const T &const_reference;
    -  typedef T *pointer;
    -  typedef const T *const_pointer;
    +  using size_type = size_t;
    +  using difference_type = ptrdiff_t;
    +  using value_type = T;
    +  using iterator = T *;
    +  using const_iterator = const T *;
    +
    +  using const_reverse_iterator = std::reverse_iterator;
    +  using reverse_iterator = std::reverse_iterator;
    +
    +  using reference = T &;
    +  using const_reference = const T &;
    +  using pointer = T *;
    +  using const_pointer = const T *;
     
       // forward iterator creation methods.
       LLVM_ATTRIBUTE_ALWAYS_INLINE
    @@ -319,12 +319,12 @@ public:
     /// reduce code duplication based on the SmallVector 'N' template parameter.
     template 
     class SmallVectorImpl : public SmallVectorTemplateBase::value> {
    -  typedef SmallVectorTemplateBase::value > SuperClass;
    +  using SuperClass = SmallVectorTemplateBase::value>;
     
     public:
    -  typedef typename SuperClass::iterator iterator;
    -  typedef typename SuperClass::const_iterator const_iterator;
    -  typedef typename SuperClass::size_type size_type;
    +  using iterator = typename SuperClass::iterator;
    +  using const_iterator = typename SuperClass::const_iterator;
    +  using size_type = typename SuperClass::size_type;
     
     protected:
       // Default ctor - Initialize to empty.
    @@ -845,8 +845,7 @@ class SmallVector : public SmallVectorIm
       SmallVectorStorage Storage;
     
     public:
    -  SmallVector() : SmallVectorImpl(N) {
    -  }
    +  SmallVector() : SmallVectorImpl(N) {}
     
       explicit SmallVector(size_t Size, const T &Value = T())
         : SmallVectorImpl(N) {
    @@ -883,16 +882,16 @@ public:
           SmallVectorImpl::operator=(::std::move(RHS));
       }
     
    -  const SmallVector &operator=(SmallVector &&RHS) {
    -    SmallVectorImpl::operator=(::std::move(RHS));
    -    return *this;
    -  }
    -
       SmallVector(SmallVectorImpl &&RHS) : SmallVectorImpl(N) {
         if (!RHS.empty())
           SmallVectorImpl::operator=(::std::move(RHS));
       }
     
    +  const SmallVector &operator=(SmallVector &&RHS) {
    +    SmallVectorImpl::operator=(::std::move(RHS));
    +    return *this;
    +  }
    +
       const SmallVector &operator=(SmallVectorImpl &&RHS) {
         SmallVectorImpl::operator=(::std::move(RHS));
         return *this;
    
    Modified: vendor/llvm/dist/include/llvm/ADT/SparseBitVector.h
    ==============================================================================
    --- vendor/llvm/dist/include/llvm/ADT/SparseBitVector.h	Wed May 17 19:34:36 2017	(r318413)
    +++ vendor/llvm/dist/include/llvm/ADT/SparseBitVector.h	Wed May 17 20:22:39 2017	(r318414)
    @@ -1,4 +1,4 @@
    -//===- llvm/ADT/SparseBitVector.h - Efficient Sparse BitVector -*- C++ -*- ===//
    +//===- llvm/ADT/SparseBitVector.h - Efficient Sparse BitVector --*- C++ -*-===//
     //
     //                     The LLVM Compiler Infrastructure
     //
    @@ -41,8 +41,8 @@ namespace llvm {
     
     template  struct SparseBitVectorElement {
     public:
    -  typedef unsigned long BitWord;
    -  typedef unsigned size_type;
    +  using BitWord = unsigned long;
    +  using size_type = unsigned;
       enum {
         BITWORD_SIZE = sizeof(BitWord) * CHAR_BIT,
         BITWORDS_PER_ELEMENT = (ElementSize + BITWORD_SIZE - 1) / BITWORD_SIZE,
    @@ -100,7 +100,7 @@ public:
         Bits[Idx / BITWORD_SIZE] |= 1L << (Idx % BITWORD_SIZE);
       }
     
    -  bool test_and_set (unsigned Idx) {
    +  bool test_and_set(unsigned Idx) {
         bool old = test(Idx);
         if (!old) {
           set(Idx);
    @@ -254,9 +254,9 @@ public:
     
     template 
     class SparseBitVector {
    -  typedef std::list> ElementList;
    -  typedef typename ElementList::iterator ElementListIter;
    -  typedef typename ElementList::const_iterator ElementListConstIter;
    +  using ElementList = std::list>;
    +  using ElementListIter = typename ElementList::iterator;
    +  using ElementListConstIter = typename ElementList::const_iterator;
       enum {
         BITWORD_SIZE = SparseBitVectorElement::BITWORD_SIZE
       };
    @@ -421,14 +421,12 @@ class SparseBitVector {
       };
     
     public:
    -  typedef SparseBitVectorIterator iterator;
    +  using iterator = SparseBitVectorIterator;
     
       SparseBitVector() {
         CurrElementIter = Elements.begin();
       }
     
    -  ~SparseBitVector() = default;
    -
       // SparseBitVector copy ctor.
       SparseBitVector(const SparseBitVector &RHS) {
         ElementListConstIter ElementIter = RHS.Elements.begin();
    @@ -440,6 +438,8 @@ public:
         CurrElementIter = Elements.begin ();
       }
     
    +  ~SparseBitVector() = default;
    +
       // Clear.
       void clear() {
         Elements.clear();
    
    Modified: vendor/llvm/dist/include/llvm/ADT/SparseMultiSet.h
    ==============================================================================
    --- vendor/llvm/dist/include/llvm/ADT/SparseMultiSet.h	Wed May 17 19:34:36 2017	(r318413)
    +++ vendor/llvm/dist/include/llvm/ADT/SparseMultiSet.h	Wed May 17 20:22:39 2017	(r318414)
    @@ -1,4 +1,4 @@
    -//===--- llvm/ADT/SparseMultiSet.h - Sparse multiset ------------*- C++ -*-===//
    +//===- llvm/ADT/SparseMultiSet.h - Sparse multiset --------------*- C++ -*-===//
     //
     //                     The LLVM Compiler Infrastructure
     //
    @@ -101,7 +101,7 @@ class SparseMultiSet {
         unsigned Prev;
         unsigned Next;
     
    -    SMSNode(ValueT D, unsigned P, unsigned N) : Data(D), Prev(P), Next(N) { }
    +    SMSNode(ValueT D, unsigned P, unsigned N) : Data(D), Prev(P), Next(N) {}
     
         /// List tails have invalid Nexts.
         bool isTail() const {
    @@ -118,8 +118,8 @@ class SparseMultiSet {
         bool isValid() const { return Prev != INVALID; }
       };
     
    -  typedef typename KeyFunctorT::argument_type KeyT;
    -  typedef SmallVector DenseT;
    +  using KeyT = typename KeyFunctorT::argument_type;
    +  using DenseT = SmallVector;
       DenseT Dense;
       SparseT *Sparse = nullptr;
       unsigned Universe = 0;
    @@ -183,12 +183,12 @@ class SparseMultiSet {
       }
     
     public:
    -  typedef ValueT value_type;
    -  typedef ValueT &reference;
    -  typedef const ValueT &const_reference;
    -  typedef ValueT *pointer;
    -  typedef const ValueT *const_pointer;
    -  typedef unsigned size_type;
    +  using value_type = ValueT;
    +  using reference = ValueT &;
    +  using const_reference = const ValueT &;
    +  using pointer = ValueT *;
    +  using const_pointer = const ValueT *;
    +  using size_type = unsigned;
     
       SparseMultiSet() = default;
       SparseMultiSet(const SparseMultiSet &) = delete;
    @@ -227,7 +227,7 @@ public:
         unsigned SparseIdx;
     
         iterator_base(SMSPtrTy P, unsigned I, unsigned SI)
    -      : SMS(P), Idx(I), SparseIdx(SI) { }
    +      : SMS(P), Idx(I), SparseIdx(SI) {}
     
         /// Whether our iterator has fallen outside our dense vector.
         bool isEnd() const {
    @@ -248,11 +248,11 @@ public:
         void setNext(unsigned N) { SMS->Dense[Idx].Next = N; }
     
       public:
    -    typedef std::iterator super;
    -    typedef typename super::value_type value_type;
    -    typedef typename super::difference_type difference_type;
    -    typedef typename super::pointer pointer;
    -    typedef typename super::reference reference;
    +    using super = std::iterator;
    +    using value_type = typename super::value_type;
    +    using difference_type = typename super::difference_type;
    +    using pointer = typename super::pointer;
    +    using reference = typename super::reference;
     
         reference operator*() const {
           assert(isKeyed() && SMS->sparseIndex(SMS->Dense[Idx].Data) == SparseIdx &&
    @@ -308,11 +308,12 @@ public:
           return I;
         }
       };
    -  typedef iterator_base iterator;
    -  typedef iterator_base const_iterator;
    +
    +  using iterator = iterator_base;
    +  using const_iterator = iterator_base;
     
       // Convenience types
    -  typedef std::pair RangePair;
    +  using RangePair = std::pair;
     
       /// Returns an iterator past this container. Note that such an iterator cannot
       /// be decremented, but will compare equal to other end iterators.
    
    Modified: vendor/llvm/dist/include/llvm/ADT/SparseSet.h
    ==============================================================================
    --- vendor/llvm/dist/include/llvm/ADT/SparseSet.h	Wed May 17 19:34:36 2017	(r318413)
    +++ vendor/llvm/dist/include/llvm/ADT/SparseSet.h	Wed May 17 20:22:39 2017	(r318414)
    @@ -1,4 +1,4 @@
    -//===--- llvm/ADT/SparseSet.h - Sparse set ----------------------*- C++ -*-===//
    +//===- llvm/ADT/SparseSet.h - Sparse set ------------------------*- C++ -*-===//
     //
     //                     The LLVM Compiler Infrastructure
     //
    @@ -125,9 +125,9 @@ class SparseSet {
                     !std::numeric_limits::is_signed,
                     "SparseT must be an unsigned integer type");
     
    -  typedef typename KeyFunctorT::argument_type KeyT;
    -  typedef SmallVector DenseT;
    -  typedef unsigned size_type;
    +  using KeyT = typename KeyFunctorT::argument_type;
    +  using DenseT = SmallVector;
    +  using size_type = unsigned;
       DenseT Dense;
       SparseT *Sparse = nullptr;
       unsigned Universe = 0;
    @@ -135,11 +135,11 @@ class SparseSet {
       SparseSetValFunctor ValIndexOf;
     
     public:
    -  typedef ValueT value_type;
    -  typedef ValueT &reference;
    -  typedef const ValueT &const_reference;
    -  typedef ValueT *pointer;
    -  typedef const ValueT *const_pointer;
    +  using value_type = ValueT;
    +  using reference = ValueT &;
    +  using const_reference = const ValueT &;
    +  using pointer = ValueT *;
    +  using const_pointer = const ValueT *;
     
       SparseSet() = default;
       SparseSet(const SparseSet &) = delete;
    @@ -168,8 +168,8 @@ public:
       }
     
       // Import trivial vector stuff from DenseT.
    -  typedef typename DenseT::iterator iterator;
    -  typedef typename DenseT::const_iterator const_iterator;
    +  using iterator = typename DenseT::iterator;
    +  using const_iterator = typename DenseT::const_iterator;
     
       const_iterator begin() const { return Dense.begin(); }
       const_iterator end() const { return Dense.end(); }
    
    Modified: vendor/llvm/dist/include/llvm/ADT/StringExtras.h
    ==============================================================================
    --- vendor/llvm/dist/include/llvm/ADT/StringExtras.h	Wed May 17 19:34:36 2017	(r318413)
    +++ vendor/llvm/dist/include/llvm/ADT/StringExtras.h	Wed May 17 20:22:39 2017	(r318414)
    @@ -1,4 +1,4 @@
    -//===-- llvm/ADT/StringExtras.h - Useful string functions -------*- C++ -*-===//
    +//===- llvm/ADT/StringExtras.h - Useful string functions --------*- C++ -*-===//
     //
     //                     The LLVM Compiler Infrastructure
     //
    @@ -15,12 +15,18 @@
     #define LLVM_ADT_STRINGEXTRAS_H
     
     #include "llvm/ADT/StringRef.h"
    -#include "llvm/Support/DataTypes.h"
     #include 
    +#include 
    +#include 
    +#include 
    +#include 
    +#include 
    +#include 
     
     namespace llvm {
    -class raw_ostream;
    +
     template class SmallVectorImpl;
    +class raw_ostream;
     
     /// hexdigit - Return the hexadecimal character for the
    
    *** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
    
    From owner-svn-src-vendor@freebsd.org  Wed May 17 20:22:46 2017
    Return-Path: 
    Delivered-To: svn-src-vendor@mailman.ysv.freebsd.org
    Received: from mx1.freebsd.org (mx1.freebsd.org
     [IPv6:2001:1900:2254:206a::19:1])
     by mailman.ysv.freebsd.org (Postfix) with ESMTP id EDA7FD714AD;
     Wed, 17 May 2017 20:22:46 +0000 (UTC) (envelope-from dim@FreeBSD.org)
    Received: from repo.freebsd.org (repo.freebsd.org
     [IPv6:2610:1c1:1:6068::e6a:0])
     (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
     (Client did not present a certificate)
     by mx1.freebsd.org (Postfix) with ESMTPS id A462E1BF4;
     Wed, 17 May 2017 20:22:46 +0000 (UTC) (envelope-from dim@FreeBSD.org)
    Received: from repo.freebsd.org ([127.0.1.37])
     by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v4HKMjpJ015294;
     Wed, 17 May 2017 20:22:45 GMT (envelope-from dim@FreeBSD.org)
    Received: (from dim@localhost)
     by repo.freebsd.org (8.15.2/8.15.2/Submit) id v4HKMjbD015293;
     Wed, 17 May 2017 20:22:45 GMT (envelope-from dim@FreeBSD.org)
    Message-Id: <201705172022.v4HKMjbD015293@repo.freebsd.org>
    X-Authentication-Warning: repo.freebsd.org: dim set sender to dim@FreeBSD.org
     using -f
    From: Dimitry Andric 
    Date: Wed, 17 May 2017 20:22:45 +0000 (UTC)
    To: src-committers@freebsd.org, svn-src-all@freebsd.org,
     svn-src-vendor@freebsd.org
    Subject: svn commit: r318415 - vendor/llvm/llvm-trunk-r303291
    X-SVN-Group: vendor
    MIME-Version: 1.0
    Content-Type: text/plain; charset=UTF-8
    Content-Transfer-Encoding: 8bit
    X-BeenThere: svn-src-vendor@freebsd.org
    X-Mailman-Version: 2.1.23
    Precedence: list
    List-Id: SVN commit messages for the vendor work area tree
     
    List-Unsubscribe: , 
     
    List-Archive: 
    List-Post: 
    List-Help: 
    List-Subscribe: ,
     
    X-List-Received-Date: Wed, 17 May 2017 20:22:47 -0000
    
    Author: dim
    Date: Wed May 17 20:22:45 2017
    New Revision: 318415
    URL: https://svnweb.freebsd.org/changeset/base/318415
    
    Log:
      Tag llvm trunk r303291.
    
    Added:
      vendor/llvm/llvm-trunk-r303291/
         - copied from r318414, vendor/llvm/dist/
    
    From owner-svn-src-vendor@freebsd.org  Wed May 17 20:22:57 2017
    Return-Path: 
    Delivered-To: svn-src-vendor@mailman.ysv.freebsd.org
    Received: from mx1.freebsd.org (mx1.freebsd.org
     [IPv6:2001:1900:2254:206a::19:1])
     by mailman.ysv.freebsd.org (Postfix) with ESMTP id C359DD7151F;
     Wed, 17 May 2017 20:22:57 +0000 (UTC) (envelope-from dim@FreeBSD.org)
    Received: from repo.freebsd.org (repo.freebsd.org
     [IPv6:2610:1c1:1:6068::e6a:0])
     (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
     (Client did not present a certificate)
     by mx1.freebsd.org (Postfix) with ESMTPS id 7D4051CC4;
     Wed, 17 May 2017 20:22:57 +0000 (UTC) (envelope-from dim@FreeBSD.org)
    Received: from repo.freebsd.org ([127.0.1.37])
     by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v4HKMuim015420;
     Wed, 17 May 2017 20:22:56 GMT (envelope-from dim@FreeBSD.org)
    Received: (from dim@localhost)
     by repo.freebsd.org (8.15.2/8.15.2/Submit) id v4HKMuL4015419;
     Wed, 17 May 2017 20:22:56 GMT (envelope-from dim@FreeBSD.org)
    Message-Id: <201705172022.v4HKMuL4015419@repo.freebsd.org>
    X-Authentication-Warning: repo.freebsd.org: dim set sender to dim@FreeBSD.org
     using -f
    From: Dimitry Andric 
    Date: Wed, 17 May 2017 20:22:56 +0000 (UTC)
    To: src-committers@freebsd.org, svn-src-all@freebsd.org,
     svn-src-vendor@freebsd.org
    Subject: svn commit: r318417 - vendor/clang/clang-trunk-r303291
    X-SVN-Group: vendor
    MIME-Version: 1.0
    Content-Type: text/plain; charset=UTF-8
    Content-Transfer-Encoding: 8bit
    X-BeenThere: svn-src-vendor@freebsd.org
    X-Mailman-Version: 2.1.23
    Precedence: list
    List-Id: SVN commit messages for the vendor work area tree
     
    List-Unsubscribe: , 
     
    List-Archive: 
    List-Post: 
    List-Help: 
    List-Subscribe: ,
     
    X-List-Received-Date: Wed, 17 May 2017 20:22:57 -0000
    
    Author: dim
    Date: Wed May 17 20:22:56 2017
    New Revision: 318417
    URL: https://svnweb.freebsd.org/changeset/base/318417
    
    Log:
      Tag clang trunk r303291.
    
    Added:
      vendor/clang/clang-trunk-r303291/
         - copied from r318416, vendor/clang/dist/
    
    From owner-svn-src-vendor@freebsd.org  Wed May 17 20:22:53 2017
    Return-Path: 
    Delivered-To: svn-src-vendor@mailman.ysv.freebsd.org
    Received: from mx1.freebsd.org (mx1.freebsd.org
     [IPv6:2001:1900:2254:206a::19:1])
     by mailman.ysv.freebsd.org (Postfix) with ESMTP id E5EA6D7150A;
     Wed, 17 May 2017 20:22:53 +0000 (UTC) (envelope-from dim@FreeBSD.org)
    Received: from repo.freebsd.org (repo.freebsd.org
     [IPv6:2610:1c1:1:6068::e6a:0])
     (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
     (Client did not present a certificate)
     by mx1.freebsd.org (Postfix) with ESMTPS id 88F5F1C6E;
     Wed, 17 May 2017 20:22:53 +0000 (UTC) (envelope-from dim@FreeBSD.org)
    Received: from repo.freebsd.org ([127.0.1.37])
     by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v4HKMqOU015373;
     Wed, 17 May 2017 20:22:52 GMT (envelope-from dim@FreeBSD.org)
    Received: (from dim@localhost)
     by repo.freebsd.org (8.15.2/8.15.2/Submit) id v4HKMnbE015346;
     Wed, 17 May 2017 20:22:49 GMT (envelope-from dim@FreeBSD.org)
    Message-Id: <201705172022.v4HKMnbE015346@repo.freebsd.org>
    X-Authentication-Warning: repo.freebsd.org: dim set sender to dim@FreeBSD.org
     using -f
    From: Dimitry Andric 
    Date: Wed, 17 May 2017 20:22:49 +0000 (UTC)
    To: src-committers@freebsd.org, svn-src-all@freebsd.org,
     svn-src-vendor@freebsd.org
    Subject: svn commit: r318416 - in vendor/clang/dist: include/clang/AST
     include/clang/Basic include/clang/Frontend include/clang/Sema lib/AST
     lib/CodeGen lib/Driver/ToolChains lib/Frontend lib/Headers lib/Le...
    X-SVN-Group: vendor
    MIME-Version: 1.0
    Content-Type: text/plain; charset=UTF-8
    Content-Transfer-Encoding: 8bit
    X-BeenThere: svn-src-vendor@freebsd.org
    X-Mailman-Version: 2.1.23
    Precedence: list
    List-Id: SVN commit messages for the vendor work area tree
     
    List-Unsubscribe: , 
     
    List-Archive: 
    List-Post: 
    List-Help: 
    List-Subscribe: ,
     
    X-List-Received-Date: Wed, 17 May 2017 20:22:54 -0000
    
    Author: dim
    Date: Wed May 17 20:22:49 2017
    New Revision: 318416
    URL: https://svnweb.freebsd.org/changeset/base/318416
    
    Log:
      Vendor import of clang trunk r303291:
      https://llvm.org/svn/llvm-project/cfe/trunk@303291
    
    Added:
      vendor/clang/dist/test/Modules/Inputs/objcAtKeywordMissingEnd.h   (contents, props changed)
      vendor/clang/dist/test/Modules/objc-at-keyword.m
    Modified:
      vendor/clang/dist/include/clang/AST/Decl.h
      vendor/clang/dist/include/clang/AST/DeclBase.h
      vendor/clang/dist/include/clang/Basic/LangOptions.h
      vendor/clang/dist/include/clang/Basic/SourceManager.h
      vendor/clang/dist/include/clang/Frontend/ASTUnit.h
      vendor/clang/dist/include/clang/Sema/Sema.h
      vendor/clang/dist/lib/AST/ASTDumper.cpp
      vendor/clang/dist/lib/AST/Decl.cpp
      vendor/clang/dist/lib/AST/DeclBase.cpp
      vendor/clang/dist/lib/AST/ODRHash.cpp
      vendor/clang/dist/lib/CodeGen/CGDebugInfo.cpp
      vendor/clang/dist/lib/Driver/ToolChains/MSVC.cpp
      vendor/clang/dist/lib/Frontend/ASTUnit.cpp
      vendor/clang/dist/lib/Headers/xmmintrin.h
      vendor/clang/dist/lib/Lex/Lexer.cpp
      vendor/clang/dist/lib/Sema/Sema.cpp
      vendor/clang/dist/lib/Sema/SemaDecl.cpp
      vendor/clang/dist/lib/Sema/SemaLookup.cpp
      vendor/clang/dist/lib/Serialization/ASTReader.cpp
      vendor/clang/dist/test/CodeGenCXX/debug-info-namespace.cpp
      vendor/clang/dist/test/Modules/Inputs/module.map
      vendor/clang/dist/test/Modules/Inputs/submodule-visibility/b.h
      vendor/clang/dist/test/Modules/Inputs/submodule-visibility/other.h
      vendor/clang/dist/test/Modules/odr_hash.cpp
      vendor/clang/dist/test/Modules/submodule-visibility.cpp
    
    Modified: vendor/clang/dist/include/clang/AST/Decl.h
    ==============================================================================
    --- vendor/clang/dist/include/clang/AST/Decl.h	Wed May 17 20:22:45 2017	(r318415)
    +++ vendor/clang/dist/include/clang/AST/Decl.h	Wed May 17 20:22:49 2017	(r318416)
    @@ -301,16 +301,6 @@ public:
       using Decl::isModulePrivate;
       using Decl::setModulePrivate;
     
    -  /// \brief Determine whether this declaration is hidden from name lookup.
    -  bool isHidden() const { return Hidden; }
    -
    -  /// \brief Set whether this declaration is hidden from name lookup.
    -  void setHidden(bool Hide) {
    -    assert((!Hide || isFromASTFile() || hasLocalOwningModuleStorage()) &&
    -           "declaration with no owning module can't be hidden");
    -    Hidden = Hide;
    -  }
    -
       /// \brief Determine whether this declaration is a C++ class member.
       bool isCXXClassMember() const {
         const DeclContext *DC = getDeclContext();
    
    Modified: vendor/clang/dist/include/clang/AST/DeclBase.h
    ==============================================================================
    --- vendor/clang/dist/include/clang/AST/DeclBase.h	Wed May 17 20:22:45 2017	(r318415)
    +++ vendor/clang/dist/include/clang/AST/DeclBase.h	Wed May 17 20:22:49 2017	(r318416)
    @@ -706,6 +706,20 @@ public:
         reinterpret_cast(this)[-1] = M;
       }
     
    +  Module *getOwningModule() const {
    +    return isFromASTFile() ? getImportedOwningModule() : getLocalOwningModule();
    +  }
    +
    +  /// \brief Determine whether this declaration is hidden from name lookup.
    +  bool isHidden() const { return Hidden; }
    +
    +  /// \brief Set whether this declaration is hidden from name lookup.
    +  void setHidden(bool Hide) {
    +    assert((!Hide || isFromASTFile() || hasLocalOwningModuleStorage()) &&
    +           "declaration with no owning module can't be hidden");
    +    Hidden = Hide;
    +  }
    +
       unsigned getIdentifierNamespace() const {
         return IdentifierNamespace;
       }
    
    Modified: vendor/clang/dist/include/clang/Basic/LangOptions.h
    ==============================================================================
    --- vendor/clang/dist/include/clang/Basic/LangOptions.h	Wed May 17 20:22:45 2017	(r318415)
    +++ vendor/clang/dist/include/clang/Basic/LangOptions.h	Wed May 17 20:22:49 2017	(r318416)
    @@ -166,6 +166,11 @@ public:
         return getCompilingModule() != CMK_None;
       }
     
    +  /// Do we need to track the owning module for a local declaration?
    +  bool trackLocalOwningModule() const {
    +    return ModulesLocalVisibility;
    +  }
    +
       bool isSignedOverflowDefined() const {
         return getSignedOverflowBehavior() == SOB_Defined;
       }
    
    Modified: vendor/clang/dist/include/clang/Basic/SourceManager.h
    ==============================================================================
    --- vendor/clang/dist/include/clang/Basic/SourceManager.h	Wed May 17 20:22:45 2017	(r318415)
    +++ vendor/clang/dist/include/clang/Basic/SourceManager.h	Wed May 17 20:22:49 2017	(r318416)
    @@ -865,7 +865,7 @@ public:
                                 const FileEntry *NewFile);
     
       /// \brief Returns true if the file contents have been overridden.
    -  bool isFileOverridden(const FileEntry *File) {
    +  bool isFileOverridden(const FileEntry *File) const {
         if (OverriddenFilesInfo) {
           if (OverriddenFilesInfo->OverriddenFilesWithBuffer.count(File))
             return true;
    
    Modified: vendor/clang/dist/include/clang/Frontend/ASTUnit.h
    ==============================================================================
    --- vendor/clang/dist/include/clang/Frontend/ASTUnit.h	Wed May 17 20:22:45 2017	(r318415)
    +++ vendor/clang/dist/include/clang/Frontend/ASTUnit.h	Wed May 17 20:22:49 2017	(r318416)
    @@ -419,7 +419,6 @@ private:
       
       explicit ASTUnit(bool MainFileIsAST);
     
    -  void CleanTemporaryFiles();
       bool Parse(std::shared_ptr PCHContainerOps,
                  std::unique_ptr OverrideMainBuffer);
     
    @@ -530,11 +529,6 @@ public:
       ASTMutationListener *getASTMutationListener();
       ASTDeserializationListener *getDeserializationListener();
     
    -  /// \brief Add a temporary file that the ASTUnit depends on.
    -  ///
    -  /// This file will be erased when the ASTUnit is destroyed.
    -  void addTemporaryFile(StringRef TempFile);
    -
       bool getOnlyLocalDecls() const { return OnlyLocalDecls; }
     
       bool getOwnsRemappedFileBuffers() const { return OwnsRemappedFileBuffers; }
    
    Modified: vendor/clang/dist/include/clang/Sema/Sema.h
    ==============================================================================
    --- vendor/clang/dist/include/clang/Sema/Sema.h	Wed May 17 20:22:45 2017	(r318415)
    +++ vendor/clang/dist/include/clang/Sema/Sema.h	Wed May 17 20:22:49 2017	(r318416)
    @@ -1467,11 +1467,9 @@ private:
     
       VisibleModuleSet VisibleModules;
     
    -  Module *CachedFakeTopLevelModule;
    -
     public:
       /// \brief Get the module owning an entity.
    -  Module *getOwningModule(Decl *Entity);
    +  Module *getOwningModule(Decl *Entity) { return Entity->getOwningModule(); }
     
       /// \brief Make a merged definition of an existing hidden definition \p ND
       /// visible at the specified location.
    
    Modified: vendor/clang/dist/lib/AST/ASTDumper.cpp
    ==============================================================================
    --- vendor/clang/dist/lib/AST/ASTDumper.cpp	Wed May 17 20:22:45 2017	(r318415)
    +++ vendor/clang/dist/lib/AST/ASTDumper.cpp	Wed May 17 20:22:49 2017	(r318416)
    @@ -1038,10 +1038,10 @@ void ASTDumper::dumpDecl(const Decl *D) 
         dumpSourceRange(D->getSourceRange());
         OS << ' ';
         dumpLocation(D->getLocation());
    -    if (Module *M = D->getImportedOwningModule())
    +    if (D->isFromASTFile())
    +      OS << " imported";
    +    if (Module *M = D->getOwningModule())
           OS << " in " << M->getFullModuleName();
    -    else if (Module *M = D->getLocalOwningModule())
    -      OS << " in (local) " << M->getFullModuleName();
         if (auto *ND = dyn_cast(D))
           for (Module *M : D->getASTContext().getModulesWithMergedDefinition(
                    const_cast(ND)))
    
    Modified: vendor/clang/dist/lib/AST/Decl.cpp
    ==============================================================================
    --- vendor/clang/dist/lib/AST/Decl.cpp	Wed May 17 20:22:45 2017	(r318415)
    +++ vendor/clang/dist/lib/AST/Decl.cpp	Wed May 17 20:22:49 2017	(r318416)
    @@ -47,9 +47,7 @@ bool Decl::isOutOfLine() const {
     
     TranslationUnitDecl::TranslationUnitDecl(ASTContext &ctx)
         : Decl(TranslationUnit, nullptr, SourceLocation()),
    -      DeclContext(TranslationUnit), Ctx(ctx), AnonymousNamespace(nullptr) {
    -  Hidden = Ctx.getLangOpts().ModulesLocalVisibility;
    -}
    +      DeclContext(TranslationUnit), Ctx(ctx), AnonymousNamespace(nullptr) {}
     
     //===----------------------------------------------------------------------===//
     // NamedDecl Implementation
    
    Modified: vendor/clang/dist/lib/AST/DeclBase.cpp
    ==============================================================================
    --- vendor/clang/dist/lib/AST/DeclBase.cpp	Wed May 17 20:22:45 2017	(r318415)
    +++ vendor/clang/dist/lib/AST/DeclBase.cpp	Wed May 17 20:22:49 2017	(r318416)
    @@ -75,7 +75,7 @@ void *Decl::operator new(std::size_t Siz
       assert(!Parent || &Parent->getParentASTContext() == &Ctx);
       // With local visibility enabled, we track the owning module even for local
       // declarations.
    -  if (Ctx.getLangOpts().ModulesLocalVisibility) {
    +  if (Ctx.getLangOpts().trackLocalOwningModule()) {
         // Ensure required alignment of the resulting object by adding extra
         // padding at the start if required.
         size_t ExtraAlign =
    @@ -83,7 +83,9 @@ void *Decl::operator new(std::size_t Siz
         char *Buffer = reinterpret_cast(
             ::operator new(ExtraAlign + sizeof(Module *) + Size + Extra, Ctx));
         Buffer += ExtraAlign;
    -    return new (Buffer) Module*(nullptr) + 1;
    +    auto *ParentModule =
    +        Parent ? cast(Parent)->getOwningModule() : nullptr;
    +    return new (Buffer) Module*(ParentModule) + 1;
       }
       return ::operator new(Size + Extra, Ctx);
     }
    @@ -94,7 +96,7 @@ Module *Decl::getOwningModuleSlow() cons
     }
     
     bool Decl::hasLocalOwningModuleStorage() const {
    -  return getASTContext().getLangOpts().ModulesLocalVisibility;
    +  return getASTContext().getLangOpts().trackLocalOwningModule();
     }
     
     const char *Decl::getDeclKindName() const {
    @@ -273,6 +275,8 @@ void Decl::setLexicalDeclContext(DeclCon
         getMultipleDC()->LexicalDC = DC;
       }
       Hidden = cast(DC)->Hidden;
    +  if (Hidden && !isFromASTFile() && hasLocalOwningModuleStorage())
    +    setLocalOwningModule(cast(DC)->getOwningModule());
     }
     
     void Decl::setDeclContextsImpl(DeclContext *SemaDC, DeclContext *LexicalDC,
    
    Modified: vendor/clang/dist/lib/AST/ODRHash.cpp
    ==============================================================================
    --- vendor/clang/dist/lib/AST/ODRHash.cpp	Wed May 17 20:22:45 2017	(r318415)
    +++ vendor/clang/dist/lib/AST/ODRHash.cpp	Wed May 17 20:22:49 2017	(r318416)
    @@ -81,7 +81,35 @@ void ODRHash::AddDeclarationName(Declara
       }
     }
     
    -void ODRHash::AddNestedNameSpecifier(const NestedNameSpecifier *NNS) {}
    +void ODRHash::AddNestedNameSpecifier(const NestedNameSpecifier *NNS) {
    +  assert(NNS && "Expecting non-null pointer.");
    +  const auto *Prefix = NNS->getPrefix();
    +  AddBoolean(Prefix);
    +  if (Prefix) {
    +    AddNestedNameSpecifier(Prefix);
    +  }
    +  auto Kind = NNS->getKind();
    +  ID.AddInteger(Kind);
    +  switch (Kind) {
    +  case NestedNameSpecifier::Identifier:
    +    AddIdentifierInfo(NNS->getAsIdentifier());
    +    break;
    +  case NestedNameSpecifier::Namespace:
    +    AddDecl(NNS->getAsNamespace());
    +    break;
    +  case NestedNameSpecifier::NamespaceAlias:
    +    AddDecl(NNS->getAsNamespaceAlias());
    +    break;
    +  case NestedNameSpecifier::TypeSpec:
    +  case NestedNameSpecifier::TypeSpecWithTemplate:
    +    AddType(NNS->getAsType());
    +    break;
    +  case NestedNameSpecifier::Global:
    +  case NestedNameSpecifier::Super:
    +    break;
    +  }
    +}
    +
     void ODRHash::AddTemplateName(TemplateName Name) {}
     void ODRHash::AddTemplateArgument(TemplateArgument TA) {}
     void ODRHash::AddTemplateParameterList(const TemplateParameterList *TPL) {}
    @@ -335,6 +363,20 @@ public:
         Hash.AddQualType(T);
       }
     
    +  void AddNestedNameSpecifier(const NestedNameSpecifier *NNS) {
    +    Hash.AddBoolean(NNS);
    +    if (NNS) {
    +      Hash.AddNestedNameSpecifier(NNS);
    +    }
    +  }
    +
    +  void AddIdentifierInfo(const IdentifierInfo *II) {
    +    Hash.AddBoolean(II);
    +    if (II) {
    +      Hash.AddIdentifierInfo(II);
    +    }
    +  }
    +
       void VisitQualifiers(Qualifiers Quals) {
         ID.AddInteger(Quals.getAsOpaqueValue());
       }
    @@ -414,6 +456,42 @@ public:
         AddQualType(T->getDecl()->getUnderlyingType().getCanonicalType());
         VisitType(T);
       }
    +
    +  void VisitTagType(const TagType *T) {
    +    AddDecl(T->getDecl());
    +    VisitType(T);
    +  }
    +
    +  void VisitRecordType(const RecordType *T) { VisitTagType(T); }
    +  void VisitEnumType(const EnumType *T) { VisitTagType(T); }
    +
    +  void VisitTypeWithKeyword(const TypeWithKeyword *T) {
    +    ID.AddInteger(T->getKeyword());
    +    VisitType(T);
    +  };
    +
    +  void VisitDependentNameType(const DependentNameType *T) {
    +    AddNestedNameSpecifier(T->getQualifier());
    +    AddIdentifierInfo(T->getIdentifier());
    +    VisitTypeWithKeyword(T);
    +  }
    +
    +  void VisitDependentTemplateSpecializationType(
    +      const DependentTemplateSpecializationType *T) {
    +    AddIdentifierInfo(T->getIdentifier());
    +    AddNestedNameSpecifier(T->getQualifier());
    +    ID.AddInteger(T->getNumArgs());
    +    for (const auto &TA : T->template_arguments()) {
    +      Hash.AddTemplateArgument(TA);
    +    }
    +    VisitTypeWithKeyword(T);
    +  }
    +
    +  void VisitElaboratedType(const ElaboratedType *T) {
    +    AddNestedNameSpecifier(T->getQualifier());
    +    AddQualType(T->getNamedType());
    +    VisitTypeWithKeyword(T);
    +  }
     };
     
     void ODRHash::AddType(const Type *T) {
    
    Modified: vendor/clang/dist/lib/CodeGen/CGDebugInfo.cpp
    ==============================================================================
    --- vendor/clang/dist/lib/CodeGen/CGDebugInfo.cpp	Wed May 17 20:22:45 2017	(r318415)
    +++ vendor/clang/dist/lib/CodeGen/CGDebugInfo.cpp	Wed May 17 20:22:49 2017	(r318416)
    @@ -2860,7 +2860,7 @@ void CGDebugInfo::collectFunctionDeclPro
     
       if (DebugKind >= codegenoptions::LimitedDebugInfo) {
         if (const NamespaceDecl *NSDecl =
    -        dyn_cast_or_null(FD->getLexicalDeclContext()))
    +        dyn_cast_or_null(FD->getDeclContext()))
           FDContext = getOrCreateNamespace(NSDecl);
         else if (const RecordDecl *RDecl =
                  dyn_cast_or_null(FD->getDeclContext())) {
    
    Modified: vendor/clang/dist/lib/Driver/ToolChains/MSVC.cpp
    ==============================================================================
    --- vendor/clang/dist/lib/Driver/ToolChains/MSVC.cpp	Wed May 17 20:22:45 2017	(r318415)
    +++ vendor/clang/dist/lib/Driver/ToolChains/MSVC.cpp	Wed May 17 20:22:49 2017	(r318416)
    @@ -125,8 +125,15 @@ static bool findVCToolChainViaEnvironmen
             continue;
     
           // whatever/VC/bin --> old toolchain, VC dir is toolchain dir.
    -      if (llvm::sys::path::filename(PathEntry) == "bin") {
    -        llvm::StringRef ParentPath = llvm::sys::path::parent_path(PathEntry);
    +      llvm::StringRef TestPath = PathEntry;
    +      bool IsBin = llvm::sys::path::filename(TestPath).equals_lower("bin");
    +      if (!IsBin) {
    +        // Strip any architecture subdir like "amd64".
    +        TestPath = llvm::sys::path::parent_path(TestPath);
    +        IsBin = llvm::sys::path::filename(TestPath).equals_lower("bin");
    +      }
    +      if (IsBin) {
    +        llvm::StringRef ParentPath = llvm::sys::path::parent_path(TestPath);
             if (llvm::sys::path::filename(ParentPath) == "VC") {
               Path = ParentPath;
               IsVS2017OrNewer = false;
    
    Modified: vendor/clang/dist/lib/Frontend/ASTUnit.cpp
    ==============================================================================
    --- vendor/clang/dist/lib/Frontend/ASTUnit.cpp	Wed May 17 20:22:45 2017	(r318415)
    +++ vendor/clang/dist/lib/Frontend/ASTUnit.cpp	Wed May 17 20:22:49 2017	(r318416)
    @@ -84,13 +84,6 @@ namespace {
         /// \brief The file in which the precompiled preamble is stored.
         std::string PreambleFile;
     
    -    /// \brief Temporary files that should be removed when the ASTUnit is
    -    /// destroyed.
    -    SmallVector TemporaryFiles;
    -
    -    /// \brief Erase temporary files.
    -    void CleanTemporaryFiles();
    -
         /// \brief Erase the preamble file.
         void CleanPreambleFile();
     
    @@ -163,12 +156,6 @@ static const std::string &getPreambleFil
       return getOnDiskData(AU).PreambleFile;  
     }
     
    -void OnDiskData::CleanTemporaryFiles() {
    -  for (StringRef File : TemporaryFiles)
    -    llvm::sys::fs::remove(File);
    -  TemporaryFiles.clear();
    -}
    -
     void OnDiskData::CleanPreambleFile() {
       if (!PreambleFile.empty()) {
         llvm::sys::fs::remove(PreambleFile);
    @@ -177,7 +164,6 @@ void OnDiskData::CleanPreambleFile() {
     }
     
     void OnDiskData::Cleanup() {
    -  CleanTemporaryFiles();
       CleanPreambleFile();
     }
     
    @@ -194,14 +180,6 @@ void ASTUnit::clearFileLevelDecls() {
       llvm::DeleteContainerSeconds(FileDecls);
     }
     
    -void ASTUnit::CleanTemporaryFiles() {
    -  getOnDiskData(this).CleanTemporaryFiles();
    -}
    -
    -void ASTUnit::addTemporaryFile(StringRef TempFile) {
    -  getOnDiskData(this).TemporaryFiles.push_back(TempFile);
    -}
    -
     /// \brief After failing to build a precompiled preamble (due to
     /// errors in the source that occurs in the preamble), the number of
     /// reparses during which we'll skip even trying to precompile the
    @@ -1100,7 +1078,6 @@ bool ASTUnit::Parse(std::shared_ptr
     ///
     /// \code
    -/// void _mm_extract_pi(__m64 a, int n);
    +/// int _mm_extract_pi16(__m64 a, int n);
     /// \endcode
     ///
     /// This intrinsic corresponds to the  VPEXTRW / PEXTRW  instruction.
    @@ -2157,7 +2157,7 @@ void _mm_sfence(void);
     /// \headerfile 
     ///
     /// \code
    -/// void _mm_insert_pi(__m64 a, int d, int n);
    +/// __m64 _mm_insert_pi16(__m64 a, int d, int n);
     /// \endcode
     ///
     /// This intrinsic corresponds to the  VPINSRW / PINSRW  instruction.
    @@ -2680,8 +2680,7 @@ _mm_movelh_ps(__m128 __a, __m128 __b)
     ///
     /// \headerfile 
     ///
    -/// This intrinsic corresponds to the  CVTPI2PS + \c COMPOSITE 
    -///   instruction.
    +/// This intrinsic corresponds to the  CVTPI2PS + COMPOSITE  instruction.
     ///
     /// \param __a
     ///    A 64-bit vector of [4 x i16]. The elements of the destination are copied
    @@ -2711,8 +2710,7 @@ _mm_cvtpi16_ps(__m64 __a)
     ///
     /// \headerfile 
     ///
    -/// This intrinsic corresponds to the  CVTPI2PS + \c COMPOSITE 
    -///   instruction.
    +/// This intrinsic corresponds to the  CVTPI2PS + COMPOSITE  instruction.
     ///
     /// \param __a
     ///    A 64-bit vector of 16-bit unsigned integer values. The elements of the
    @@ -2741,8 +2739,7 @@ _mm_cvtpu16_ps(__m64 __a)
     ///
     /// \headerfile 
     ///
    -/// This intrinsic corresponds to the  CVTPI2PS + \c COMPOSITE 
    -///   instruction.
    +/// This intrinsic corresponds to the  CVTPI2PS + COMPOSITE  instruction.
     ///
     /// \param __a
     ///    A 64-bit vector of [8 x i8]. The elements of the destination are copied
    @@ -2766,8 +2763,7 @@ _mm_cvtpi8_ps(__m64 __a)
     ///
     /// \headerfile 
     ///
    -/// This intrinsic corresponds to the  CVTPI2PS + \c COMPOSITE 
    -///   instruction.
    +/// This intrinsic corresponds to the  CVTPI2PS + COMPOSITE  instruction.
     ///
     /// \param __a
     ///    A 64-bit vector of unsigned 8-bit integer values. The elements of the
    @@ -2791,8 +2787,7 @@ _mm_cvtpu8_ps(__m64 __a)
     ///
     /// \headerfile 
     ///
    -/// This intrinsic corresponds to the  CVTPI2PS + \c COMPOSITE 
    -///   instruction.
    +/// This intrinsic corresponds to the  CVTPI2PS + COMPOSITE  instruction.
     ///
     /// \param __a
     ///    A 64-bit vector of [2 x i32]. The lower elements of the destination are
    @@ -2826,8 +2821,7 @@ _mm_cvtpi32x2_ps(__m64 __a, __m64 __b)
     ///
     /// \headerfile 
     ///
    -/// This intrinsic corresponds to the  CVTPS2PI + \c COMPOSITE 
    -///   instruction.
    +/// This intrinsic corresponds to the  CVTPS2PI + COMPOSITE  instruction.
     ///
     /// \param __a
     ///    A 128-bit floating-point vector of [4 x float].
    @@ -2857,8 +2851,7 @@ _mm_cvtps_pi16(__m128 __a)
     ///
     /// \headerfile 
     ///
    -/// This intrinsic corresponds to the  CVTPS2PI + \c COMPOSITE 
    -///   instruction.
    +/// This intrinsic corresponds to the  CVTPS2PI + COMPOSITE  instruction.
     ///
     /// \param __a
     ///    128-bit floating-point vector of [4 x float].
    
    Modified: vendor/clang/dist/lib/Lex/Lexer.cpp
    ==============================================================================
    --- vendor/clang/dist/lib/Lex/Lexer.cpp	Wed May 17 20:22:45 2017	(r318415)
    +++ vendor/clang/dist/lib/Lex/Lexer.cpp	Wed May 17 20:22:49 2017	(r318416)
    @@ -43,6 +43,8 @@ using namespace clang;
     
     /// isObjCAtKeyword - Return true if we have an ObjC keyword identifier.
     bool Token::isObjCAtKeyword(tok::ObjCKeywordKind objcKey) const {
    +  if (isAnnotation())
    +    return false;
       if (IdentifierInfo *II = getIdentifierInfo())
         return II->getObjCKeywordID() == objcKey;
       return false;
    @@ -50,6 +52,8 @@ bool Token::isObjCAtKeyword(tok::ObjCKey
     
     /// getObjCKeywordID - Return the ObjC keyword kind.
     tok::ObjCKeywordKind Token::getObjCKeywordID() const {
    +  if (isAnnotation())
    +    return tok::objc_not_keyword;
       IdentifierInfo *specId = getIdentifierInfo();
       return specId ? specId->getObjCKeywordID() : tok::objc_not_keyword;
     }
    
    Modified: vendor/clang/dist/lib/Sema/Sema.cpp
    ==============================================================================
    --- vendor/clang/dist/lib/Sema/Sema.cpp	Wed May 17 20:22:45 2017	(r318415)
    +++ vendor/clang/dist/lib/Sema/Sema.cpp	Wed May 17 20:22:49 2017	(r318416)
    @@ -93,11 +93,10 @@ Sema::Sema(Preprocessor &pp, ASTContext 
           ValueWithBytesObjCTypeMethod(nullptr), NSArrayDecl(nullptr),
           ArrayWithObjectsMethod(nullptr), NSDictionaryDecl(nullptr),
           DictionaryWithObjectsMethod(nullptr), GlobalNewDeleteDeclared(false),
    -      TUKind(TUKind), NumSFINAEErrors(0), CachedFakeTopLevelModule(nullptr),
    -      AccessCheckingSFINAE(false), InNonInstantiationSFINAEContext(false),
    -      NonInstantiationEntries(0), ArgumentPackSubstitutionIndex(-1),
    -      CurrentInstantiationScope(nullptr), DisableTypoCorrection(false),
    -      TyposCorrected(0), AnalysisWarnings(*this),
    +      TUKind(TUKind), NumSFINAEErrors(0), AccessCheckingSFINAE(false),
    +      InNonInstantiationSFINAEContext(false), NonInstantiationEntries(0),
    +      ArgumentPackSubstitutionIndex(-1), CurrentInstantiationScope(nullptr),
    +      DisableTypoCorrection(false), TyposCorrected(0), AnalysisWarnings(*this),
           ThreadSafetyDeclCache(nullptr), VarDataSharingAttributesStack(nullptr),
           CurScope(nullptr), Ident_super(nullptr), Ident___float128(nullptr) {
       TUScope = nullptr;
    
    Modified: vendor/clang/dist/lib/Sema/SemaDecl.cpp
    ==============================================================================
    --- vendor/clang/dist/lib/Sema/SemaDecl.cpp	Wed May 17 20:22:45 2017	(r318415)
    +++ vendor/clang/dist/lib/Sema/SemaDecl.cpp	Wed May 17 20:22:49 2017	(r318416)
    @@ -16047,6 +16047,14 @@ void Sema::ActOnModuleBegin(SourceLocati
         ModuleScopes.back().OuterVisibleModules = std::move(VisibleModules);
     
       VisibleModules.setVisible(Mod, DirectiveLoc);
    +
    +  // The enclosing context is now part of this module.
    +  // FIXME: Consider creating a child DeclContext to hold the entities
    +  // lexically within the module.
    +  if (getLangOpts().trackLocalOwningModule()) {
    +    cast(CurContext)->setHidden(true);
    +    cast(CurContext)->setLocalOwningModule(Mod);
    +  }
     }
     
     void Sema::ActOnModuleEnd(SourceLocation EomLoc, Module *Mod) {
    @@ -16075,6 +16083,13 @@ void Sema::ActOnModuleEnd(SourceLocation
         DirectiveLoc = EomLoc;
       }
       BuildModuleInclude(DirectiveLoc, Mod);
    +
    +  // Any further declarations are in whatever module we returned to.
    +  if (getLangOpts().trackLocalOwningModule()) {
    +    cast(CurContext)->setLocalOwningModule(getCurrentModule());
    +    if (!getCurrentModule())
    +      cast(CurContext)->setHidden(false);
    +  }
     }
     
     void Sema::createImplicitModuleImportForErrorRecovery(SourceLocation Loc,
    
    Modified: vendor/clang/dist/lib/Sema/SemaLookup.cpp
    ==============================================================================
    --- vendor/clang/dist/lib/Sema/SemaLookup.cpp	Wed May 17 20:22:45 2017	(r318415)
    +++ vendor/clang/dist/lib/Sema/SemaLookup.cpp	Wed May 17 20:22:49 2017	(r318416)
    @@ -1326,62 +1326,6 @@ bool Sema::CppLookupName(LookupResult &R
       return !R.empty();
     }
     
    -Module *Sema::getOwningModule(Decl *Entity) {
    -  // If it's imported, grab its owning module.
    -  Module *M = Entity->getImportedOwningModule();
    -  if (M || !isa(Entity) || !cast(Entity)->isHidden())
    -    return M;
    -  assert(!Entity->isFromASTFile() &&
    -         "hidden entity from AST file has no owning module");
    -
    -  if (!getLangOpts().ModulesLocalVisibility) {
    -    // If we're not tracking visibility locally, the only way a declaration
    -    // can be hidden and local is if it's hidden because it's parent is (for
    -    // instance, maybe this is a lazily-declared special member of an imported
    -    // class).
    -    auto *Parent = cast(Entity->getDeclContext());
    -    assert(Parent->isHidden() && "unexpectedly hidden decl");
    -    return getOwningModule(Parent);
    -  }
    -
    -  // It's local and hidden; grab or compute its owning module.
    -  M = Entity->getLocalOwningModule();
    -  if (M)
    -    return M;
    -
    -  if (auto *Containing =
    -          PP.getModuleContainingLocation(Entity->getLocation())) {
    -    M = Containing;
    -  } else if (Entity->isInvalidDecl() || Entity->getLocation().isInvalid()) {
    -    // Don't bother tracking visibility for invalid declarations with broken
    -    // locations.
    -    cast(Entity)->setHidden(false);
    -  } else {
    -    // We need to assign a module to an entity that exists outside of any
    -    // module, so that we can hide it from modules that we textually enter.
    -    // Invent a fake module for all such entities.
    -    if (!CachedFakeTopLevelModule) {
    -      CachedFakeTopLevelModule =
    -          PP.getHeaderSearchInfo().getModuleMap().findOrCreateModule(
    -              "", nullptr, false, false).first;
    -
    -      auto &SrcMgr = PP.getSourceManager();
    -      SourceLocation StartLoc =
    -          SrcMgr.getLocForStartOfFile(SrcMgr.getMainFileID());
    -      auto &TopLevel = ModuleScopes.empty()
    -                           ? VisibleModules
    -                           : ModuleScopes[0].OuterVisibleModules;
    -      TopLevel.setVisible(CachedFakeTopLevelModule, StartLoc);
    -    }
    -
    -    M = CachedFakeTopLevelModule;
    -  }
    -
    -  if (M)
    -    Entity->setLocalOwningModule(M);
    -  return M;
    -}
    -
     void Sema::makeMergedDefinitionVisible(NamedDecl *ND) {
       if (auto *M = getCurrentModule())
         Context.mergeDefinitionIntoModule(ND, M);
    @@ -1520,7 +1464,6 @@ bool LookupResult::isVisibleSlow(Sema &S
       if (SemaRef.getLangOpts().ModulesLocalVisibility) {
         DeclModule = SemaRef.getOwningModule(D);
         if (!DeclModule) {
    -      // getOwningModule() may have decided the declaration should not be hidden.
           assert(!D->isHidden() && "hidden decl not from a module");
           return true;
         }
    
    Modified: vendor/clang/dist/lib/Serialization/ASTReader.cpp
    ==============================================================================
    --- vendor/clang/dist/lib/Serialization/ASTReader.cpp	Wed May 17 20:22:45 2017	(r318415)
    +++ vendor/clang/dist/lib/Serialization/ASTReader.cpp	Wed May 17 20:22:49 2017	(r318416)
    @@ -9348,12 +9348,6 @@ void ASTReader::diagnoseOdrViolations() 
             return Hash.CalculateHash();
           };
     
    -      auto ComputeDeclNameODRHash = [&Hash](const DeclarationName Name) {
    -        Hash.clear();
    -        Hash.AddDeclarationName(Name);
    -        return Hash.CalculateHash();
    -      };
    -
           auto ComputeQualTypeODRHash = [&Hash](QualType Ty) {
             Hash.clear();
             Hash.AddQualType(Ty);
    @@ -9446,11 +9440,8 @@ void ASTReader::diagnoseOdrViolations() 
     
             QualType FirstType = FirstField->getType();
             QualType SecondType = SecondField->getType();
    -        const TypedefType *FirstTypedef = dyn_cast(FirstType);
    -        const TypedefType *SecondTypedef = dyn_cast(SecondType);
    -
    -        if ((FirstTypedef && !SecondTypedef) ||
    -            (!FirstTypedef && SecondTypedef)) {
    +        if (ComputeQualTypeODRHash(FirstType) !=
    +            ComputeQualTypeODRHash(SecondType)) {
               ODRDiagError(FirstField->getLocation(), FirstField->getSourceRange(),
                            FieldTypeName)
                   << FirstII << FirstType;
    @@ -9462,24 +9453,6 @@ void ASTReader::diagnoseOdrViolations() 
               break;
             }
     
    -        if (FirstTypedef && SecondTypedef) {
    -          unsigned FirstHash = ComputeDeclNameODRHash(
    -              FirstTypedef->getDecl()->getDeclName());
    -          unsigned SecondHash = ComputeDeclNameODRHash(
    -              SecondTypedef->getDecl()->getDeclName());
    -          if (FirstHash != SecondHash) {
    -            ODRDiagError(FirstField->getLocation(),
    -                         FirstField->getSourceRange(), FieldTypeName)
    -                << FirstII << FirstType;
    -            ODRDiagNote(SecondField->getLocation(),
    -                        SecondField->getSourceRange(), FieldTypeName)
    -                << SecondII << SecondType;
    -
    -            Diagnosed = true;
    -            break;
    -          }
    -        }
    -
             const bool IsFirstBitField = FirstField->isBitField();
             const bool IsSecondBitField = SecondField->isBitField();
             if (IsFirstBitField != IsSecondBitField) {
    
    Modified: vendor/clang/dist/test/CodeGenCXX/debug-info-namespace.cpp
    ==============================================================================
    --- vendor/clang/dist/test/CodeGenCXX/debug-info-namespace.cpp	Wed May 17 20:22:45 2017	(r318415)
    +++ vendor/clang/dist/test/CodeGenCXX/debug-info-namespace.cpp	Wed May 17 20:22:49 2017	(r318416)
    @@ -60,6 +60,10 @@ void B::func_fwd() {
       anonymous = 0;
     }
     
    +namespace C {
    +  void c();
    +}
    +void C::c() {}
     
     // This should work even if 'i' and 'func' were declarations & not definitions,
     // but it doesn't yet.
    @@ -114,6 +118,8 @@ void B::func_fwd() {
     // CHECK: [[M16]] = !DIImportedEntity(tag: DW_TAG_imported_declaration, scope: [[FUNC]], entity: [[FUNC_FWD:![0-9]+]]
     // CHECK: [[FUNC_FWD]] = distinct !DISubprogram(name: "func_fwd",{{.*}} line: 53,{{.*}} isDefinition: true
     // CHECK: [[M17]] = !DIImportedEntity(tag: DW_TAG_imported_declaration, scope: [[CTXT]], entity: [[I]]
    +// CHECK: distinct !DISubprogram(name: "c",{{.*}}, scope: ![[C:[0-9]+]],{{.*}}, line: 60,{{.*}} isDefinition: true
    +// CHECK: ![[C]] = !DINamespace(name: "C",
     
     // CHECK-GMLT: [[CU:![0-9]+]] = distinct !DICompileUnit(
     // CHECK-GMLT-SAME:                            emissionKind: LineTablesOnly,
    
    Modified: vendor/clang/dist/test/Modules/Inputs/module.map
    ==============================================================================
    --- vendor/clang/dist/test/Modules/Inputs/module.map	Wed May 17 20:22:45 2017	(r318415)
    +++ vendor/clang/dist/test/Modules/Inputs/module.map	Wed May 17 20:22:49 2017	(r318416)
    @@ -441,3 +441,7 @@ module DebugNestedB {
       header "DebugNestedB.h"
       export *
     }
    +
    +module objcAtKeywordMissingEnd {
    +  header "objcAtKeywordMissingEnd.h"
    +}
    
    Added: vendor/clang/dist/test/Modules/Inputs/objcAtKeywordMissingEnd.h
    ==============================================================================
    --- /dev/null	00:00:00 1970	(empty, because file is newly added)
    +++ vendor/clang/dist/test/Modules/Inputs/objcAtKeywordMissingEnd.h	Wed May 17 20:22:49 2017	(r318416)
    @@ -0,0 +1,3 @@
    +@interface MissingEnd // expected-note {{class started here}}
    +
    +@ // expected-error {{expected an Objective-C directive after '@'}} expected-error {{missing '@end'}}
    
    Modified: vendor/clang/dist/test/Modules/Inputs/submodule-visibility/b.h
    ==============================================================================
    --- vendor/clang/dist/test/Modules/Inputs/submodule-visibility/b.h	Wed May 17 20:22:45 2017	(r318415)
    +++ vendor/clang/dist/test/Modules/Inputs/submodule-visibility/b.h	Wed May 17 20:22:49 2017	(r318416)
    @@ -4,7 +4,11 @@ int m = n;
     #include "c.h"
     
     #if defined(A) && !defined(ALLOW_NAME_LEAKAGE)
    -#error A is defined
    +#warning A is defined
     #endif
     
     #define B
    +
    +template void b_template() {
    +  N::C::f(0);
    +}
    
    Modified: vendor/clang/dist/test/Modules/Inputs/submodule-visibility/other.h
    ==============================================================================
    --- vendor/clang/dist/test/Modules/Inputs/submodule-visibility/other.h	Wed May 17 20:22:45 2017	(r318415)
    +++ vendor/clang/dist/test/Modules/Inputs/submodule-visibility/other.h	Wed May 17 20:22:49 2017	(r318416)
    @@ -1 +1,10 @@
     #include "c.h"
    +
    +#ifndef OTHER_H
    +#define OTHER_H
    +namespace N {
    +  struct C {
    +    template static void f(U) {}
    +  };
    +}
    +#endif
    
    Added: vendor/clang/dist/test/Modules/objc-at-keyword.m
    ==============================================================================
    --- /dev/null	00:00:00 1970	(empty, because file is newly added)
    +++ vendor/clang/dist/test/Modules/objc-at-keyword.m	Wed May 17 20:22:49 2017	(r318416)
    @@ -0,0 +1,7 @@
    +// RUN: rm -rf %t
    +// RUN: %clang_cc1 -fmodules -fimplicit-module-maps -fmodules-cache-path=%t -verify -x objective-c -fmodule-name=objcAtKeywordMissingEnd -emit-module %S/Inputs/module.map
    +// RUN: %clang_cc1 -fmodules -fimplicit-module-maps -fmodules-cache-path=%t -x objective-c -fmodule-name=Empty -emit-module %S/Inputs/module.map
    +// RUN: %clang_cc1 -fmodules -fimplicit-module-maps -fmodules-cache-path=%t -verify -I %S/Inputs %s
    +
    +@interface X // expected-note {{class started here}}
    +#pragma clang module import Empty // expected-error {{missing '@end'}}
    
    Modified: vendor/clang/dist/test/Modules/odr_hash.cpp
    ==============================================================================
    --- vendor/clang/dist/test/Modules/odr_hash.cpp	Wed May 17 20:22:45 2017	(r318415)
    +++ vendor/clang/dist/test/Modules/odr_hash.cpp	Wed May 17 20:22:49 2017	(r318416)
    @@ -634,6 +634,237 @@ S3 s3;
     #endif
     }  // namespace Using
     
    +namespace RecordType {
    +#if defined(FIRST)
    +struct B1 {};
    +struct S1 {
    +  B1 x;
    +};
    +#elif defined(SECOND)
    +struct A1 {};
    +struct S1 {
    +  A1 x;
    +};
    +#else
    +S1 s1;
    +// expected-error@first.h:* {{'RecordType::S1::x' from module 'FirstModule' is not present in definition of 'RecordType::S1' in module 'SecondModule'}}
    +// expected-note@second.h:* {{declaration of 'x' does not match}}
    +#endif
    +}
    +
    +namespace DependentType {
    +#if defined(FIRST)
    +template 
    +class S1 {
    +  typename T::typeA x;
    +};
    +#elif defined(SECOND)
    +template 
    +class S1 {
    +  typename T::typeB x;
    +};
    +#else
    +template
    +using U1 = S1;
    +// expected-error@first.h:* {{'DependentType::S1::x' from module 'FirstModule' is not present in definition of 'S1' in module 'SecondModule'}}
    +// expected-note@second.h:* {{declaration of 'x' does not match}}
    +#endif
    +}
    +
    +namespace ElaboratedType {
    +#if defined(FIRST)
    +namespace N1 { using type = double; }
    +struct S1 {
    +  N1::type x;
    +};
    +#elif defined(SECOND)
    +namespace N1 { using type = int; }
    +struct S1 {
    +  N1::type x;
    +};
    +#else
    +S1 s1;
    +// expected-error@first.h:* {{'ElaboratedType::S1::x' from module 'FirstModule' is not present in definition of 'ElaboratedType::S1' in module 'SecondModule'}}
    +// expected-note@second.h:* {{declaration of 'x' does not match}}
    +#endif
    +}
    +
    +namespace Enum {
    +#if defined(FIRST)
    +enum A1 {};
    +struct S1 {
    +  A1 x;
    +};
    +#elif defined(SECOND)
    +enum A2 {};
    +struct S1 {
    +  A2 x;
    +};
    +#else
    +S1 s1;
    +// expected-error@first.h:* {{'Enum::S1::x' from module 'FirstModule' is not present in definition of 'Enum::S1' in module 'SecondModule'}}
    +// expected-note@second.h:* {{declaration of 'x' does not match}}
    +#endif
    +}
    +
    +namespace NestedNamespaceSpecifier {
    +#if defined(FIRST)
    +namespace LevelA1 {
    +using Type = int;
    +}
    +
    +struct S1 {
    +  LevelA1::Type x;
    +};
    +# elif defined(SECOND)
    +namespace LevelB1 {
    +namespace LevelC1 {
    +using Type = int;
    +}
    +}
    +
    +struct S1 {
    +  LevelB1::LevelC1::Type x;
    +};
    +#else
    +S1 s1;
    +// expected-error@second.h:* {{'NestedNamespaceSpecifier::S1' has different definitions in different modules; first difference is definition in module 'SecondModule' found field 'x' with type 'LevelB1::LevelC1::Type' (aka 'int')}}
    +// expected-note@first.h:* {{but in 'FirstModule' found field 'x' with type 'LevelA1::Type' (aka 'int')}}
    +#endif
    +
    +#if defined(FIRST)
    +namespace LevelA2 { using Type = int; }
    +struct S2 {
    +  LevelA2::Type x;
    +};
    +# elif defined(SECOND)
    +struct S2 {
    +  int x;
    +};
    +#else
    +S2 s2;
    +// expected-error@second.h:* {{'NestedNamespaceSpecifier::S2' has different definitions in different modules; first difference is definition in module 'SecondModule' found field 'x' with type 'int'}}
    +// expected-note@first.h:* {{but in 'FirstModule' found field 'x' with type 'LevelA2::Type' (aka 'int')}}
    +#endif
    +
    +namespace LevelA3 { using Type = int; }
    +namespace LevelB3 { using Type = int; }
    +#if defined(FIRST)
    +struct S3 {
    +  LevelA3::Type x;
    +};
    +# elif defined(SECOND)
    +struct S3 {
    +  LevelB3::Type x;
    +};
    +#else
    +S3 s3;
    +// expected-error@second.h:* {{'NestedNamespaceSpecifier::S3' has different definitions in different modules; first difference is definition in module 'SecondModule' found field 'x' with type 'LevelB3::Type' (aka 'int')}}
    +// expected-note@first.h:* {{but in 'FirstModule' found field 'x' with type 'LevelA3::Type' (aka 'int')}}
    +#endif
    +
    +#if defined(FIRST)
    +struct TA4 { using Type = int; };
    +struct S4 {
    +  TA4::Type x;
    +};
    +# elif defined(SECOND)
    +struct TB4 { using Type = int; };
    +struct S4 {
    +  TB4::Type x;
    +};
    +#else
    +S4 s4;
    +// expected-error@second.h:* {{'NestedNamespaceSpecifier::S4' has different definitions in different modules; first difference is definition in module 'SecondModule' found field 'x' with type 'TB4::Type' (aka 'int')}}
    +// expected-note@first.h:* {{but in 'FirstModule' found field 'x' with type 'TA4::Type' (aka 'int')}}
    +#endif
    +
    +#if defined(FIRST)
    +struct T5 { using Type = int; };
    +struct S5 {
    +  T5::Type x;
    +};
    +# elif defined(SECOND)
    +namespace T5 { using Type = int; };
    +struct S5 {
    +  T5::Type x;
    +};
    +#else
    +S5 s5;
    +// expected-error@second.h:* {{'NestedNamespaceSpecifier::S5' has different definitions in different modules; first difference is definition in module 'SecondModule' found field 'x' with type 'T5::Type' (aka 'int')}}
    +// expected-note@first.h:* {{but in 'FirstModule' found field 'x' with type 'T5::Type' (aka 'int')}}
    +#endif
    +
    +#if defined(FIRST)
    +namespace N6 {using I = int;}
    +struct S6 {
    +  NestedNamespaceSpecifier::N6::I x;
    +};
    +# elif defined(SECOND)
    +using I = int;
    +struct S6 {
    +  ::NestedNamespaceSpecifier::I x;
    +};
    +#else
    +S6 s6;
    +// expected-error@second.h:* {{'NestedNamespaceSpecifier::S6' has different definitions in different modules; first difference is definition in module 'SecondModule' found field 'x' with type '::NestedNamespaceSpecifier::I' (aka 'int')}}
    +// expected-note@first.h:* {{but in 'FirstModule' found field 'x' with type 'NestedNamespaceSpecifier::N6::I' (aka 'int')}}
    +#endif
    +
    +#if defined(FIRST)
    +template 
    +class S7 {
    +  typename T::type *x = {};
    +  int z = x->T::foo();
    +};
    +#elif defined(SECOND)
    +template 
    +class S7 {
    +  typename T::type *x = {};
    +  int z = x->U::foo();
    +};
    +#else
    +template 
    +using U7 = S7;
    +// expected-error@second.h:* {{'NestedNamespaceSpecifier::S7' has different definitions in different modules; first difference is definition in module 'SecondModule' found field 'z' with an initializer}}
    +// expected-note@first.h:* {{but in 'FirstModule' found field 'z' with a different initializer}}
    +#endif
    +
    +#if defined(FIRST)
    +template 
    +class S8 {
    +  int x = T::template X::value;
    +};
    +#elif defined(SECOND)
    +template 
    +class S8 {
    +  int x = T::template Y::value;
    +};
    +#else
    +template 
    +using U8 = S8;
    +// expected-error@second.h:* {{'NestedNamespaceSpecifier::S8' has different definitions in different modules; first difference is definition in module 'SecondModule' found field 'x' with an initializer}}
    +// expected-note@first.h:* {{but in 'FirstModule' found field 'x' with a different initializer}}
    +#endif
    +
    +#if defined(FIRST)
    +namespace N9 { using I = int; }
    +namespace O9 = N9;
    +struct S9 {
    +  O9::I x;
    +};
    +#elif defined(SECOND)
    +namespace N9 { using I = int; }
    +namespace P9 = N9;
    +struct S9 {
    +  P9::I x;
    +};
    +#else
    +S9 s9;
    +// expected-error@second.h:* {{'NestedNamespaceSpecifier::S9' has different definitions in different modules; first difference is definition in module 'SecondModule' found field 'x' with type 'P9::I' (aka 'int')}}
    +// expected-note@first.h:* {{but in 'FirstModule' found field 'x' with type 'O9::I' (aka 'int')}}
    +#endif
    +}
     
     // Interesting cases that should not cause errors.  struct S should not error
     // while struct T should error at the access specifier mismatch at the end.
    
    Modified: vendor/clang/dist/test/Modules/submodule-visibility.cpp
    ==============================================================================
    --- vendor/clang/dist/test/Modules/submodule-visibility.cpp	Wed May 17 20:22:45 2017	(r318415)
    +++ vendor/clang/dist/test/Modules/submodule-visibility.cpp	Wed May 17 20:22:49 2017	(r318416)
    @@ -3,6 +3,11 @@
     // RUN: %clang_cc1 -fmodules -fimplicit-module-maps -fmodules-local-submodule-visibility -fmodules-cache-path=%t -I%S/Inputs/submodule-visibility -verify %s -DIMPORT
     // RUN: %clang_cc1 -fmodules -fimplicit-module-maps -fmodules-local-submodule-visibility -fmodules-cache-path=%t -fmodule-name=x -I%S/Inputs/submodule-visibility -verify %s
     // RUN: %clang_cc1 -fimplicit-module-maps -fmodules-local-submodule-visibility -fmodules-cache-path=%t -I%S/Inputs/submodule-visibility -verify %s
    +//
    +// Explicit module builds.
    +// RUN: %clang_cc1 -fmodules -fmodules-local-submodule-visibility -emit-module -x c++-module-map %S/Inputs/submodule-visibility/module.modulemap -fmodule-name=other -o %t/other.pcm
    +// RUN: %clang_cc1 -fmodules -fmodule-map-file=%S/Inputs/submodule-visibility/module.modulemap -fmodules-local-submodule-visibility -fmodule-file=%t/other.pcm -verify -fmodule-name=x -I%S/Inputs/submodule-visibility %s
    +// RUN: %clang_cc1 -fmodules -fmodule-map-file=%S/Inputs/submodule-visibility/module.modulemap -fmodule-file=%t/other.pcm -verify -fmodule-name=x -I%S/Inputs/submodule-visibility %s -DALLOW_TEXTUAL_NAME_LEAKAGE
     
     #include "a.h"
     #include "b.h"
    @@ -11,6 +16,8 @@
     // expected-no-diagnostics
     #elif IMPORT
     // expected-error@-6 {{could not build module 'x'}}
    +#elif ALLOW_TEXTUAL_NAME_LEAKAGE
    +// expected-warning@b.h:7 {{A is defined}}
     #else
     // The use of -fmodule-name=x causes us to textually include the above headers.
     // The submodule visibility rules are still applied in this case.
    @@ -35,3 +42,5 @@ typedef struct {
       int p;                 
       void (*f)(int p);                                                                       
     } name_for_linkage;
    +
    +void g() { b_template(); }
    
    From owner-svn-src-vendor@freebsd.org  Wed May 17 20:23:00 2017
    Return-Path: 
    Delivered-To: svn-src-vendor@mailman.ysv.freebsd.org
    Received: from mx1.freebsd.org (mx1.freebsd.org
     [IPv6:2001:1900:2254:206a::19:1])
     by mailman.ysv.freebsd.org (Postfix) with ESMTP id 4CB20D7154C;
     Wed, 17 May 2017 20:23:00 +0000 (UTC) (envelope-from dim@FreeBSD.org)
    Received: from repo.freebsd.org (repo.freebsd.org
     [IPv6:2610:1c1:1:6068::e6a:0])
     (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
     (Client did not present a certificate)
     by mx1.freebsd.org (Postfix) with ESMTPS id 0F5BC1CF7;
     Wed, 17 May 2017 20:22:59 +0000 (UTC) (envelope-from dim@FreeBSD.org)
    Received: from repo.freebsd.org ([127.0.1.37])
     by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v4HKMx76015469;
     Wed, 17 May 2017 20:22:59 GMT (envelope-from dim@FreeBSD.org)
    Received: (from dim@localhost)
     by repo.freebsd.org (8.15.2/8.15.2/Submit) id v4HKMwLg015466;
     Wed, 17 May 2017 20:22:58 GMT (envelope-from dim@FreeBSD.org)
    Message-Id: <201705172022.v4HKMwLg015466@repo.freebsd.org>
    X-Authentication-Warning: repo.freebsd.org: dim set sender to dim@FreeBSD.org
     using -f
    From: Dimitry Andric 
    Date: Wed, 17 May 2017 20:22:58 +0000 (UTC)
    To: src-committers@freebsd.org, svn-src-all@freebsd.org,
     svn-src-vendor@freebsd.org
    Subject: svn commit: r318418 - in vendor/compiler-rt/dist/lib: asan/tests
     builtins ubsan
    X-SVN-Group: vendor
    MIME-Version: 1.0
    Content-Type: text/plain; charset=UTF-8
    Content-Transfer-Encoding: 8bit
    X-BeenThere: svn-src-vendor@freebsd.org
    X-Mailman-Version: 2.1.23
    Precedence: list
    List-Id: SVN commit messages for the vendor work area tree
     
    List-Unsubscribe: , 
     
    List-Archive: 
    List-Post: 
    List-Help: 
    List-Subscribe: ,
     
    X-List-Received-Date: Wed, 17 May 2017 20:23:00 -0000
    
    Author: dim
    Date: Wed May 17 20:22:58 2017
    New Revision: 318418
    URL: https://svnweb.freebsd.org/changeset/base/318418
    
    Log:
      Vendor import of compiler-rt trunk r303291:
      https://llvm.org/svn/llvm-project/compiler-rt/trunk@303291
    
    Modified:
      vendor/compiler-rt/dist/lib/asan/tests/asan_test_utils.h
      vendor/compiler-rt/dist/lib/builtins/floatdidf.c
      vendor/compiler-rt/dist/lib/ubsan/CMakeLists.txt
    
    Modified: vendor/compiler-rt/dist/lib/asan/tests/asan_test_utils.h
    ==============================================================================
    --- vendor/compiler-rt/dist/lib/asan/tests/asan_test_utils.h	Wed May 17 20:22:56 2017	(r318417)
    +++ vendor/compiler-rt/dist/lib/asan/tests/asan_test_utils.h	Wed May 17 20:22:58 2017	(r318418)
    @@ -30,11 +30,11 @@
     #include 
     #include 
     #include 
    +#include 
     
     #if !defined(_WIN32)
     # include 
     # include 
    -# include 
     #endif
     
     #ifdef __linux__
    
    Modified: vendor/compiler-rt/dist/lib/builtins/floatdidf.c
    ==============================================================================
    --- vendor/compiler-rt/dist/lib/builtins/floatdidf.c	Wed May 17 20:22:56 2017	(r318417)
    +++ vendor/compiler-rt/dist/lib/builtins/floatdidf.c	Wed May 17 20:22:58 2017	(r318418)
    @@ -104,7 +104,7 @@ __floatdidf(di_int a)
     }
     #endif
     
    -#if defined(__AEABI__)
    +#if defined(__ARM_EABI__)
     AEABI_RTABI double __aeabi_l2d(di_int a) {
       return __floatdidf(a);
     }
    
    Modified: vendor/compiler-rt/dist/lib/ubsan/CMakeLists.txt
    ==============================================================================
    --- vendor/compiler-rt/dist/lib/ubsan/CMakeLists.txt	Wed May 17 20:22:56 2017	(r318417)
    +++ vendor/compiler-rt/dist/lib/ubsan/CMakeLists.txt	Wed May 17 20:22:58 2017	(r318418)
    @@ -34,6 +34,10 @@ set(UBSAN_CXXFLAGS ${SANITIZER_COMMON_CF
     append_rtti_flag(ON UBSAN_CXXFLAGS)
     append_list_if(SANITIZER_CAN_USE_CXXABI -DUBSAN_CAN_USE_CXXABI UBSAN_CXXFLAGS)
     
    +append_list_if(COMPILER_RT_HAS_LIBDL dl UBSAN_DYNAMIC_LIBS)
    +append_list_if(COMPILER_RT_HAS_LIBRT rt UBSAN_DYNAMIC_LIBS)
    +append_list_if(COMPILER_RT_HAS_LIBPTHREAD pthread UBSAN_DYNAMIC_LIBS)
    +
     add_compiler_rt_component(ubsan)
     
     if(APPLE)
    @@ -144,6 +148,27 @@ else()
           CFLAGS ${UBSAN_CXXFLAGS}
           PARENT_TARGET ubsan)
     
    +    add_compiler_rt_runtime(clang_rt.ubsan_standalone
    +      SHARED
    +      ARCHS ${UBSAN_SUPPORTED_ARCH}
    +      OBJECT_LIBS RTSanitizerCommon
    +              RTSanitizerCommonLibc
    +              RTUbsan
    +      CFLAGS ${UBSAN_CFLAGS}
    +      LINK_LIBS ${UBSAN_DYNAMIC_LIBS}
    +      PARENT_TARGET ubsan)
    +
    +    add_compiler_rt_runtime(clang_rt.ubsan_standalone_cxx
    +      SHARED
    +      ARCHS ${UBSAN_SUPPORTED_ARCH}
    +      OBJECT_LIBS RTSanitizerCommon
    +              RTSanitizerCommonLibc
    +              RTUbsan
    +              RTUbsan_cxx
    +      CFLAGS ${UBSAN_CXXFLAGS}
    +      LINK_LIBS ${UBSAN_DYNAMIC_LIBS}
    +      PARENT_TARGET ubsan)
    +
         if (UNIX)
           set(ARCHS_FOR_SYMBOLS ${UBSAN_SUPPORTED_ARCH})
           list(REMOVE_ITEM ARCHS_FOR_SYMBOLS i386 i686)
    
    From owner-svn-src-vendor@freebsd.org  Wed May 17 20:23:05 2017
    Return-Path: 
    Delivered-To: svn-src-vendor@mailman.ysv.freebsd.org
    Received: from mx1.freebsd.org (mx1.freebsd.org
     [IPv6:2001:1900:2254:206a::19:1])
     by mailman.ysv.freebsd.org (Postfix) with ESMTP id 27B7FD715A1;
     Wed, 17 May 2017 20:23:05 +0000 (UTC) (envelope-from dim@FreeBSD.org)
    Received: from repo.freebsd.org (repo.freebsd.org
     [IPv6:2610:1c1:1:6068::e6a:0])
     (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
     (Client did not present a certificate)
     by mx1.freebsd.org (Postfix) with ESMTPS id CF8731D9B;
     Wed, 17 May 2017 20:23:04 +0000 (UTC) (envelope-from dim@FreeBSD.org)
    Received: from repo.freebsd.org ([127.0.1.37])
     by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v4HKN3uV015521;
     Wed, 17 May 2017 20:23:03 GMT (envelope-from dim@FreeBSD.org)
    Received: (from dim@localhost)
     by repo.freebsd.org (8.15.2/8.15.2/Submit) id v4HKN34I015520;
     Wed, 17 May 2017 20:23:03 GMT (envelope-from dim@FreeBSD.org)
    Message-Id: <201705172023.v4HKN34I015520@repo.freebsd.org>
    X-Authentication-Warning: repo.freebsd.org: dim set sender to dim@FreeBSD.org
     using -f
    From: Dimitry Andric 
    Date: Wed, 17 May 2017 20:23:03 +0000 (UTC)
    To: src-committers@freebsd.org, svn-src-all@freebsd.org,
     svn-src-vendor@freebsd.org
    Subject: svn commit: r318419 - vendor/compiler-rt/compiler-rt-trunk-r303291
    X-SVN-Group: vendor
    MIME-Version: 1.0
    Content-Type: text/plain; charset=UTF-8
    Content-Transfer-Encoding: 8bit
    X-BeenThere: svn-src-vendor@freebsd.org
    X-Mailman-Version: 2.1.23
    Precedence: list
    List-Id: SVN commit messages for the vendor work area tree
     
    List-Unsubscribe: , 
     
    List-Archive: 
    List-Post: 
    List-Help: 
    List-Subscribe: ,
     
    X-List-Received-Date: Wed, 17 May 2017 20:23:05 -0000
    
    Author: dim
    Date: Wed May 17 20:23:03 2017
    New Revision: 318419
    URL: https://svnweb.freebsd.org/changeset/base/318419
    
    Log:
      Tag compiler-rt trunk r303291.
    
    Added:
      vendor/compiler-rt/compiler-rt-trunk-r303291/
         - copied from r318418, vendor/compiler-rt/dist/
    
    From owner-svn-src-vendor@freebsd.org  Wed May 17 20:23:12 2017
    Return-Path: 
    Delivered-To: svn-src-vendor@mailman.ysv.freebsd.org
    Received: from mx1.freebsd.org (mx1.freebsd.org
     [IPv6:2001:1900:2254:206a::19:1])
     by mailman.ysv.freebsd.org (Postfix) with ESMTP id 881F9D71613;
     Wed, 17 May 2017 20:23:12 +0000 (UTC) (envelope-from dim@FreeBSD.org)
    Received: from repo.freebsd.org (repo.freebsd.org
     [IPv6:2610:1c1:1:6068::e6a:0])
     (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
     (Client did not present a certificate)
     by mx1.freebsd.org (Postfix) with ESMTPS id 3CF841E74;
     Wed, 17 May 2017 20:23:12 +0000 (UTC) (envelope-from dim@FreeBSD.org)
    Received: from repo.freebsd.org ([127.0.1.37])
     by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v4HKNBsx015627;
     Wed, 17 May 2017 20:23:11 GMT (envelope-from dim@FreeBSD.org)
    Received: (from dim@localhost)
     by repo.freebsd.org (8.15.2/8.15.2/Submit) id v4HKNBFC015626;
     Wed, 17 May 2017 20:23:11 GMT (envelope-from dim@FreeBSD.org)
    Message-Id: <201705172023.v4HKNBFC015626@repo.freebsd.org>
    X-Authentication-Warning: repo.freebsd.org: dim set sender to dim@FreeBSD.org
     using -f
    From: Dimitry Andric 
    Date: Wed, 17 May 2017 20:23:11 +0000 (UTC)
    To: src-committers@freebsd.org, svn-src-all@freebsd.org,
     svn-src-vendor@freebsd.org
    Subject: svn commit: r318421 - vendor/libc++/libc++-trunk-r303291
    X-SVN-Group: vendor
    MIME-Version: 1.0
    Content-Type: text/plain; charset=UTF-8
    Content-Transfer-Encoding: 8bit
    X-BeenThere: svn-src-vendor@freebsd.org
    X-Mailman-Version: 2.1.23
    Precedence: list
    List-Id: SVN commit messages for the vendor work area tree
     
    List-Unsubscribe: , 
     
    List-Archive: 
    List-Post: 
    List-Help: 
    List-Subscribe: ,
     
    X-List-Received-Date: Wed, 17 May 2017 20:23:12 -0000
    
    Author: dim
    Date: Wed May 17 20:23:11 2017
    New Revision: 318421
    URL: https://svnweb.freebsd.org/changeset/base/318421
    
    Log:
      Tag libc++ trunk r303291.
    
    Added:
      vendor/libc++/libc++-trunk-r303291/
         - copied from r318420, vendor/libc++/dist/
    
    From owner-svn-src-vendor@freebsd.org  Wed May 17 20:23:08 2017
    Return-Path: 
    Delivered-To: svn-src-vendor@mailman.ysv.freebsd.org
    Received: from mx1.freebsd.org (mx1.freebsd.org
     [IPv6:2001:1900:2254:206a::19:1])
     by mailman.ysv.freebsd.org (Postfix) with ESMTP id D1DA2D715E0;
     Wed, 17 May 2017 20:23:08 +0000 (UTC) (envelope-from dim@FreeBSD.org)
    Received: from repo.freebsd.org (repo.freebsd.org
     [IPv6:2610:1c1:1:6068::e6a:0])
     (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
     (Client did not present a certificate)
     by mx1.freebsd.org (Postfix) with ESMTPS id 82BB51E0A;
     Wed, 17 May 2017 20:23:08 +0000 (UTC) (envelope-from dim@FreeBSD.org)
    Received: from repo.freebsd.org ([127.0.1.37])
     by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v4HKN7TV015578;
     Wed, 17 May 2017 20:23:07 GMT (envelope-from dim@FreeBSD.org)
    Received: (from dim@localhost)
     by repo.freebsd.org (8.15.2/8.15.2/Submit) id v4HKN6eg015568;
     Wed, 17 May 2017 20:23:06 GMT (envelope-from dim@FreeBSD.org)
    Message-Id: <201705172023.v4HKN6eg015568@repo.freebsd.org>
    X-Authentication-Warning: repo.freebsd.org: dim set sender to dim@FreeBSD.org
     using -f
    From: Dimitry Andric 
    Date: Wed, 17 May 2017 20:23:06 +0000 (UTC)
    To: src-committers@freebsd.org, svn-src-all@freebsd.org,
     svn-src-vendor@freebsd.org
    Subject: svn commit: r318420 - in vendor/libc++/dist: include
     test/std/iterators/iterator.primitives/iterator.operations
     test/std/utilities/optional/optional.object/optional.object.ctor test/support
    X-SVN-Group: vendor
    MIME-Version: 1.0
    Content-Type: text/plain; charset=UTF-8
    Content-Transfer-Encoding: 8bit
    X-BeenThere: svn-src-vendor@freebsd.org
    X-Mailman-Version: 2.1.23
    Precedence: list
    List-Id: SVN commit messages for the vendor work area tree
     
    List-Unsubscribe: , 
     
    List-Archive: 
    List-Post: 
    List-Help: 
    List-Subscribe: ,
     
    X-List-Received-Date: Wed, 17 May 2017 20:23:09 -0000
    
    Author: dim
    Date: Wed May 17 20:23:06 2017
    New Revision: 318420
    URL: https://svnweb.freebsd.org/changeset/base/318420
    
    Log:
      Vendor import of libc++ trunk r303291:
      https://llvm.org/svn/llvm-project/libcxx/trunk@303291
    
    Modified:
      vendor/libc++/dist/include/iterator
      vendor/libc++/dist/include/optional
      vendor/libc++/dist/test/std/iterators/iterator.primitives/iterator.operations/advance.pass.cpp
      vendor/libc++/dist/test/std/iterators/iterator.primitives/iterator.operations/distance.pass.cpp
      vendor/libc++/dist/test/std/iterators/iterator.primitives/iterator.operations/next.pass.cpp
      vendor/libc++/dist/test/std/iterators/iterator.primitives/iterator.operations/prev.pass.cpp
      vendor/libc++/dist/test/std/utilities/optional/optional.object/optional.object.ctor/copy.pass.cpp
      vendor/libc++/dist/test/std/utilities/optional/optional.object/optional.object.ctor/move.pass.cpp
      vendor/libc++/dist/test/support/test_iterators.h
    
    Modified: vendor/libc++/dist/include/iterator
    ==============================================================================
    --- vendor/libc++/dist/include/iterator	Wed May 17 20:23:03 2017	(r318419)
    +++ vendor/libc++/dist/include/iterator	Wed May 17 20:23:06 2017	(r318420)
    @@ -64,14 +64,23 @@ struct forward_iterator_tag       : publ
     struct bidirectional_iterator_tag : public forward_iterator_tag       {};
     struct random_access_iterator_tag : public bidirectional_iterator_tag {};
     
    +// 27.4.3, iterator operations
     // extension: second argument not conforming to C++03
    -template 
    -void advance(InputIterator& i,
    +template   // constexpr in C++17
    +  constexpr void advance(InputIterator& i,
                  typename iterator_traits::difference_type n);
     
    -template 
    -typename iterator_traits::difference_type
    -distance(InputIterator first, InputIterator last);
    +template   // constexpr in C++17
    +  constexpr typename iterator_traits::difference_type
    +    distance(InputIterator first, InputIterator last);
    +
    +template   // constexpr in C++17
    +  constexpr InputIterator next(InputIterator x,
    +typename iterator_traits::difference_type n = 1);
    +
    +template   // constexpr in C++17
    +  constexpr BidirectionalIterator prev(BidirectionalIterator x,
    +    typename iterator_traits::difference_type n = 1);    
     
     template 
     class reverse_iterator
    @@ -529,7 +538,7 @@ struct _LIBCPP_TEMPLATE_VIS iterator
     };
     
     template 
    -inline _LIBCPP_INLINE_VISIBILITY
    +inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX14
     void __advance(_InputIter& __i,
                  typename iterator_traits<_InputIter>::difference_type __n, input_iterator_tag)
     {
    @@ -538,7 +547,7 @@ void __advance(_InputIter& __i,
     }
     
     template 
    -inline _LIBCPP_INLINE_VISIBILITY
    +inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX14
     void __advance(_BiDirIter& __i,
                  typename iterator_traits<_BiDirIter>::difference_type __n, bidirectional_iterator_tag)
     {
    @@ -551,7 +560,7 @@ void __advance(_BiDirIter& __i,
     }
     
     template 
    -inline _LIBCPP_INLINE_VISIBILITY
    +inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX14
     void __advance(_RandIter& __i,
                  typename iterator_traits<_RandIter>::difference_type __n, random_access_iterator_tag)
     {
    @@ -559,7 +568,7 @@ void __advance(_RandIter& __i,
     }
     
     template 
    -inline _LIBCPP_INLINE_VISIBILITY
    +inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX14
     void advance(_InputIter& __i,
                  typename iterator_traits<_InputIter>::difference_type __n)
     {
    @@ -567,7 +576,7 @@ void advance(_InputIter& __i,
     }
     
     template 
    -inline _LIBCPP_INLINE_VISIBILITY
    +inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX14
     typename iterator_traits<_InputIter>::difference_type
     __distance(_InputIter __first, _InputIter __last, input_iterator_tag)
     {
    @@ -578,7 +587,7 @@ __distance(_InputIter __first, _InputIte
     }
     
     template 
    -inline _LIBCPP_INLINE_VISIBILITY
    +inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX14
     typename iterator_traits<_RandIter>::difference_type
     __distance(_RandIter __first, _RandIter __last, random_access_iterator_tag)
     {
    @@ -586,7 +595,7 @@ __distance(_RandIter __first, _RandIter 
     }
     
     template 
    -inline _LIBCPP_INLINE_VISIBILITY
    +inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX14
     typename iterator_traits<_InputIter>::difference_type
     distance(_InputIter __first, _InputIter __last)
     {
    @@ -594,7 +603,7 @@ distance(_InputIter __first, _InputIter 
     }
     
     template 
    -inline _LIBCPP_INLINE_VISIBILITY
    +inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX14
     _InputIter
     next(_InputIter __x,
          typename iterator_traits<_InputIter>::difference_type __n = 1,
    @@ -605,7 +614,7 @@ next(_InputIter __x,
     }
     
     template 
    -inline _LIBCPP_INLINE_VISIBILITY
    +inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX14
     _BidiretionalIter
     prev(_BidiretionalIter __x,
          typename iterator_traits<_BidiretionalIter>::difference_type __n = 1,
    
    Modified: vendor/libc++/dist/include/optional
    ==============================================================================
    --- vendor/libc++/dist/include/optional	Wed May 17 20:23:03 2017	(r318419)
    +++ vendor/libc++/dist/include/optional	Wed May 17 20:23:06 2017	(r318420)
    @@ -599,8 +599,8 @@ private:
     public:
     
         _LIBCPP_INLINE_VISIBILITY constexpr optional() noexcept {}
    -    _LIBCPP_INLINE_VISIBILITY optional(const optional&) = default;
    -    _LIBCPP_INLINE_VISIBILITY optional(optional&&) = default;
    +    _LIBCPP_INLINE_VISIBILITY constexpr optional(const optional&) = default;
    +    _LIBCPP_INLINE_VISIBILITY constexpr optional(optional&&) = default;
         _LIBCPP_INLINE_VISIBILITY constexpr optional(nullopt_t) noexcept {}
     
         template 
     
    +//   All of these became constexpr in C++17
    +//
     // template 
    -//   void advance(Iter& i, Iter::difference_type n);
    +//   constexpr void advance(Iter& i, Iter::difference_type n);
     //
     // template 
    -//   void advance(Iter& i, Iter::difference_type n);
    +//   constexpr void advance(Iter& i, Iter::difference_type n);
     //
     // template 
    -//   void advance(Iter& i, Iter::difference_type n);
    +//   constexpr void advance(Iter& i, Iter::difference_type n);
     
     #include 
     #include 
    @@ -31,8 +33,19 @@ test(It i, typename std::iterator_traits
         assert(i == x);
     }
     
    +#if TEST_STD_VER > 14
    +template 
    +constexpr bool 
    +constepxr_test(It i, typename std::iterator_traits::difference_type n, It x)
    +{
    +    std::advance(i, n);
    +    return i == x;
    +}
    +#endif
    +
     int main()
     {
    +    {
         const char* s = "1234567890";
         test(input_iterator(s), 10, input_iterator(s+10));
         test(forward_iterator(s), 10, forward_iterator(s+10));
    @@ -42,4 +55,18 @@ int main()
         test(random_access_iterator(s+5), -5, random_access_iterator(s));
         test(s+5, 5, s+10);
         test(s+5, -5, s);
    +    }
    +#if TEST_STD_VER > 14
    +    {
    +    constexpr const char* s = "1234567890";
    +    static_assert( constepxr_test(input_iterator(s), 10, input_iterator(s+10)), "" );
    +    static_assert( constepxr_test(forward_iterator(s), 10, forward_iterator(s+10)), "" );
    +    static_assert( constepxr_test(bidirectional_iterator(s+5), 5, bidirectional_iterator(s+10)), "" );
    +    static_assert( constepxr_test(bidirectional_iterator(s+5), -5, bidirectional_iterator(s)), "" );
    +    static_assert( constepxr_test(random_access_iterator(s+5), 5, random_access_iterator(s+10)), "" );
    +    static_assert( constepxr_test(random_access_iterator(s+5), -5, random_access_iterator(s)), "" );
    +    static_assert( constepxr_test(s+5, 5, s+10), "" );
    +    static_assert( constepxr_test(s+5, -5, s), "" );
    +    }
    +#endif
     }
    
    Modified: vendor/libc++/dist/test/std/iterators/iterator.primitives/iterator.operations/distance.pass.cpp
    ==============================================================================
    --- vendor/libc++/dist/test/std/iterators/iterator.primitives/iterator.operations/distance.pass.cpp	Wed May 17 20:23:03 2017	(r318419)
    +++ vendor/libc++/dist/test/std/iterators/iterator.primitives/iterator.operations/distance.pass.cpp	Wed May 17 20:23:06 2017	(r318420)
    @@ -29,12 +29,33 @@ test(It first, It last, typename std::it
         assert(std::distance(first, last) == x);
     }
     
    +#if TEST_STD_VER > 14
    +template 
    +constexpr bool
    +constexpr_test(It first, It last, typename std::iterator_traits::difference_type x)
    +{
    +    return std::distance(first, last) == x;
    +}
    +#endif
    +
     int main()
     {
    +    {
         const char* s = "1234567890";
         test(input_iterator(s), input_iterator(s+10), 10);
         test(forward_iterator(s), forward_iterator(s+10), 10);
         test(bidirectional_iterator(s), bidirectional_iterator(s+10), 10);
         test(random_access_iterator(s), random_access_iterator(s+10), 10);
         test(s, s+10, 10);
    +    }
    +#if TEST_STD_VER > 14
    +    {
    +    constexpr const char* s = "1234567890";
    +    static_assert( constexpr_test(input_iterator(s), input_iterator(s+10), 10), "");
    +    static_assert( constexpr_test(forward_iterator(s), forward_iterator(s+10), 10), "");
    +    static_assert( constexpr_test(bidirectional_iterator(s), bidirectional_iterator(s+10), 10), "");
    +    static_assert( constexpr_test(random_access_iterator(s), random_access_iterator(s+10), 10), "");
    +    static_assert( constexpr_test(s, s+10, 10), "");
    +    }
    +#endif
     }
    
    Modified: vendor/libc++/dist/test/std/iterators/iterator.primitives/iterator.operations/next.pass.cpp
    ==============================================================================
    --- vendor/libc++/dist/test/std/iterators/iterator.primitives/iterator.operations/next.pass.cpp	Wed May 17 20:23:03 2017	(r318419)
    +++ vendor/libc++/dist/test/std/iterators/iterator.primitives/iterator.operations/next.pass.cpp	Wed May 17 20:23:06 2017	(r318420)
    @@ -33,8 +33,25 @@ test(It i, It x)
         assert(std::next(i) == x);
     }
     
    +#if TEST_STD_VER > 14
    +template 
    +constexpr bool
    +constexpr_test(It i, typename std::iterator_traits::difference_type n, It x)
    +{
    +    return std::next(i, n) == x;
    +}
    +
    +template 
    +constexpr bool
    +constexpr_test(It i, It x)
    +{
    +    return std::next(i) == x;
    +}
    +#endif
    +
     int main()
     {
    +    {
         const char* s = "1234567890";
         test(input_iterator(s), 10, input_iterator(s+10));
         test(forward_iterator(s), 10, forward_iterator(s+10));
    @@ -47,4 +64,21 @@ int main()
         test(bidirectional_iterator(s), bidirectional_iterator(s+1));
         test(random_access_iterator(s), random_access_iterator(s+1));
         test(s, s+1);
    +    }
    +#if TEST_STD_VER > 14
    +    {
    +    constexpr const char* s = "1234567890";
    +    static_assert( constexpr_test(input_iterator(s), 10, input_iterator(s+10)), "" );
    +    static_assert( constexpr_test(forward_iterator(s), 10, forward_iterator(s+10)), "" );
    +    static_assert( constexpr_test(bidirectional_iterator(s), 10, bidirectional_iterator(s+10)), "" );
    +    static_assert( constexpr_test(random_access_iterator(s), 10, random_access_iterator(s+10)), "" );
    +    static_assert( constexpr_test(s, 10, s+10), "" );
    +
    +    static_assert( constexpr_test(input_iterator(s), input_iterator(s+1)), "" );
    +    static_assert( constexpr_test(forward_iterator(s), forward_iterator(s+1)), "" );
    +    static_assert( constexpr_test(bidirectional_iterator(s), bidirectional_iterator(s+1)), "" );
    +    static_assert( constexpr_test(random_access_iterator(s), random_access_iterator(s+1)), "" );
    +    static_assert( constexpr_test(s, s+1), "" );
    +    }
    +#endif
     }
    
    Modified: vendor/libc++/dist/test/std/iterators/iterator.primitives/iterator.operations/prev.pass.cpp
    ==============================================================================
    --- vendor/libc++/dist/test/std/iterators/iterator.primitives/iterator.operations/prev.pass.cpp	Wed May 17 20:23:03 2017	(r318419)
    +++ vendor/libc++/dist/test/std/iterators/iterator.primitives/iterator.operations/prev.pass.cpp	Wed May 17 20:23:06 2017	(r318420)
    @@ -31,8 +31,25 @@ test(It i, It x)
         assert(std::prev(i) == x);
     }
     
    +#if TEST_STD_VER > 14
    +template 
    +constexpr bool
    +constexpr_test(It i, typename std::iterator_traits::difference_type n, It x)
    +{
    +    return std::prev(i, n) == x;
    +}
    +
    +template 
    +constexpr bool
    +constexpr_test(It i, It x)
    +{
    +    return std::prev(i) == x;
    +}
    +#endif
    +
     int main()
     {
    +    {
         const char* s = "1234567890";
         test(bidirectional_iterator(s+10), 10, bidirectional_iterator(s));
         test(random_access_iterator(s+10), 10, random_access_iterator(s));
    @@ -41,4 +58,18 @@ int main()
         test(bidirectional_iterator(s+1), bidirectional_iterator(s));
         test(random_access_iterator(s+1), random_access_iterator(s));
         test(s+1, s);
    +    }
    +#if TEST_STD_VER > 14
    +    {
    +    constexpr const char* s = "1234567890";
    +    static_assert( constexpr_test(bidirectional_iterator(s+10), 10, bidirectional_iterator(s)), "" );
    +    static_assert( constexpr_test(random_access_iterator(s+10), 10, random_access_iterator(s)), "" );
    +    static_assert( constexpr_test(s+10, 10, s), "" );
    +
    +    static_assert( constexpr_test(bidirectional_iterator(s+1), bidirectional_iterator(s)), "" );
    +    static_assert( constexpr_test(random_access_iterator(s+1), random_access_iterator(s)), "" );
    +    static_assert( constexpr_test(s+1, s), "" );
    +    }
    +#endif
    +    
     }
    
    Modified: vendor/libc++/dist/test/std/utilities/optional/optional.object/optional.object.ctor/copy.pass.cpp
    ==============================================================================
    --- vendor/libc++/dist/test/std/utilities/optional/optional.object/optional.object.ctor/copy.pass.cpp	Wed May 17 20:23:03 2017	(r318419)
    +++ vendor/libc++/dist/test/std/utilities/optional/optional.object/optional.object.ctor/copy.pass.cpp	Wed May 17 20:23:06 2017	(r318420)
    @@ -10,7 +10,7 @@
     // UNSUPPORTED: c++98, c++03, c++11, c++14
     // 
     
    -// optional(const optional& rhs);
    +// constexpr optional(const optional& rhs);
     
     #include 
     #include 
    @@ -152,4 +152,9 @@ int main()
         {
             test_reference_extension();
         }
    +    {
    +    constexpr std::optional o1{4};
    +    constexpr std::optional o2 = o1;
    +    static_assert( *o2 == 4, "" );
    +    }
     }
    
    Modified: vendor/libc++/dist/test/std/utilities/optional/optional.object/optional.object.ctor/move.pass.cpp
    ==============================================================================
    --- vendor/libc++/dist/test/std/utilities/optional/optional.object/optional.object.ctor/move.pass.cpp	Wed May 17 20:23:03 2017	(r318419)
    +++ vendor/libc++/dist/test/std/utilities/optional/optional.object/optional.object.ctor/move.pass.cpp	Wed May 17 20:23:06 2017	(r318420)
    @@ -18,7 +18,7 @@
     
     // 
     
    -// optional(optional&& rhs);
    +// constexpr optional(optional&& rhs);
     
     #include 
     #include 
    @@ -206,4 +206,9 @@ int main()
         {
             test_reference_extension();
         }
    +    {
    +    constexpr std::optional o1{4};
    +    constexpr std::optional o2 = std::move(o1);
    +    static_assert( *o2 == 4, "" );
    +    }
     }
    
    Modified: vendor/libc++/dist/test/support/test_iterators.h
    ==============================================================================
    --- vendor/libc++/dist/test/support/test_iterators.h	Wed May 17 20:23:03 2017	(r318419)
    +++ vendor/libc++/dist/test/support/test_iterators.h	Wed May 17 20:23:06 2017	(r318420)
    @@ -68,23 +68,23 @@ public:
         typedef It                                                 pointer;
         typedef typename Traits::reference                         reference;
     
    -    It base() const {return it_;}
    +    TEST_CONSTEXPR_CXX14 It base() const {return it_;}
     
    -    input_iterator() : it_() {}
    -    explicit input_iterator(It it) : it_(it) {}
    +    TEST_CONSTEXPR_CXX14 input_iterator() : it_() {}
    +    explicit TEST_CONSTEXPR_CXX14 input_iterator(It it) : it_(it) {}
         template 
    -        input_iterator(const input_iterator& u) :it_(u.it_) {}
    +        TEST_CONSTEXPR_CXX14 input_iterator(const input_iterator& u) :it_(u.it_) {}
     
    -    reference operator*() const {return *it_;}
    -    pointer operator->() const {return it_;}
    +    TEST_CONSTEXPR_CXX14 reference operator*() const {return *it_;}
    +    TEST_CONSTEXPR_CXX14 pointer operator->() const {return it_;}
     
    -    input_iterator& operator++() {++it_; return *this;}
    -    input_iterator operator++(int)
    +    TEST_CONSTEXPR_CXX14 input_iterator& operator++() {++it_; return *this;}
    +    TEST_CONSTEXPR_CXX14 input_iterator operator++(int)
             {input_iterator tmp(*this); ++(*this); return tmp;}
     
    -    friend bool operator==(const input_iterator& x, const input_iterator& y)
    +    friend TEST_CONSTEXPR_CXX14 bool operator==(const input_iterator& x, const input_iterator& y)
             {return x.it_ == y.it_;}
    -    friend bool operator!=(const input_iterator& x, const input_iterator& y)
    +    friend TEST_CONSTEXPR_CXX14 bool operator!=(const input_iterator& x, const input_iterator& y)
             {return !(x == y);}
     
         template 
    @@ -120,23 +120,23 @@ public:
         typedef It                                                 pointer;
         typedef typename std::iterator_traits::reference       reference;
     
    -    It base() const {return it_;}
    +    TEST_CONSTEXPR_CXX14 It base() const {return it_;}
     
    -    forward_iterator() : it_() {}
    -    explicit forward_iterator(It it) : it_(it) {}
    +    TEST_CONSTEXPR_CXX14 forward_iterator() : it_() {}
    +    explicit TEST_CONSTEXPR_CXX14 forward_iterator(It it) : it_(it) {}
         template 
    -        forward_iterator(const forward_iterator& u) :it_(u.it_) {}
    +        TEST_CONSTEXPR_CXX14 forward_iterator(const forward_iterator& u) :it_(u.it_) {}
     
    -    reference operator*() const {return *it_;}
    -    pointer operator->() const {return it_;}
    +    TEST_CONSTEXPR_CXX14 reference operator*() const {return *it_;}
    +    TEST_CONSTEXPR_CXX14 pointer operator->() const {return it_;}
     
    -    forward_iterator& operator++() {++it_; return *this;}
    -    forward_iterator operator++(int)
    +    TEST_CONSTEXPR_CXX14 forward_iterator& operator++() {++it_; return *this;}
    +    TEST_CONSTEXPR_CXX14 forward_iterator operator++(int)
             {forward_iterator tmp(*this); ++(*this); return tmp;}
     
    -    friend bool operator==(const forward_iterator& x, const forward_iterator& y)
    +    friend TEST_CONSTEXPR_CXX14 bool operator==(const forward_iterator& x, const forward_iterator& y)
             {return x.it_ == y.it_;}
    -    friend bool operator!=(const forward_iterator& x, const forward_iterator& y)
    +    friend TEST_CONSTEXPR_CXX14 bool operator!=(const forward_iterator& x, const forward_iterator& y)
             {return !(x == y);}
     
         template 
    @@ -145,7 +145,7 @@ public:
     
     template 
     inline
    -bool
    +bool TEST_CONSTEXPR_CXX14
     operator==(const forward_iterator& x, const forward_iterator& y)
     {
         return x.base() == y.base();
    @@ -153,7 +153,7 @@ operator==(const forward_iterator& x,
     
     template 
     inline
    -bool
    +bool TEST_CONSTEXPR_CXX14
     operator!=(const forward_iterator& x, const forward_iterator& y)
     {
         return !(x == y);
    @@ -172,22 +172,22 @@ public:
         typedef It                                                 pointer;
         typedef typename std::iterator_traits::reference       reference;
     
    -    It base() const {return it_;}
    +    TEST_CONSTEXPR_CXX14 It base() const {return it_;}
     
    -    bidirectional_iterator() : it_() {}
    -    explicit bidirectional_iterator(It it) : it_(it) {}
    +    TEST_CONSTEXPR_CXX14 bidirectional_iterator() : it_() {}
    +    explicit TEST_CONSTEXPR_CXX14 bidirectional_iterator(It it) : it_(it) {}
         template 
    -        bidirectional_iterator(const bidirectional_iterator& u) :it_(u.it_) {}
    +        TEST_CONSTEXPR_CXX14 bidirectional_iterator(const bidirectional_iterator& u) :it_(u.it_) {}
     
    -    reference operator*() const {return *it_;}
    -    pointer operator->() const {return it_;}
    +    TEST_CONSTEXPR_CXX14 reference operator*() const {return *it_;}
    +    TEST_CONSTEXPR_CXX14 pointer operator->() const {return it_;}
     
    -    bidirectional_iterator& operator++() {++it_; return *this;}
    -    bidirectional_iterator operator++(int)
    +    TEST_CONSTEXPR_CXX14 bidirectional_iterator& operator++() {++it_; return *this;}
    +    TEST_CONSTEXPR_CXX14 bidirectional_iterator operator++(int)
             {bidirectional_iterator tmp(*this); ++(*this); return tmp;}
     
    -    bidirectional_iterator& operator--() {--it_; return *this;}
    -    bidirectional_iterator operator--(int)
    +    TEST_CONSTEXPR_CXX14 bidirectional_iterator& operator--() {--it_; return *this;}
    +    TEST_CONSTEXPR_CXX14 bidirectional_iterator operator--(int)
             {bidirectional_iterator tmp(*this); --(*this); return tmp;}
     
         template 
    @@ -196,7 +196,7 @@ public:
     
     template 
     inline
    -bool
    +bool TEST_CONSTEXPR_CXX14
     operator==(const bidirectional_iterator& x, const bidirectional_iterator& y)
     {
         return x.base() == y.base();
    @@ -204,7 +204,7 @@ operator==(const bidirectional_iterator<
     
     template 
     inline
    -bool
    +bool TEST_CONSTEXPR_CXX14
     operator!=(const bidirectional_iterator& x, const bidirectional_iterator& y)
     {
         return !(x == y);
    @@ -223,34 +223,34 @@ public:
         typedef It                                                 pointer;
         typedef typename std::iterator_traits::reference       reference;
     
    -    It base() const {return it_;}
    +    TEST_CONSTEXPR_CXX14 It base() const {return it_;}
     
    -    random_access_iterator() : it_() {}
    -    explicit random_access_iterator(It it) : it_(it) {}
    -   template 
    -        random_access_iterator(const random_access_iterator& u) :it_(u.it_) {}
    +    TEST_CONSTEXPR_CXX14 random_access_iterator() : it_() {}
    +    explicit TEST_CONSTEXPR_CXX14 random_access_iterator(It it) : it_(it) {}
    +    template 
    +        TEST_CONSTEXPR_CXX14 random_access_iterator(const random_access_iterator& u) :it_(u.it_) {}
     
    -    reference operator*() const {return *it_;}
    -    pointer operator->() const {return it_;}
    +    TEST_CONSTEXPR_CXX14 reference operator*() const {return *it_;}
    +    TEST_CONSTEXPR_CXX14 pointer operator->() const {return it_;}
     
    -    random_access_iterator& operator++() {++it_; return *this;}
    -    random_access_iterator operator++(int)
    +    TEST_CONSTEXPR_CXX14 random_access_iterator& operator++() {++it_; return *this;}
    +    TEST_CONSTEXPR_CXX14 random_access_iterator operator++(int)
             {random_access_iterator tmp(*this); ++(*this); return tmp;}
     
    -    random_access_iterator& operator--() {--it_; return *this;}
    -    random_access_iterator operator--(int)
    +    TEST_CONSTEXPR_CXX14 random_access_iterator& operator--() {--it_; return *this;}
    +    TEST_CONSTEXPR_CXX14 random_access_iterator operator--(int)
             {random_access_iterator tmp(*this); --(*this); return tmp;}
     
    -    random_access_iterator& operator+=(difference_type n) {it_ += n; return *this;}
    -    random_access_iterator operator+(difference_type n) const
    +    TEST_CONSTEXPR_CXX14 random_access_iterator& operator+=(difference_type n) {it_ += n; return *this;}
    +    TEST_CONSTEXPR_CXX14 random_access_iterator operator+(difference_type n) const
             {random_access_iterator tmp(*this); tmp += n; return tmp;}
    -    friend random_access_iterator operator+(difference_type n, random_access_iterator x)
    +    friend TEST_CONSTEXPR_CXX14 random_access_iterator operator+(difference_type n, random_access_iterator x)
             {x += n; return x;}
    -    random_access_iterator& operator-=(difference_type n) {return *this += -n;}
    -    random_access_iterator operator-(difference_type n) const
    +    TEST_CONSTEXPR_CXX14 random_access_iterator& operator-=(difference_type n) {return *this += -n;}
    +    TEST_CONSTEXPR_CXX14 random_access_iterator operator-(difference_type n) const
             {random_access_iterator tmp(*this); tmp -= n; return tmp;}
     
    -    reference operator[](difference_type n) const {return it_[n];}
    +    TEST_CONSTEXPR_CXX14 reference operator[](difference_type n) const {return it_[n];}
     
         template 
         void operator,(T const &) DELETE_FUNCTION;
    @@ -258,7 +258,7 @@ public:
     
     template 
     inline
    -bool
    +bool TEST_CONSTEXPR_CXX14
     operator==(const random_access_iterator& x, const random_access_iterator& y)
     {
         return x.base() == y.base();
    @@ -266,7 +266,7 @@ operator==(const random_access_iterator<
     
     template 
     inline
    -bool
    +bool TEST_CONSTEXPR_CXX14
     operator!=(const random_access_iterator& x, const random_access_iterator& y)
     {
         return !(x == y);
    @@ -274,7 +274,7 @@ operator!=(const random_access_iterator<
     
     template 
     inline
    -bool
    +bool TEST_CONSTEXPR_CXX14
     operator<(const random_access_iterator& x, const random_access_iterator& y)
     {
         return x.base() < y.base();
    @@ -282,7 +282,7 @@ operator<(const random_access_iterator
     inline
    -bool
    +bool TEST_CONSTEXPR_CXX14
     operator<=(const random_access_iterator& x, const random_access_iterator& y)
     {
         return !(y < x);
    @@ -290,7 +290,7 @@ operator<=(const random_access_iterator<
     
     template 
     inline
    -bool
    +bool TEST_CONSTEXPR_CXX14
     operator>(const random_access_iterator& x, const random_access_iterator& y)
     {
         return y < x;
    @@ -298,14 +298,14 @@ operator>(const random_access_iterator
     inline
    -bool
    +bool TEST_CONSTEXPR_CXX14
     operator>=(const random_access_iterator& x, const random_access_iterator& y)
     {
         return !(x < y);
     }
     
     template 
    -inline
    +inline TEST_CONSTEXPR_CXX14
     typename std::iterator_traits::difference_type
     operator-(const random_access_iterator& x, const random_access_iterator& y)
     {
    @@ -313,22 +313,22 @@ operator-(const random_access_iterator
    -inline Iter base(output_iterator i) { return i.base(); }
    +inline TEST_CONSTEXPR_CXX14 Iter base(output_iterator i) { return i.base(); }
     
     template 
    -inline Iter base(input_iterator i) { return i.base(); }
    +inline TEST_CONSTEXPR_CXX14 Iter base(input_iterator i) { return i.base(); }
     
     template 
    -inline Iter base(forward_iterator i) { return i.base(); }
    +inline TEST_CONSTEXPR_CXX14 Iter base(forward_iterator i) { return i.base(); }
     
     template 
    -inline Iter base(bidirectional_iterator i) { return i.base(); }
    +inline TEST_CONSTEXPR_CXX14 Iter base(bidirectional_iterator i) { return i.base(); }
     
     template 
    -inline Iter base(random_access_iterator i) { return i.base(); }
    +inline TEST_CONSTEXPR_CXX14 Iter base(random_access_iterator i) { return i.base(); }
     
     template     // everything else
    -inline Iter base(Iter i) { return i; }
    +inline TEST_CONSTEXPR_CXX14 Iter base(Iter i) { return i; }
     
     template 
     struct ThrowingIterator {
    
    From owner-svn-src-vendor@freebsd.org  Wed May 17 20:23:20 2017
    Return-Path: 
    Delivered-To: svn-src-vendor@mailman.ysv.freebsd.org
    Received: from mx1.freebsd.org (mx1.freebsd.org
     [IPv6:2001:1900:2254:206a::19:1])
     by mailman.ysv.freebsd.org (Postfix) with ESMTP id 2E1DED716A1;
     Wed, 17 May 2017 20:23:20 +0000 (UTC) (envelope-from dim@FreeBSD.org)
    Received: from repo.freebsd.org (repo.freebsd.org
     [IPv6:2610:1c1:1:6068::e6a:0])
     (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
     (Client did not present a certificate)
     by mx1.freebsd.org (Postfix) with ESMTPS id D8D131F6F;
     Wed, 17 May 2017 20:23:19 +0000 (UTC) (envelope-from dim@FreeBSD.org)
    Received: from repo.freebsd.org ([127.0.1.37])
     by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v4HKNIT8015727;
     Wed, 17 May 2017 20:23:18 GMT (envelope-from dim@FreeBSD.org)
    Received: (from dim@localhost)
     by repo.freebsd.org (8.15.2/8.15.2/Submit) id v4HKNI3N015726;
     Wed, 17 May 2017 20:23:18 GMT (envelope-from dim@FreeBSD.org)
    Message-Id: <201705172023.v4HKNI3N015726@repo.freebsd.org>
    X-Authentication-Warning: repo.freebsd.org: dim set sender to dim@FreeBSD.org
     using -f
    From: Dimitry Andric 
    Date: Wed, 17 May 2017 20:23:18 +0000 (UTC)
    To: src-committers@freebsd.org, svn-src-all@freebsd.org,
     svn-src-vendor@freebsd.org
    Subject: svn commit: r318423 - vendor/lld/lld-trunk-r303291
    X-SVN-Group: vendor
    MIME-Version: 1.0
    Content-Type: text/plain; charset=UTF-8
    Content-Transfer-Encoding: 8bit
    X-BeenThere: svn-src-vendor@freebsd.org
    X-Mailman-Version: 2.1.23
    Precedence: list
    List-Id: SVN commit messages for the vendor work area tree
     
    List-Unsubscribe: , 
     
    List-Archive: 
    List-Post: 
    List-Help: 
    List-Subscribe: ,
     
    X-List-Received-Date: Wed, 17 May 2017 20:23:20 -0000
    
    Author: dim
    Date: Wed May 17 20:23:18 2017
    New Revision: 318423
    URL: https://svnweb.freebsd.org/changeset/base/318423
    
    Log:
      Tag lld trunk r303291.
    
    Added:
      vendor/lld/lld-trunk-r303291/
         - copied from r318422, vendor/lld/dist/
    
    From owner-svn-src-vendor@freebsd.org  Wed May 17 20:23:15 2017
    Return-Path: 
    Delivered-To: svn-src-vendor@mailman.ysv.freebsd.org
    Received: from mx1.freebsd.org (mx1.freebsd.org
     [IPv6:2001:1900:2254:206a::19:1])
     by mailman.ysv.freebsd.org (Postfix) with ESMTP id 5DCD5D7163C;
     Wed, 17 May 2017 20:23:15 +0000 (UTC) (envelope-from dim@FreeBSD.org)
    Received: from repo.freebsd.org (repo.freebsd.org
     [IPv6:2610:1c1:1:6068::e6a:0])
     (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
     (Client did not present a certificate)
     by mx1.freebsd.org (Postfix) with ESMTPS id 29D061ED2;
     Wed, 17 May 2017 20:23:15 +0000 (UTC) (envelope-from dim@FreeBSD.org)
    Received: from repo.freebsd.org ([127.0.1.37])
     by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v4HKNEE4015679;
     Wed, 17 May 2017 20:23:14 GMT (envelope-from dim@FreeBSD.org)
    Received: (from dim@localhost)
     by repo.freebsd.org (8.15.2/8.15.2/Submit) id v4HKNDNd015674;
     Wed, 17 May 2017 20:23:13 GMT (envelope-from dim@FreeBSD.org)
    Message-Id: <201705172023.v4HKNDNd015674@repo.freebsd.org>
    X-Authentication-Warning: repo.freebsd.org: dim set sender to dim@FreeBSD.org
     using -f
    From: Dimitry Andric 
    Date: Wed, 17 May 2017 20:23:13 +0000 (UTC)
    To: src-committers@freebsd.org, svn-src-all@freebsd.org,
     svn-src-vendor@freebsd.org
    Subject: svn commit: r318422 - vendor/lld/dist/ELF
    X-SVN-Group: vendor
    MIME-Version: 1.0
    Content-Type: text/plain; charset=UTF-8
    Content-Transfer-Encoding: 8bit
    X-BeenThere: svn-src-vendor@freebsd.org
    X-Mailman-Version: 2.1.23
    Precedence: list
    List-Id: SVN commit messages for the vendor work area tree
     
    List-Unsubscribe: , 
     
    List-Archive: 
    List-Post: 
    List-Help: 
    List-Subscribe: ,
     
    X-List-Received-Date: Wed, 17 May 2017 20:23:15 -0000
    
    Author: dim
    Date: Wed May 17 20:23:13 2017
    New Revision: 318422
    URL: https://svnweb.freebsd.org/changeset/base/318422
    
    Log:
      Vendor import of lld trunk r303291:
      https://llvm.org/svn/llvm-project/lld/trunk@303291
    
    Modified:
      vendor/lld/dist/ELF/Relocations.cpp
      vendor/lld/dist/ELF/Relocations.h
      vendor/lld/dist/ELF/Thunks.cpp
      vendor/lld/dist/ELF/Thunks.h
      vendor/lld/dist/ELF/Writer.cpp
    
    Modified: vendor/lld/dist/ELF/Relocations.cpp
    ==============================================================================
    --- vendor/lld/dist/ELF/Relocations.cpp	Wed May 17 20:23:11 2017	(r318421)
    +++ vendor/lld/dist/ELF/Relocations.cpp	Wed May 17 20:23:13 2017	(r318422)
    @@ -963,9 +963,8 @@ template  void elf::scanRelo
     // in the Sections vector, and recalculate the InputSection output section
     // offsets.
     // This may invalidate any output section offsets stored outside of InputSection
    -template 
    -void ThunkCreator::mergeThunks(OutputSection *OS,
    -                                     std::vector &Thunks) {
    +void ThunkCreator::mergeThunks(OutputSection *OS,
    +                               std::vector &Thunks) {
       // Order Thunks in ascending OutSecOff
       auto ThunkCmp = [](const ThunkSection *A, const ThunkSection *B) {
         return A->OutSecOff < B->OutSecOff;
    @@ -993,9 +992,8 @@ void ThunkCreator::mergeThunks(Out
       OS->assignOffsets();
     }
     
    -template 
    -ThunkSection *ThunkCreator::getOSThunkSec(ThunkSection *&TS,
    -                                                OutputSection *OS) {
    +ThunkSection *ThunkCreator::getOSThunkSec(ThunkSection *&TS,
    +                                          OutputSection *OS) {
       if (TS == nullptr) {
         uint32_t Off = 0;
         for (auto *IS : OS->Sections) {
    @@ -1009,9 +1007,7 @@ ThunkSection *ThunkCreator::getOST
       return TS;
     }
     
    -template 
    -ThunkSection *ThunkCreator::getISThunkSec(InputSection *IS,
    -                                                OutputSection *OS) {
    +ThunkSection *ThunkCreator::getISThunkSec(InputSection *IS, OutputSection *OS) {
       ThunkSection *TS = ThunkedSections.lookup(IS);
       if (TS)
         return TS;
    @@ -1022,12 +1018,11 @@ ThunkSection *ThunkCreator::getIST
       return TS;
     }
     
    -template 
    -std::pair ThunkCreator::getThunk(SymbolBody &Body,
    -                                                      uint32_t Type) {
    +std::pair ThunkCreator::getThunk(SymbolBody &Body,
    +                                                uint32_t Type) {
       auto res = ThunkedSymbols.insert({&Body, nullptr});
       if (res.second)
    -    res.first->second = addThunk(Type, Body);
    +    res.first->second = addThunk(Type, Body);
       return std::make_pair(res.first->second, res.second);
     }
     
    @@ -1041,9 +1036,7 @@ std::pair ThunkCreator
    -bool ThunkCreator::createThunks(
    -    ArrayRef OutputSections) {
    +bool ThunkCreator::createThunks(ArrayRef OutputSections) {
       // Create all the Thunks and insert them into synthetic ThunkSections. The
       // ThunkSections are later inserted back into the OutputSection.
     
    @@ -1086,8 +1079,3 @@ template void elf::scanRelocations(InputSectionBase &);
     template void elf::scanRelocations(InputSectionBase &);
     template void elf::scanRelocations(InputSectionBase &);
    -
    -template class elf::ThunkCreator;
    -template class elf::ThunkCreator;
    -template class elf::ThunkCreator;
    -template class elf::ThunkCreator;
    
    Modified: vendor/lld/dist/ELF/Relocations.h
    ==============================================================================
    --- vendor/lld/dist/ELF/Relocations.h	Wed May 17 20:23:11 2017	(r318421)
    +++ vendor/lld/dist/ELF/Relocations.h	Wed May 17 20:23:13 2017	(r318422)
    @@ -119,7 +119,7 @@ template  void scanRelocatio
     class ThunkSection;
     class Thunk;
     
    -template  class ThunkCreator {
    +class ThunkCreator {
     public:
       // Return true if Thunks have been added to OutputSections
       bool createThunks(ArrayRef OutputSections);
    
    Modified: vendor/lld/dist/ELF/Thunks.cpp
    ==============================================================================
    --- vendor/lld/dist/ELF/Thunks.cpp	Wed May 17 20:23:11 2017	(r318421)
    +++ vendor/lld/dist/ELF/Thunks.cpp	Wed May 17 20:23:13 2017	(r318422)
    @@ -50,7 +50,7 @@ namespace {
     
     // Specific ARM Thunk implementations. The naming convention is:
     // Source State, TargetState, Target Requirement, ABS or PI, Range
    -template  class ARMV7ABSLongThunk final : public Thunk {
    +class ARMV7ABSLongThunk final : public Thunk {
     public:
       ARMV7ABSLongThunk(const SymbolBody &Dest) : Thunk(Dest) {}
     
    @@ -59,7 +59,7 @@ public:
       void addSymbols(ThunkSection &IS) override;
     };
     
    -template  class ARMV7PILongThunk final : public Thunk {
    +class ARMV7PILongThunk final : public Thunk {
     public:
       ARMV7PILongThunk(const SymbolBody &Dest) : Thunk(Dest) {}
     
    @@ -68,7 +68,7 @@ public:
       void addSymbols(ThunkSection &IS) override;
     };
     
    -template  class ThumbV7ABSLongThunk final : public Thunk {
    +class ThumbV7ABSLongThunk final : public Thunk {
     public:
       ThumbV7ABSLongThunk(const SymbolBody &Dest) : Thunk(Dest) {
         this->alignment = 2;
    @@ -79,7 +79,7 @@ public:
       void addSymbols(ThunkSection &IS) override;
     };
     
    -template  class ThumbV7PILongThunk final : public Thunk {
    +class ThumbV7PILongThunk final : public Thunk {
     public:
       ThumbV7PILongThunk(const SymbolBody &Dest) : Thunk(Dest) {
         this->alignment = 2;
    @@ -91,7 +91,7 @@ public:
     };
     
     // MIPS LA25 thunk
    -template  class MipsThunk final : public Thunk {
    +class MipsThunk final : public Thunk {
     public:
       MipsThunk(const SymbolBody &Dest) : Thunk(Dest) {}
     
    @@ -109,117 +109,105 @@ static uint64_t getARMThunkDestVA(const 
       return SignExtend64<32>(V);
     }
     
    -template 
    -void ARMV7ABSLongThunk::writeTo(uint8_t *Buf, ThunkSection &IS) const {
    +void ARMV7ABSLongThunk::writeTo(uint8_t *Buf, ThunkSection &IS) const {
       const uint8_t Data[] = {
           0x00, 0xc0, 0x00, 0xe3, // movw         ip,:lower16:S
           0x00, 0xc0, 0x40, 0xe3, // movt         ip,:upper16:S
           0x1c, 0xff, 0x2f, 0xe1, // bx   ip
       };
    -  uint64_t S = getARMThunkDestVA(this->Destination);
    +  uint64_t S = getARMThunkDestVA(Destination);
       memcpy(Buf, Data, sizeof(Data));
       Target->relocateOne(Buf, R_ARM_MOVW_ABS_NC, S);
       Target->relocateOne(Buf + 4, R_ARM_MOVT_ABS, S);
     }
     
    -template 
    -void ARMV7ABSLongThunk::addSymbols(ThunkSection &IS) {
    -  this->ThunkSym = addSyntheticLocal(
    -      Saver.save("__ARMv7ABSLongThunk_" + this->Destination.getName()),
    -      STT_FUNC, this->Offset, size(), &IS);
    -  addSyntheticLocal("$a", STT_NOTYPE, this->Offset, 0, &IS);
    +void ARMV7ABSLongThunk::addSymbols(ThunkSection &IS) {
    +  ThunkSym = addSyntheticLocal(
    +      Saver.save("__ARMv7ABSLongThunk_" + Destination.getName()), STT_FUNC,
    +      Offset, size(), &IS);
    +  addSyntheticLocal("$a", STT_NOTYPE, Offset, 0, &IS);
     }
     
    -template 
    -void ThumbV7ABSLongThunk::writeTo(uint8_t *Buf, ThunkSection &IS) const {
    +void ThumbV7ABSLongThunk::writeTo(uint8_t *Buf, ThunkSection &IS) const {
       const uint8_t Data[] = {
           0x40, 0xf2, 0x00, 0x0c, // movw         ip, :lower16:S
           0xc0, 0xf2, 0x00, 0x0c, // movt         ip, :upper16:S
           0x60, 0x47,             // bx   ip
       };
    -  uint64_t S = getARMThunkDestVA(this->Destination);
    +  uint64_t S = getARMThunkDestVA(Destination);
       memcpy(Buf, Data, sizeof(Data));
       Target->relocateOne(Buf, R_ARM_THM_MOVW_ABS_NC, S);
       Target->relocateOne(Buf + 4, R_ARM_THM_MOVT_ABS, S);
     }
     
    -template 
    -void ThumbV7ABSLongThunk::addSymbols(ThunkSection &IS) {
    -  this->ThunkSym = addSyntheticLocal(
    -      Saver.save("__Thumbv7ABSLongThunk_" + this->Destination.getName()),
    -      STT_FUNC, this->Offset, size(), &IS);
    -  addSyntheticLocal("$t", STT_NOTYPE, this->Offset, 0, &IS);
    +void ThumbV7ABSLongThunk::addSymbols(ThunkSection &IS) {
    +  ThunkSym = addSyntheticLocal(
    +      Saver.save("__Thumbv7ABSLongThunk_" + Destination.getName()), STT_FUNC,
    +      Offset, size(), &IS);
    +  addSyntheticLocal("$t", STT_NOTYPE, Offset, 0, &IS);
     }
     
    -template 
    -void ARMV7PILongThunk::writeTo(uint8_t *Buf, ThunkSection &IS) const {
    +void ARMV7PILongThunk::writeTo(uint8_t *Buf, ThunkSection &IS) const {
       const uint8_t Data[] = {
           0xf0, 0xcf, 0x0f, 0xe3, // P:  movw ip,:lower16:S - (P + (L1-P) +8)
           0x00, 0xc0, 0x40, 0xe3, //     movt ip,:upper16:S - (P + (L1-P+4) +8)
           0x0f, 0xc0, 0x8c, 0xe0, // L1: add ip, ip, pc
           0x1c, 0xff, 0x2f, 0xe1, //     bx r12
       };
    -  uint64_t S = getARMThunkDestVA(this->Destination);
    -  uint64_t P = this->ThunkSym->getVA();
    +  uint64_t S = getARMThunkDestVA(Destination);
    +  uint64_t P = ThunkSym->getVA();
       memcpy(Buf, Data, sizeof(Data));
       Target->relocateOne(Buf, R_ARM_MOVW_PREL_NC, S - P - 16);
       Target->relocateOne(Buf + 4, R_ARM_MOVT_PREL, S - P - 12);
     }
     
    -template 
    -void ARMV7PILongThunk::addSymbols(ThunkSection &IS) {
    -  this->ThunkSym = addSyntheticLocal(
    -      Saver.save("__ARMV7PILongThunk_" + this->Destination.getName()), STT_FUNC,
    -      this->Offset, size(), &IS);
    -  addSyntheticLocal("$a", STT_NOTYPE, this->Offset, 0, &IS);
    +void ARMV7PILongThunk::addSymbols(ThunkSection &IS) {
    +  ThunkSym = addSyntheticLocal(
    +      Saver.save("__ARMV7PILongThunk_" + Destination.getName()), STT_FUNC,
    +      Offset, size(), &IS);
    +  addSyntheticLocal("$a", STT_NOTYPE, Offset, 0, &IS);
     }
     
    -template 
    -void ThumbV7PILongThunk::writeTo(uint8_t *Buf, ThunkSection &IS) const {
    +void ThumbV7PILongThunk::writeTo(uint8_t *Buf, ThunkSection &IS) const {
       const uint8_t Data[] = {
           0x4f, 0xf6, 0xf4, 0x7c, // P:  movw ip,:lower16:S - (P + (L1-P) + 4)
           0xc0, 0xf2, 0x00, 0x0c, //     movt ip,:upper16:S - (P + (L1-P+4) + 4)
           0xfc, 0x44,             // L1: add  r12, pc
           0x60, 0x47,             //     bx   r12
       };
    -  uint64_t S = getARMThunkDestVA(this->Destination);
    -  uint64_t P = this->ThunkSym->getVA();
    +  uint64_t S = getARMThunkDestVA(Destination);
    +  uint64_t P = ThunkSym->getVA();
       memcpy(Buf, Data, sizeof(Data));
       Target->relocateOne(Buf, R_ARM_THM_MOVW_PREL_NC, S - P - 12);
       Target->relocateOne(Buf + 4, R_ARM_THM_MOVT_PREL, S - P - 8);
     }
     
    -template 
    -void ThumbV7PILongThunk::addSymbols(ThunkSection &IS) {
    -  this->ThunkSym = addSyntheticLocal(
    -      Saver.save("__ThumbV7PILongThunk_" + this->Destination.getName()),
    -      STT_FUNC, this->Offset, size(), &IS);
    -  addSyntheticLocal("$t", STT_NOTYPE, this->Offset, 0, &IS);
    +void ThumbV7PILongThunk::addSymbols(ThunkSection &IS) {
    +  ThunkSym = addSyntheticLocal(
    +      Saver.save("__ThumbV7PILongThunk_" + Destination.getName()), STT_FUNC,
    +      Offset, size(), &IS);
    +  addSyntheticLocal("$t", STT_NOTYPE, Offset, 0, &IS);
     }
     
     // Write MIPS LA25 thunk code to call PIC function from the non-PIC one.
    -template 
    -void MipsThunk::writeTo(uint8_t *Buf, ThunkSection &) const {
    -  const endianness E = ELFT::TargetEndianness;
    -
    +void MipsThunk::writeTo(uint8_t *Buf, ThunkSection &) const {
       uint64_t S = this->Destination.getVA();
    -  write32(Buf, 0x3c190000);                // lui   $25, %hi(func)
    -  write32(Buf + 4, 0x08000000 | (S >> 2)); // j     func
    -  write32(Buf + 8, 0x27390000);            // addiu $25, $25, %lo(func)
    -  write32(Buf + 12, 0x00000000);           // nop
    +  write32(Buf, 0x3c190000, Config->Endianness);                // lui   $25, %hi(func)
    +  write32(Buf + 4, 0x08000000 | (S >> 2), Config->Endianness); // j     func
    +  write32(Buf + 8, 0x27390000, Config->Endianness);            // addiu $25, $25, %lo(func)
    +  write32(Buf + 12, 0x00000000, Config->Endianness);           // nop
       Target->relocateOne(Buf, R_MIPS_HI16, S);
       Target->relocateOne(Buf + 8, R_MIPS_LO16, S);
     }
     
    -template  void MipsThunk::addSymbols(ThunkSection &IS) {
    -  this->ThunkSym = addSyntheticLocal(
    -      Saver.save("__LA25Thunk_" + this->Destination.getName()), STT_FUNC,
    -      this->Offset, size(), &IS);
    +void MipsThunk::addSymbols(ThunkSection &IS) {
    +  ThunkSym =
    +      addSyntheticLocal(Saver.save("__LA25Thunk_" + Destination.getName()),
    +                        STT_FUNC, Offset, size(), &IS);
     }
     
    -template 
    -InputSection *MipsThunk::getTargetInputSection() const {
    -  auto *DR = dyn_cast(&this->Destination);
    +InputSection *MipsThunk::getTargetInputSection() const {
    +  auto *DR = dyn_cast(&Destination);
       return dyn_cast(DR->Section);
     }
     
    @@ -228,7 +216,7 @@ Thunk::Thunk(const SymbolBody &D) : Dest
     Thunk::~Thunk() = default;
     
     // Creates a thunk for Thumb-ARM interworking.
    -template  static Thunk *addThunkArm(uint32_t Reloc, SymbolBody &S) {
    +static Thunk *addThunkArm(uint32_t Reloc, SymbolBody &S) {
       // ARM relocations need ARM to Thumb interworking Thunks.
       // Thumb relocations need Thumb to ARM relocations.
       // Use position independent Thunks if we require position independent code.
    @@ -237,33 +225,29 @@ template  static Thunk *addT
       case R_ARM_PLT32:
       case R_ARM_JUMP24:
         if (Config->Pic)
    -      return make>(S);
    -    return make>(S);
    +      return make(S);
    +    return make(S);
       case R_ARM_THM_JUMP19:
       case R_ARM_THM_JUMP24:
         if (Config->Pic)
    -      return make>(S);
    -    return make>(S);
    +      return make(S);
    +    return make(S);
       }
       fatal("unrecognized relocation type");
     }
     
    -template  static Thunk *addThunkMips(SymbolBody &S) {
    -  return make>(S);
    +static Thunk *addThunkMips(SymbolBody &S) {
    +  return make(S);
     }
     
    -template  Thunk *addThunk(uint32_t RelocType, SymbolBody &S) {
    +Thunk *addThunk(uint32_t RelocType, SymbolBody &S) {
       if (Config->EMachine == EM_ARM)
    -    return addThunkArm(RelocType, S);
    +    return addThunkArm(RelocType, S);
       else if (Config->EMachine == EM_MIPS)
    -    return addThunkMips(S);
    +    return addThunkMips(S);
       llvm_unreachable("add Thunk only supported for ARM and Mips");
       return nullptr;
     }
     
    -template Thunk *addThunk(uint32_t, SymbolBody &);
    -template Thunk *addThunk(uint32_t, SymbolBody &);
    -template Thunk *addThunk(uint32_t, SymbolBody &);
    -template Thunk *addThunk(uint32_t, SymbolBody &);
     } // end namespace elf
     } // end namespace lld
    
    Modified: vendor/lld/dist/ELF/Thunks.h
    ==============================================================================
    --- vendor/lld/dist/ELF/Thunks.h	Wed May 17 20:23:11 2017	(r318421)
    +++ vendor/lld/dist/ELF/Thunks.h	Wed May 17 20:23:13 2017	(r318422)
    @@ -51,7 +51,7 @@ public:
     
     // For a Relocation to symbol S create a Thunk to be added to a synthetic
     // ThunkSection. At present there are implementations for ARM and Mips Thunks.
    -template  Thunk *addThunk(uint32_t RelocType, SymbolBody &S);
    +Thunk *addThunk(uint32_t RelocType, SymbolBody &S);
     
     } // namespace elf
     } // namespace lld
    
    Modified: vendor/lld/dist/ELF/Writer.cpp
    ==============================================================================
    --- vendor/lld/dist/ELF/Writer.cpp	Wed May 17 20:23:11 2017	(r318421)
    +++ vendor/lld/dist/ELF/Writer.cpp	Wed May 17 20:23:13 2017	(r318422)
    @@ -1223,7 +1223,7 @@ template  void Writer:
         // we need to assign addresses so that we can tell if jump instructions
         // are out of range. This will need to turn into a loop that converges
         // when no more Thunks are added
    -    ThunkCreator TC;
    +    ThunkCreator TC;
         if (TC.createThunks(OutputSections))
           applySynthetic({InX::MipsGot},
                          [](SyntheticSection *SS) { SS->updateAllocSize(); });
    
    From owner-svn-src-vendor@freebsd.org  Wed May 17 20:23:29 2017
    Return-Path: 
    Delivered-To: svn-src-vendor@mailman.ysv.freebsd.org
    Received: from mx1.freebsd.org (mx1.freebsd.org
     [IPv6:2001:1900:2254:206a::19:1])
     by mailman.ysv.freebsd.org (Postfix) with ESMTP id 7DA1DD71740;
     Wed, 17 May 2017 20:23:29 +0000 (UTC) (envelope-from dim@FreeBSD.org)
    Received: from repo.freebsd.org (repo.freebsd.org
     [IPv6:2610:1c1:1:6068::e6a:0])
     (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
     (Client did not present a certificate)
     by mx1.freebsd.org (Postfix) with ESMTPS id 2CC48DF;
     Wed, 17 May 2017 20:23:29 +0000 (UTC) (envelope-from dim@FreeBSD.org)
    Received: from repo.freebsd.org ([127.0.1.37])
     by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v4HKNSB6015839;
     Wed, 17 May 2017 20:23:28 GMT (envelope-from dim@FreeBSD.org)
    Received: (from dim@localhost)
     by repo.freebsd.org (8.15.2/8.15.2/Submit) id v4HKNS87015838;
     Wed, 17 May 2017 20:23:28 GMT (envelope-from dim@FreeBSD.org)
    Message-Id: <201705172023.v4HKNS87015838@repo.freebsd.org>
    X-Authentication-Warning: repo.freebsd.org: dim set sender to dim@FreeBSD.org
     using -f
    From: Dimitry Andric 
    Date: Wed, 17 May 2017 20:23:28 +0000 (UTC)
    To: src-committers@freebsd.org, svn-src-all@freebsd.org,
     svn-src-vendor@freebsd.org
    Subject: svn commit: r318425 - vendor/lldb/lldb-trunk-r303291
    X-SVN-Group: vendor
    MIME-Version: 1.0
    Content-Type: text/plain; charset=UTF-8
    Content-Transfer-Encoding: 8bit
    X-BeenThere: svn-src-vendor@freebsd.org
    X-Mailman-Version: 2.1.23
    Precedence: list
    List-Id: SVN commit messages for the vendor work area tree
     
    List-Unsubscribe: , 
     
    List-Archive: 
    List-Post: 
    List-Help: 
    List-Subscribe: ,
     
    X-List-Received-Date: Wed, 17 May 2017 20:23:29 -0000
    
    Author: dim
    Date: Wed May 17 20:23:27 2017
    New Revision: 318425
    URL: https://svnweb.freebsd.org/changeset/base/318425
    
    Log:
      Tag lldb trunk r303291.
    
    Added:
      vendor/lldb/lldb-trunk-r303291/
         - copied from r318424, vendor/lldb/dist/
    
    From owner-svn-src-vendor@freebsd.org  Wed May 17 20:23:25 2017
    Return-Path: 
    Delivered-To: svn-src-vendor@mailman.ysv.freebsd.org
    Received: from mx1.freebsd.org (mx1.freebsd.org
     [IPv6:2001:1900:2254:206a::19:1])
     by mailman.ysv.freebsd.org (Postfix) with ESMTP id 5B611D716F9;
     Wed, 17 May 2017 20:23:25 +0000 (UTC) (envelope-from dim@FreeBSD.org)
    Received: from repo.freebsd.org (repo.freebsd.org
     [IPv6:2610:1c1:1:6068::e6a:0])
     (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
     (Client did not present a certificate)
     by mx1.freebsd.org (Postfix) with ESMTPS id 2B22FA;
     Wed, 17 May 2017 20:23:25 +0000 (UTC) (envelope-from dim@FreeBSD.org)
    Received: from repo.freebsd.org ([127.0.1.37])
     by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v4HKNOQA015793;
     Wed, 17 May 2017 20:23:24 GMT (envelope-from dim@FreeBSD.org)
    Received: (from dim@localhost)
     by repo.freebsd.org (8.15.2/8.15.2/Submit) id v4HKNMto015774;
     Wed, 17 May 2017 20:23:22 GMT (envelope-from dim@FreeBSD.org)
    Message-Id: <201705172023.v4HKNMto015774@repo.freebsd.org>
    X-Authentication-Warning: repo.freebsd.org: dim set sender to dim@FreeBSD.org
     using -f
    From: Dimitry Andric 
    Date: Wed, 17 May 2017 20:23:22 +0000 (UTC)
    To: src-committers@freebsd.org, svn-src-all@freebsd.org,
     svn-src-vendor@freebsd.org
    Subject: svn commit: r318424 - in vendor/lldb/dist: include/lldb/Symbol
     packages/Python/lldbsuite/test
     packages/Python/lldbsuite/test/lang/c/conflicting-symbol
     packages/Python/lldbsuite/test/lang/c/conflict...
    X-SVN-Group: vendor
    MIME-Version: 1.0
    Content-Type: text/plain; charset=UTF-8
    Content-Transfer-Encoding: 8bit
    X-BeenThere: svn-src-vendor@freebsd.org
    X-Mailman-Version: 2.1.23
    Precedence: list
    List-Id: SVN commit messages for the vendor work area tree
     
    List-Unsubscribe: , 
     
    List-Archive: 
    List-Post: 
    List-Help: 
    List-Subscribe: ,
     
    X-List-Received-Date: Wed, 17 May 2017 20:23:25 -0000
    
    Author: dim
    Date: Wed May 17 20:23:22 2017
    New Revision: 318424
    URL: https://svnweb.freebsd.org/changeset/base/318424
    
    Log:
      Vendor import of lldb trunk r303291:
      https://llvm.org/svn/llvm-project/lldb/trunk@303291
    
    Added:
      vendor/lldb/dist/packages/Python/lldbsuite/test/lang/c/conflicting-symbol/
      vendor/lldb/dist/packages/Python/lldbsuite/test/lang/c/conflicting-symbol/Makefile   (contents, props changed)
      vendor/lldb/dist/packages/Python/lldbsuite/test/lang/c/conflicting-symbol/One/
      vendor/lldb/dist/packages/Python/lldbsuite/test/lang/c/conflicting-symbol/One.mk   (contents, props changed)
      vendor/lldb/dist/packages/Python/lldbsuite/test/lang/c/conflicting-symbol/One/One.c   (contents, props changed)
      vendor/lldb/dist/packages/Python/lldbsuite/test/lang/c/conflicting-symbol/One/One.h   (contents, props changed)
      vendor/lldb/dist/packages/Python/lldbsuite/test/lang/c/conflicting-symbol/One/OneConstant.c   (contents, props changed)
      vendor/lldb/dist/packages/Python/lldbsuite/test/lang/c/conflicting-symbol/TestConflictingSymbol.py   (contents, props changed)
      vendor/lldb/dist/packages/Python/lldbsuite/test/lang/c/conflicting-symbol/Two/
      vendor/lldb/dist/packages/Python/lldbsuite/test/lang/c/conflicting-symbol/Two.mk   (contents, props changed)
      vendor/lldb/dist/packages/Python/lldbsuite/test/lang/c/conflicting-symbol/Two/Two.c   (contents, props changed)
      vendor/lldb/dist/packages/Python/lldbsuite/test/lang/c/conflicting-symbol/Two/Two.h   (contents, props changed)
      vendor/lldb/dist/packages/Python/lldbsuite/test/lang/c/conflicting-symbol/Two/TwoConstant.c   (contents, props changed)
      vendor/lldb/dist/packages/Python/lldbsuite/test/lang/c/conflicting-symbol/main.c   (contents, props changed)
    Modified:
      vendor/lldb/dist/include/lldb/Symbol/SymbolContext.h
      vendor/lldb/dist/packages/Python/lldbsuite/test/lldbtest.py
      vendor/lldb/dist/source/Breakpoint/Breakpoint.cpp
      vendor/lldb/dist/source/Plugins/ExpressionParser/Clang/ClangExpressionDeclMap.cpp
      vendor/lldb/dist/source/Plugins/ExpressionParser/Clang/ClangExpressionDeclMap.h
      vendor/lldb/dist/source/Symbol/SymbolContext.cpp
    
    Modified: vendor/lldb/dist/include/lldb/Symbol/SymbolContext.h
    ==============================================================================
    --- vendor/lldb/dist/include/lldb/Symbol/SymbolContext.h	Wed May 17 20:23:18 2017	(r318423)
    +++ vendor/lldb/dist/include/lldb/Symbol/SymbolContext.h	Wed May 17 20:23:22 2017	(r318424)
    @@ -235,6 +235,29 @@ public:
     
       bool GetAddressRangeFromHereToEndLine(uint32_t end_line, AddressRange &range,
                                             Status &error);
    +  
    +  //------------------------------------------------------------------
    +  /// Find the best global data symbol visible from this context.
    +  ///
    +  /// Symbol priority is:
    +  ///     - extern symbol in the current module if there is one
    +  ///     - non-extern symbol in the current module if there is one
    +  ///     - extern symbol in the target
    +  ///     - non-extern symbol in the target
    +  /// It is an error if the highest-priority result is ambiguous.
    +  ///
    +  /// @param[in] name
    +  ///     The name of the symbol to search for.
    +  ///
    +  /// @param[out] error
    +  ///     An error that will be populated with a message if there was an
    +  ///     ambiguous result.  The error will not be populated if no result
    +  ///     was found.
    +  ///
    +  /// @return
    +  ///     The symbol that was found, or \b nullptr if none was found.
    +  //------------------------------------------------------------------
    +  const Symbol *FindBestGlobalDataSymbol(const ConstString &name, Status &error);
     
       void GetDescription(Stream *s, lldb::DescriptionLevel level,
                           Target *target) const;
    
    Added: vendor/lldb/dist/packages/Python/lldbsuite/test/lang/c/conflicting-symbol/Makefile
    ==============================================================================
    --- /dev/null	00:00:00 1970	(empty, because file is newly added)
    +++ vendor/lldb/dist/packages/Python/lldbsuite/test/lang/c/conflicting-symbol/Makefile	Wed May 17 20:23:22 2017	(r318424)
    @@ -0,0 +1,18 @@
    +LEVEL := ../../../make
    +
    +LD_EXTRAS := -L. -l$(LIB_PREFIX)One -l$(LIB_PREFIX)Two
    +C_SOURCES := main.c
    +
    +main.o : CFLAGS_EXTRAS += -g -O0
    +
    +include $(LEVEL)/Makefile.rules
    +
    +.PHONY:
    +a.out: lib_One lib_Two
    +
    +lib_%:
    +	$(MAKE) -f $*.mk
    +
    +clean::
    +	$(MAKE) -f One.mk clean
    +	$(MAKE) -f Two.mk clean
    
    Added: vendor/lldb/dist/packages/Python/lldbsuite/test/lang/c/conflicting-symbol/One.mk
    ==============================================================================
    --- /dev/null	00:00:00 1970	(empty, because file is newly added)
    +++ vendor/lldb/dist/packages/Python/lldbsuite/test/lang/c/conflicting-symbol/One.mk	Wed May 17 20:23:22 2017	(r318424)
    @@ -0,0 +1,12 @@
    +LEVEL := ../../../make
    +
    +DYLIB_NAME := One
    +DYLIB_C_SOURCES := One/One.c One/OneConstant.c
    +DYLIB_ONLY := YES
    +
    +include $(LEVEL)/Makefile.rules
    +
    +CFLAGS_EXTRAS += -fPIC
    +
    +One/OneConstant.o: One/OneConstant.c
    +	$(CC) $(CFLAGS_NO_DEBUG) -c $< -o $@
    
    Added: vendor/lldb/dist/packages/Python/lldbsuite/test/lang/c/conflicting-symbol/One/One.c
    ==============================================================================
    --- /dev/null	00:00:00 1970	(empty, because file is newly added)
    +++ vendor/lldb/dist/packages/Python/lldbsuite/test/lang/c/conflicting-symbol/One/One.c	Wed May 17 20:23:22 2017	(r318424)
    @@ -0,0 +1,6 @@
    +#include "One.h"
    +#include 
    +
    +void one() {
    +  printf("One\n"); // break here
    +}
    
    Added: vendor/lldb/dist/packages/Python/lldbsuite/test/lang/c/conflicting-symbol/One/One.h
    ==============================================================================
    --- /dev/null	00:00:00 1970	(empty, because file is newly added)
    +++ vendor/lldb/dist/packages/Python/lldbsuite/test/lang/c/conflicting-symbol/One/One.h	Wed May 17 20:23:22 2017	(r318424)
    @@ -0,0 +1,4 @@
    +#ifndef ONE_H
    +#define ONE_H
    +void one();
    +#endif
    
    Added: vendor/lldb/dist/packages/Python/lldbsuite/test/lang/c/conflicting-symbol/One/OneConstant.c
    ==============================================================================
    --- /dev/null	00:00:00 1970	(empty, because file is newly added)
    +++ vendor/lldb/dist/packages/Python/lldbsuite/test/lang/c/conflicting-symbol/One/OneConstant.c	Wed May 17 20:23:22 2017	(r318424)
    @@ -0,0 +1 @@
    +int __attribute__ ((visibility("hidden"))) conflicting_symbol = 11111;
    
    Added: vendor/lldb/dist/packages/Python/lldbsuite/test/lang/c/conflicting-symbol/TestConflictingSymbol.py
    ==============================================================================
    --- /dev/null	00:00:00 1970	(empty, because file is newly added)
    +++ vendor/lldb/dist/packages/Python/lldbsuite/test/lang/c/conflicting-symbol/TestConflictingSymbol.py	Wed May 17 20:23:22 2017	(r318424)
    @@ -0,0 +1,90 @@
    +"""Test that conflicting symbols in different shared libraries work correctly"""
    +
    +from __future__ import print_function
    +
    +
    +import os
    +import time
    +import lldb
    +from lldbsuite.test.decorators import *
    +from lldbsuite.test.lldbtest import *
    +from lldbsuite.test import lldbutil
    +
    +
    +class TestConflictingSymbols(TestBase):
    +
    +    mydir = TestBase.compute_mydir(__file__)
    +    NO_DEBUG_INFO_TESTCASE = True
    +
    +    def test_conflicting_symbols(self):
    +        self.build()
    +        exe = os.path.join(os.getcwd(), "a.out")
    +        target = self.dbg.CreateTarget("a.out")
    +        self.assertTrue(target, VALID_TARGET)
    +
    +        # Register our shared libraries for remote targets so they get
    +        # automatically uploaded
    +        environment = self.registerSharedLibrariesWithTarget(
    +            target, ['One', 'Two'])
    +
    +        One_line = line_number('One/One.c', '// break here')
    +        Two_line = line_number('Two/Two.c', '// break here')
    +        main_line = line_number('main.c', '// break here')
    +        lldbutil.run_break_set_command(
    +            self, 'breakpoint set -f One.c -l %s' % (One_line))
    +        lldbutil.run_break_set_command(
    +            self, 'breakpoint set -f Two.c -l %s' % (Two_line))
    +        lldbutil.run_break_set_by_file_and_line(
    +            self, 'main.c', main_line, num_expected_locations=1, loc_exact=True)
    +
    +        process = target.LaunchSimple(
    +            None, environment, self.get_process_working_directory())
    +        self.assertTrue(process, PROCESS_IS_VALID)
    +
    +        # The stop reason of the thread should be breakpoint.
    +        self.expect("thread list", STOPPED_DUE_TO_BREAKPOINT,
    +                    substrs=['stopped',
    +                             'stop reason = breakpoint'])
    +
    +        self.expect("breakpoint list -f", BREAKPOINT_HIT_ONCE,
    +                    substrs=[' resolved, hit count = 1'])
    +
    +        # This should display correctly.
    +        self.expect(
    +            "expr (unsigned long long)conflicting_symbol",
    +            "Symbol from One should be found",
    +            substrs=[
    +                "11111"])
    +
    +        self.runCmd("continue", RUN_SUCCEEDED)
    +
    +        # The stop reason of the thread should be breakpoint.
    +        self.expect("thread list", STOPPED_DUE_TO_BREAKPOINT,
    +                    substrs=['stopped',
    +                             'stop reason = breakpoint'])
    +
    +        self.expect("breakpoint list -f", BREAKPOINT_HIT_ONCE,
    +                    substrs=[' resolved, hit count = 1'])
    +
    +        self.expect(
    +            "expr (unsigned long long)conflicting_symbol",
    +            "Symbol from Two should be found",
    +            substrs=[
    +                "22222"])
    +
    +        self.runCmd("continue", RUN_SUCCEEDED)
    +
    +        # The stop reason of the thread should be breakpoint.
    +        self.expect("thread list", STOPPED_DUE_TO_BREAKPOINT,
    +                    substrs=['stopped',
    +                             'stop reason = breakpoint'])
    +
    +        self.expect("breakpoint list -f", BREAKPOINT_HIT_ONCE,
    +                    substrs=[' resolved, hit count = 1'])
    +
    +        self.expect(
    +            "expr (unsigned long long)conflicting_symbol",
    +            "An error should be printed when symbols can't be ordered",
    +            error=True,
    +            substrs=[
    +                "Multiple internal symbols"])
    
    Added: vendor/lldb/dist/packages/Python/lldbsuite/test/lang/c/conflicting-symbol/Two.mk
    ==============================================================================
    --- /dev/null	00:00:00 1970	(empty, because file is newly added)
    +++ vendor/lldb/dist/packages/Python/lldbsuite/test/lang/c/conflicting-symbol/Two.mk	Wed May 17 20:23:22 2017	(r318424)
    @@ -0,0 +1,12 @@
    +LEVEL := ../../../make
    +
    +DYLIB_NAME := Two
    +DYLIB_C_SOURCES := Two/Two.c Two/TwoConstant.c
    +DYLIB_ONLY := YES
    +
    +include $(LEVEL)/Makefile.rules
    +
    +CFLAGS_EXTRAS += -fPIC
    +
    +Two/TwoConstant.o: Two/TwoConstant.c
    +	$(CC) $(CFLAGS_NO_DEBUG) -c $< -o $@
    
    Added: vendor/lldb/dist/packages/Python/lldbsuite/test/lang/c/conflicting-symbol/Two/Two.c
    ==============================================================================
    --- /dev/null	00:00:00 1970	(empty, because file is newly added)
    +++ vendor/lldb/dist/packages/Python/lldbsuite/test/lang/c/conflicting-symbol/Two/Two.c	Wed May 17 20:23:22 2017	(r318424)
    @@ -0,0 +1,6 @@
    +#include "Two.h"
    +#include 
    +
    +void two() {
    +  printf("Two\n"); // break here
    +}
    
    Added: vendor/lldb/dist/packages/Python/lldbsuite/test/lang/c/conflicting-symbol/Two/Two.h
    ==============================================================================
    --- /dev/null	00:00:00 1970	(empty, because file is newly added)
    +++ vendor/lldb/dist/packages/Python/lldbsuite/test/lang/c/conflicting-symbol/Two/Two.h	Wed May 17 20:23:22 2017	(r318424)
    @@ -0,0 +1,4 @@
    +#ifndef TWO_H
    +#define TWO_H
    +void two();
    +#endif
    
    Added: vendor/lldb/dist/packages/Python/lldbsuite/test/lang/c/conflicting-symbol/Two/TwoConstant.c
    ==============================================================================
    --- /dev/null	00:00:00 1970	(empty, because file is newly added)
    +++ vendor/lldb/dist/packages/Python/lldbsuite/test/lang/c/conflicting-symbol/Two/TwoConstant.c	Wed May 17 20:23:22 2017	(r318424)
    @@ -0,0 +1 @@
    +int __attribute__ ((visibility("hidden"))) conflicting_symbol = 22222;
    
    Added: vendor/lldb/dist/packages/Python/lldbsuite/test/lang/c/conflicting-symbol/main.c
    ==============================================================================
    --- /dev/null	00:00:00 1970	(empty, because file is newly added)
    +++ vendor/lldb/dist/packages/Python/lldbsuite/test/lang/c/conflicting-symbol/main.c	Wed May 17 20:23:22 2017	(r318424)
    @@ -0,0 +1,11 @@
    +#include "One/One.h"
    +#include "Two/Two.h"
    +
    +#include 
    +
    +int main() {
    +  one();
    +  two();
    +  printf("main\n"); // break here
    +  return(0); 
    +}
    
    Modified: vendor/lldb/dist/packages/Python/lldbsuite/test/lldbtest.py
    ==============================================================================
    --- vendor/lldb/dist/packages/Python/lldbsuite/test/lldbtest.py	Wed May 17 20:23:18 2017	(r318423)
    +++ vendor/lldb/dist/packages/Python/lldbsuite/test/lldbtest.py	Wed May 17 20:23:22 2017	(r318424)
    @@ -1934,7 +1934,7 @@ class TestBase(Base):
                 # "libFoo.dylib" or "libFoo.so", or "Foo.so" for "Foo.so" or "libFoo.so", or just a
                 # basename like "libFoo.so". So figure out which one it is and resolve the local copy
                 # of the shared library accordingly
    -            if os.path.exists(name):
    +            if os.path.isfile(name):
                     local_shlib_path = name  # name is the full path to the local shared library
                 else:
                     # Check relative names
    
    Modified: vendor/lldb/dist/source/Breakpoint/Breakpoint.cpp
    ==============================================================================
    --- vendor/lldb/dist/source/Breakpoint/Breakpoint.cpp	Wed May 17 20:23:18 2017	(r318423)
    +++ vendor/lldb/dist/source/Breakpoint/Breakpoint.cpp	Wed May 17 20:23:22 2017	(r318424)
    @@ -837,8 +837,8 @@ bool Breakpoint::AddName(llvm::StringRef
       if (new_name.empty())
         return false;
       if (!BreakpointID::StringIsBreakpointName(new_name, error)) {
    -    error.SetErrorStringWithFormat("input name \"%s\" not a breakpoint name.",
    -                                   new_name);
    +    error.SetErrorStringWithFormatv("input name \"{0}\" not a breakpoint name.",
    +                                    new_name);
         return false;
       }
       if (!error.Success())
    
    Modified: vendor/lldb/dist/source/Plugins/ExpressionParser/Clang/ClangExpressionDeclMap.cpp
    ==============================================================================
    --- vendor/lldb/dist/source/Plugins/ExpressionParser/Clang/ClangExpressionDeclMap.cpp	Wed May 17 20:23:18 2017	(r318423)
    +++ vendor/lldb/dist/source/Plugins/ExpressionParser/Clang/ClangExpressionDeclMap.cpp	Wed May 17 20:23:22 2017	(r318424)
    @@ -591,103 +591,6 @@ addr_t ClangExpressionDeclMap::GetSymbol
                               symbol_type);
     }
     
    -const Symbol *ClangExpressionDeclMap::FindGlobalDataSymbol(
    -    Target &target, const ConstString &name, lldb_private::Module *module) {
    -  SymbolContextList sc_list;
    -
    -  if (module)
    -    module->FindSymbolsWithNameAndType(name, eSymbolTypeAny, sc_list);
    -  else
    -    target.GetImages().FindSymbolsWithNameAndType(name, eSymbolTypeAny,
    -                                                  sc_list);
    -
    -  const uint32_t matches = sc_list.GetSize();
    -  for (uint32_t i = 0; i < matches; ++i) {
    -    SymbolContext sym_ctx;
    -    sc_list.GetContextAtIndex(i, sym_ctx);
    -    if (sym_ctx.symbol) {
    -      const Symbol *symbol = sym_ctx.symbol;
    -      const Address sym_address = symbol->GetAddress();
    -
    -      if (sym_address.IsValid()) {
    -        switch (symbol->GetType()) {
    -        case eSymbolTypeData:
    -        case eSymbolTypeRuntime:
    -        case eSymbolTypeAbsolute:
    -        case eSymbolTypeObjCClass:
    -        case eSymbolTypeObjCMetaClass:
    -        case eSymbolTypeObjCIVar:
    -          if (symbol->GetDemangledNameIsSynthesized()) {
    -            // If the demangled name was synthesized, then don't use it
    -            // for expressions. Only let the symbol match if the mangled
    -            // named matches for these symbols.
    -            if (symbol->GetMangled().GetMangledName() != name)
    -              break;
    -          }
    -          return symbol;
    -
    -        case eSymbolTypeReExported: {
    -          ConstString reexport_name = symbol->GetReExportedSymbolName();
    -          if (reexport_name) {
    -            ModuleSP reexport_module_sp;
    -            ModuleSpec reexport_module_spec;
    -            reexport_module_spec.GetPlatformFileSpec() =
    -                symbol->GetReExportedSymbolSharedLibrary();
    -            if (reexport_module_spec.GetPlatformFileSpec()) {
    -              reexport_module_sp =
    -                  target.GetImages().FindFirstModule(reexport_module_spec);
    -              if (!reexport_module_sp) {
    -                reexport_module_spec.GetPlatformFileSpec()
    -                    .GetDirectory()
    -                    .Clear();
    -                reexport_module_sp =
    -                    target.GetImages().FindFirstModule(reexport_module_spec);
    -              }
    -            }
    -            // Don't allow us to try and resolve a re-exported symbol if it is
    -            // the same
    -            // as the current symbol
    -            if (name == symbol->GetReExportedSymbolName() &&
    -                module == reexport_module_sp.get())
    -              return NULL;
    -
    -            return FindGlobalDataSymbol(target,
    -                                        symbol->GetReExportedSymbolName(),
    -                                        reexport_module_sp.get());
    -          }
    -        } break;
    -
    -        case eSymbolTypeCode: // We already lookup functions elsewhere
    -        case eSymbolTypeVariable:
    -        case eSymbolTypeLocal:
    -        case eSymbolTypeParam:
    -        case eSymbolTypeTrampoline:
    -        case eSymbolTypeInvalid:
    -        case eSymbolTypeException:
    -        case eSymbolTypeSourceFile:
    -        case eSymbolTypeHeaderFile:
    -        case eSymbolTypeObjectFile:
    -        case eSymbolTypeCommonBlock:
    -        case eSymbolTypeBlock:
    -        case eSymbolTypeVariableType:
    -        case eSymbolTypeLineEntry:
    -        case eSymbolTypeLineHeader:
    -        case eSymbolTypeScopeBegin:
    -        case eSymbolTypeScopeEnd:
    -        case eSymbolTypeAdditional:
    -        case eSymbolTypeCompiler:
    -        case eSymbolTypeInstrumentation:
    -        case eSymbolTypeUndefined:
    -        case eSymbolTypeResolver:
    -          break;
    -        }
    -      }
    -    }
    -  }
    -
    -  return NULL;
    -}
    -
     lldb::VariableSP ClangExpressionDeclMap::FindGlobalVariable(
         Target &target, ModuleSP &module, const ConstString &name,
         CompilerDeclContext *namespace_decl, TypeFromUser *type) {
    @@ -1526,9 +1429,18 @@ void ClangExpressionDeclMap::FindExterna
           // We couldn't find a non-symbol variable for this.  Now we'll hunt for
           // a generic
           // data symbol, and -- if it is found -- treat it as a variable.
    -
    -      const Symbol *data_symbol = FindGlobalDataSymbol(*target, name);
    -
    +      Status error;
    +      
    +      const Symbol *data_symbol =
    +          m_parser_vars->m_sym_ctx.FindBestGlobalDataSymbol(name, error);
    +      
    +      if (!error.Success()) {
    +        const unsigned diag_id =
    +            m_ast_context->getDiagnostics().getCustomDiagID(
    +                clang::DiagnosticsEngine::Level::Error, "%0");
    +        m_ast_context->getDiagnostics().Report(diag_id) << error.AsCString();
    +      }
    +                                          
           if (data_symbol) {
             std::string warning("got name from symbols: ");
             warning.append(name.AsCString());
    
    Modified: vendor/lldb/dist/source/Plugins/ExpressionParser/Clang/ClangExpressionDeclMap.h
    ==============================================================================
    --- vendor/lldb/dist/source/Plugins/ExpressionParser/Clang/ClangExpressionDeclMap.h	Wed May 17 20:23:18 2017	(r318423)
    +++ vendor/lldb/dist/source/Plugins/ExpressionParser/Clang/ClangExpressionDeclMap.h	Wed May 17 20:23:22 2017	(r318424)
    @@ -448,24 +448,6 @@ private:
       uint64_t GetParserID() { return (uint64_t) this; }
     
       //------------------------------------------------------------------
    -  /// Given a target, find a data symbol that has the given name.
    -  ///
    -  /// @param[in] target
    -  ///     The target to use as the basis for the search.
    -  ///
    -  /// @param[in] name
    -  ///     The name as a plain C string.
    -  ///
    -  /// @param[in] module
    -  ///     The module to limit the search to. This can be NULL
    -  ///
    -  /// @return
    -  ///     The LLDB Symbol found, or NULL if none was found.
    -  //------------------------------------------------------------------
    -  const Symbol *FindGlobalDataSymbol(Target &target, const ConstString &name,
    -                                     Module *module = NULL);
    -
    -  //------------------------------------------------------------------
       /// Given a target, find a variable that matches the given name and
       /// type.
       ///
    
    Modified: vendor/lldb/dist/source/Symbol/SymbolContext.cpp
    ==============================================================================
    --- vendor/lldb/dist/source/Symbol/SymbolContext.cpp	Wed May 17 20:23:18 2017	(r318423)
    +++ vendor/lldb/dist/source/Symbol/SymbolContext.cpp	Wed May 17 20:23:22 2017	(r318424)
    @@ -799,6 +799,163 @@ bool SymbolContext::GetAddressRangeFromH
       return true;
     }
     
    +const Symbol *
    +SymbolContext::FindBestGlobalDataSymbol(const ConstString &name, Status &error) {
    +  error.Clear();
    +  
    +  if (!target_sp) {
    +    return nullptr;
    +  }
    +  
    +  Target &target = *target_sp;
    +  Module *module = module_sp.get();
    +  
    +  auto ProcessMatches = [this, &name, &target, module]
    +  (SymbolContextList &sc_list, Status &error) -> const Symbol* {
    +    llvm::SmallVector external_symbols;
    +    llvm::SmallVector internal_symbols;
    +    const uint32_t matches = sc_list.GetSize();
    +    for (uint32_t i = 0; i < matches; ++i) {
    +      SymbolContext sym_ctx;
    +      sc_list.GetContextAtIndex(i, sym_ctx);
    +      if (sym_ctx.symbol) {
    +        const Symbol *symbol = sym_ctx.symbol;
    +        const Address sym_address = symbol->GetAddress();
    +        
    +        if (sym_address.IsValid()) {
    +          switch (symbol->GetType()) {
    +            case eSymbolTypeData:
    +            case eSymbolTypeRuntime:
    +            case eSymbolTypeAbsolute:
    +            case eSymbolTypeObjCClass:
    +            case eSymbolTypeObjCMetaClass:
    +            case eSymbolTypeObjCIVar:
    +              if (symbol->GetDemangledNameIsSynthesized()) {
    +                // If the demangled name was synthesized, then don't use it
    +                // for expressions. Only let the symbol match if the mangled
    +                // named matches for these symbols.
    +                if (symbol->GetMangled().GetMangledName() != name)
    +                  break;
    +              }
    +              if (symbol->IsExternal()) {
    +                external_symbols.push_back(symbol);
    +              } else {
    +                internal_symbols.push_back(symbol);
    +              }
    +              break;
    +            case eSymbolTypeReExported: {
    +              ConstString reexport_name = symbol->GetReExportedSymbolName();
    +              if (reexport_name) {
    +                ModuleSP reexport_module_sp;
    +                ModuleSpec reexport_module_spec;
    +                reexport_module_spec.GetPlatformFileSpec() =
    +                symbol->GetReExportedSymbolSharedLibrary();
    +                if (reexport_module_spec.GetPlatformFileSpec()) {
    +                  reexport_module_sp =
    +                  target.GetImages().FindFirstModule(reexport_module_spec);
    +                  if (!reexport_module_sp) {
    +                    reexport_module_spec.GetPlatformFileSpec()
    +                    .GetDirectory()
    +                    .Clear();
    +                    reexport_module_sp =
    +                    target.GetImages().FindFirstModule(reexport_module_spec);
    +                  }
    +                }
    +                // Don't allow us to try and resolve a re-exported symbol if it is
    +                // the same as the current symbol
    +                if (name == symbol->GetReExportedSymbolName() &&
    +                    module == reexport_module_sp.get())
    +                  return nullptr;
    +                
    +                return FindBestGlobalDataSymbol(
    +                    symbol->GetReExportedSymbolName(), error);
    +              }
    +            } break;
    +              
    +            case eSymbolTypeCode: // We already lookup functions elsewhere
    +            case eSymbolTypeVariable:
    +            case eSymbolTypeLocal:
    +            case eSymbolTypeParam:
    +            case eSymbolTypeTrampoline:
    +            case eSymbolTypeInvalid:
    +            case eSymbolTypeException:
    +            case eSymbolTypeSourceFile:
    +            case eSymbolTypeHeaderFile:
    +            case eSymbolTypeObjectFile:
    +            case eSymbolTypeCommonBlock:
    +            case eSymbolTypeBlock:
    +            case eSymbolTypeVariableType:
    +            case eSymbolTypeLineEntry:
    +            case eSymbolTypeLineHeader:
    +            case eSymbolTypeScopeBegin:
    +            case eSymbolTypeScopeEnd:
    +            case eSymbolTypeAdditional:
    +            case eSymbolTypeCompiler:
    +            case eSymbolTypeInstrumentation:
    +            case eSymbolTypeUndefined:
    +            case eSymbolTypeResolver:
    +              break;
    +          }
    +        }
    +      }
    +    }
    +    
    +    if (external_symbols.size() > 1) {
    +      StreamString ss;
    +      ss.Printf("Multiple external symbols found for '%s'\n", name.AsCString());
    +      for (const Symbol *symbol : external_symbols) {
    +        symbol->GetDescription(&ss, eDescriptionLevelFull, &target);
    +      }
    +      ss.PutChar('\n');
    +      error.SetErrorString(ss.GetData());
    +      return nullptr;
    +    } else if (external_symbols.size()) {
    +      return external_symbols[0];
    +    } else if (internal_symbols.size() > 1) {
    +      StreamString ss;
    +      ss.Printf("Multiple internal symbols found for '%s'\n", name.AsCString());
    +      for (const Symbol *symbol : internal_symbols) {
    +        symbol->GetDescription(&ss, eDescriptionLevelVerbose, &target);
    +        ss.PutChar('\n');
    +      }
    +      error.SetErrorString(ss.GetData());
    +      return nullptr;
    +    } else if (internal_symbols.size()) {
    +      return internal_symbols[0];
    +    } else {
    +      return nullptr;
    +    }
    +  };
    +  
    +  if (module) {
    +    SymbolContextList sc_list;
    +    module->FindSymbolsWithNameAndType(name, eSymbolTypeAny, sc_list);
    +    const Symbol *const module_symbol = ProcessMatches(sc_list, error);
    +    
    +    if (!error.Success()) {
    +      return nullptr;
    +    } else if (module_symbol) {
    +      return module_symbol;
    +    }
    +  }
    +  
    +  {
    +    SymbolContextList sc_list;
    +    target.GetImages().FindSymbolsWithNameAndType(name, eSymbolTypeAny,
    +                                                  sc_list);
    +    const Symbol *const target_symbol = ProcessMatches(sc_list, error);
    +    
    +    if (!error.Success()) {
    +      return nullptr;
    +    } else if (target_symbol) {
    +      return target_symbol;
    +    }
    +  }
    +  
    +  return nullptr; // no error; we just didn't find anything
    +}
    +
    +
     //----------------------------------------------------------------------
     //
     //  SymbolContextSpecifier