Skip to content
  1. Mar 02, 2016
    • Chris Bieneman's avatar
      [CMake] Add distribution target that is the "just-build" side of install-distribution · 2b12f676
      Chris Bieneman authored
      This is just a convenience target to allow limiting what you build.
      
      llvm-svn: 262427
      2b12f676
    • Sanjay Patel's avatar
      [InstCombine] convert 'isPositive' and 'isNegative' vector comparisons to shifts (PR26701) · 147e9279
      Sanjay Patel authored
      As noted in the code comment, I don't think we can do the same transform that we do for
      *scalar* integers comparisons to *vector* integers comparisons because it might pessimize
      the general case. 
      
      Exhibit A for an incomplete integer comparison ISA remains x86 SSE/AVX: it only has EQ and GT
      for integer vectors.
      
      But we should now recognize all the variants of this construct and produce the optimal code
      for the cases shown in:
      https://llvm.org/bugs/show_bug.cgi?id=26701
       
      
      llvm-svn: 262424
      147e9279
    • Rui Ueyama's avatar
      Make a few utility functions file-scoped. · 947648f5
      Rui Ueyama authored
      makeErrorFile and parseMemberFiles are now used only in DarwinLdDriver.cpp.
      This patch moves them to that file.
      
      llvm-svn: 262423
      947648f5
    • Rui Ueyama's avatar
      Remove dead code. · 958e44b1
      Rui Ueyama authored
      llvm-svn: 262422
      958e44b1
    • Rui Ueyama's avatar
      Remove CoreDriver. · 1054ae7e
      Rui Ueyama authored
      CoreDriver implements a driver for a hypothetical platform.
      It is intended to be used in unittests. However, it is actually
      redundant because the features are tested using the real driver
      for the real platforms. So we can remove this.
      
      http://reviews.llvm.org/D17698
      
      llvm-svn: 262421
      1054ae7e
    • Nico Weber's avatar
      clang-cl: Implement initial limited support for precompiled headers. · 2ca4be97
      Nico Weber authored
      In the gcc precompiled header model, one explicitly runs clang with `-x
      c++-header` on a .h file to produce a gch file, and then includes the header
      with `-include foo.h` and if a .gch file exists for that header it gets used.
      This is documented at
      http://clang.llvm.org/docs/UsersManual.html#precompiled-headers
      
      cl.exe's model is fairly different, and controlled by the two flags /Yc and
      /Yu. A pch file is generated as a side effect of a regular compilation when
      /Ycheader.h is passed. While the compilation is running, the compiler keeps
      track of #include lines in the main translation unit and writes everything up
      to an `#include "header.h"` line into a pch file. Conversely, /Yuheader.h tells
      the compiler to skip all code in the main TU up to and including `#include
      "header.h"` and instead load header.pch. (It's also possible to use /Yc and /Yu
      without an argument, in that case a `#pragma hrdstop` takes the role of
      controlling the point where pch ends and real code begins.)
      
      This patch implements limited support for this in that it requires the pch
      header to be passed as a /FI force include flag – with this restriction,
      it can be implemented almost completely in the driver with fairly small amounts
      of code. For /Yu, this is trivial, and for /Yc a separate pch action is added
      that runs before the actual compilation. After r261774, the first failing
      command makes a compilation stop – this means if the pch fails to build the
      main compilation won't run, which is what we want. However, in /fallback builds
      we need to run the main compilation even if the pch build fails so that the
      main compilation's fallback can run. To achieve this, add a ForceSuccessCommand
      that pretends that the pch build always succeeded in /fallback builds (the main
      compilation will then fail to open the pch and run the fallback cl.exe
      invocation).
      
      If /Yc /Yu are used in a setup that clang-cl doesn't implement yet, clang-cl
      will now emit a "not implemented yet; flag ignored" warning that can be
      disabled using -Wno-clang-cl-pch.
      
      Since clang-cl doesn't yet serialize some important things (most notably
      `pragma comment(lib, ...)`, this feature is disabled by default and only
      enabled by an internal driver flag. Once it's more stable, this internal flag
      will disappear.
      
      (The default stdafx.h setup passes stdafx.h as explicit argument to /Yc but not
      as /FI – instead every single TU has to `#include <stdafx.h>` as first thing it
      does. Implementing support for this should be possible with the approach in
      this patch with minimal frontend changes by passing a --stop-at / --start-at
      flag from the driver to the frontend. This is left for a follow-up. I don't
      think we ever want to support `#pragma hdrstop`, and supporting it with this
      approach isn't easy: This approach relies on the driver knowing the pch
      filename in advance, and `#pragma hdrstop(out.pch)` can set the output
      filename, so the driver can't know about it in advance.)
      
      clang-cl now also honors /Fp and puts pch files in the same spot that cl.exe
      would put them, but the pch file format is of course incompatible. This has
      ramifications on /fallback, so /Yc /Yu aren't passed through to cl.exe in
      /fallback builds.
      
      http://reviews.llvm.org/D17695
      
      llvm-svn: 262420
      2ca4be97
  2. Mar 01, 2016
Loading