Skip to content
Snippets Groups Projects
  1. May 06, 2017
    • Kostya Serebryany's avatar
      [sanitizer-coverage] implement -fsanitize-coverage=no-prune,... instead of a... · 71f86399
      Kostya Serebryany authored
      [sanitizer-coverage] implement -fsanitize-coverage=no-prune,... instead of a hidden -mllvm flag. clang part.
      
      git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@302320 91177308-0d34-0410-b5e6-96231b3b80d8
      71f86399
    • Tim Northover's avatar
      AArch64: fix weird edge case in ABI. · dc4dea9d
      Tim Northover authored
      It turns out there are some sort-of-but-not-quite empty structs that break all
      the rules. For example:
      
      struct SuperEmpty { int arr[0]; };
      struct SortOfEmpty { struct SuperEmpty e; };
      
      Both of these have sizeof == 0, even in C++ mode, for GCC compatibility. The
      first one also doesn't occupy a register when passed by value in GNU C++ mode,
      unlike everything else.
      
      On Darwin, we want to ignore the lot (and especially don't want to try to use
      an i0 as we were).
      
      git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@302313 91177308-0d34-0410-b5e6-96231b3b80d8
      dc4dea9d
    • Richard Smith's avatar
      Permit keywords in module names in #pragma clang module *. · 4d1775b4
      Richard Smith authored
      This is necessary to be able to build a libc++ module from preprocessed source
      (due to the submodule std.new).
      
      
      git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@302312 91177308-0d34-0410-b5e6-96231b3b80d8
      4d1775b4
    • Richard Smith's avatar
      Add support for building modules from preprocessed source. · bc4ab6d6
      Richard Smith authored
      To support this, an optional marker "#pragma clang module contents" is
      recognized in module map files, and the rest of the module map file from that
      point onwards is treated as the source of the module. Preprocessing a module
      map produces the input module followed by the marker and then the preprocessed
      contents of the module.
      
      Ignoring line markers, a preprocessed module might look like this:
      
        module A {
          header "a.h"
        }
        #pragma clang module contents
        #pragma clang module begin A
        // ... a.h ...
        #pragma clang module end
      
      The preprocessed output generates line markers, which are not accepted by the
      module map parser, so -x c++-module-map-cpp-output should be used to compile
      such outputs.
      
      A couple of major parts do not work yet:
      
      1) The files that are listed in the module map must exist on disk, in order to
         build the on-disk header -> module lookup table in the PCM file. To fix
         this, we need the preprocessed output to track the file size and other stat
         information we might use to build the lookup table.
      
      2) Declaration ownership semantics don't work properly yet, since mapping from
         a source location to a module relies on mapping from FileIDs to modules,
         which we can't do if module transitions can occur in the middle of a file.
      
      
      git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@302309 91177308-0d34-0410-b5e6-96231b3b80d8
      bc4ab6d6
  2. May 05, 2017
  3. May 04, 2017
  4. May 03, 2017
Loading