Skip to content
Snippets Groups Projects
  1. Jun 02, 2017
    • Richard Smith's avatar
      Support lazy stat'ing of files referenced by module maps. · 146ecad7
      Richard Smith authored
      This patch adds support for a `header` declaration in a module map to specify
      certain `stat` information (currently, size and mtime) about that header file.
      This has two purposes:
      
      - It removes the need to eagerly `stat` every file referenced by a module map.
        Instead, we track a list of unresolved header files with each size / mtime
        (actually, for simplicity, we track submodules with such headers), and when
        attempting to look up a header file based on a `FileEntry`, we check if there
        are any unresolved header directives with that `FileEntry`'s size / mtime and
        perform deferred `stat`s if so.
      
      - It permits a preprocessed module to be compiled without the original files
        being present on disk. The only reason we used to need those files was to get
        the `stat` information in order to do header -> module lookups when using the
        module. If we're provided with the `stat` information in the preprocessed
        module, we can avoid requiring the files to exist.
      
      Unlike most `header` directives, if a `header` directive with `stat`
      information has no corresponding on-disk file the enclosing module is *not*
      marked unavailable (so that behavior is consistent regardless of whether we've
      resolved a header directive, and so that preprocessed modules don't get marked
      unavailable). We could actually do this for all `header` directives: the only
      reason we mark the module unavailable if headers are missing is to give a
      diagnostic slightly earlier (rather than waiting until we actually try to build
      the module / load and validate its .pcm file).
      
      Differential Revision: https://reviews.llvm.org/D33703
      
      
      git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@304515 91177308-0d34-0410-b5e6-96231b3b80d8
      146ecad7
  2. Jun 01, 2017
  3. May 31, 2017
  4. May 28, 2017
  5. May 27, 2017
  6. May 09, 2017
  7. May 08, 2017
  8. May 07, 2017
  9. May 06, 2017
  10. May 05, 2017
  11. May 02, 2017
  12. May 01, 2017
  13. Apr 24, 2017
  14. Apr 20, 2017
  15. Apr 19, 2017
  16. Apr 18, 2017
  17. Apr 14, 2017
  18. Apr 13, 2017
  19. Apr 12, 2017
    • Bruno Cardoso Lopes's avatar
      [Driver] Add compiler option to generate a reproducer · f2ee5f1a
      Bruno Cardoso Lopes authored
      One way to currently test the reproducers is to setup
      "FORCE_CLANG_DIAGNOSTICS_CRASH=1" before invoking clang. This simulates
      a crash and produces the same contents needed by the reproducers.  The
      reproducers are specially useful when triaging Modules issues, not only
      on crashes, but also for reproducing misleading warnings, errors, etc.
      
      Add a '-gen-reproducer' driver option to clang (or any similar name) and
      give users a flag option.
      
      Note that clang already has a -fno-crash-diagnostics, which disables the
      crash reproducers. I've decided not to propose "-fcrash-diagnostics"
      since it doesn't convey the ideia of reproduction despite a crash.
      
      rdar://problem/24114619
      
      Differential Revision: https://reviews.llvm.org/D27604
      
      git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@300109 91177308-0d34-0410-b5e6-96231b3b80d8
      f2ee5f1a
  20. Apr 11, 2017
  21. Apr 05, 2017
  22. Apr 04, 2017
    • Adam Nemet's avatar
      Add #pragma clang fp · 6abfe5cf
      Adam Nemet authored
      This adds the new pragma and the first variant, contract(on/off/fast).
      
      The pragma has the same block scope rules as STDC FP_CONTRACT, i.e. it can be
      placed at the beginning of a compound statement or at file scope.
      
      Similarly to STDC FP_CONTRACT there is no need to use attributes.  First an
      annotate token is inserted with the parsed details of the pragma.  Then the
      annotate token is parsed in the proper contexts and the Sema is updated with
      the corresponding FPOptions using the shared ActOn function with STDC
      FP_CONTRACT.
      
      After this the FPOptions from the Sema is propagated into the AST expression
      nodes.  There is no change here.
      
      I was going to add a 'default' option besides 'on/off/fast' similar to STDC
      FP_CONTRACT but then decided against it. I think that we'd have to make option
      uppercase then to avoid using 'default' the keyword.  Also because of the
      scoped activation of pragma I am not sure there is really a need a for this.
      
      Differential Revision: https://reviews.llvm.org/D31276
      
      git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@299470 91177308-0d34-0410-b5e6-96231b3b80d8
      6abfe5cf
  23. Mar 28, 2017
  24. Mar 22, 2017
  25. Mar 21, 2017
  26. Mar 20, 2017
Loading