Skip to content
Snippets Groups Projects
  1. Aug 24, 2016
    • Samuel Antao's avatar
      [Driver][OpenMP][CUDA] Add capability to bundle object files in sections of the host binary format. · fcaa0196
      Samuel Antao authored
      Summary:
      This patch adds the capability to bundle object files in sections of the host binary using a designated naming convention for these sections. This patch uses the functionality of the object reader already in the LLVM library to read bundled files, and invokes clang with the incremental linking options to create bundle files. 
      
      Bundling files involves creating an IR file with the contents of the bundle assigned as initializers of globals binded to the designated sections. This way the bundling implementation is agnostic of the host object format.
      
      The features added by this patch were requested in the RFC discussion in  http://lists.llvm.org/pipermail/cfe-dev/2016-February/047547.html.
      
      Reviewers: echristo, tra, jlebar, hfinkel, ABataev, Hahnfeld
      
      Subscribers: mkuron, whchung, cfe-commits, andreybokhanko, Hahnfeld, arpith-jacob, carlo.bertolli, mehdi_amini, caomhin
      
      Differential Revision: https://reviews.llvm.org/D21851
      
      git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@279634 91177308-0d34-0410-b5e6-96231b3b80d8
      fcaa0196
    • Samuel Antao's avatar
      clang-offload-bundler - offload files bundling/unbundling tool · 37d6801b
      Samuel Antao authored
      Summary:
      One of the goals of programming models that support offloading (e.g. OpenMP) is to enable users to offload with little effort, by annotating the code with a few pragmas. I'd also like to save users the trouble of changing their existent applications' build system. So having the compiler always return a single file instead of one for the host and each target even if the user is doing separate compilation is desirable.
      
      This diff proposes a tool named clang-offload-bundler (happy to change the name if required) that is used to bundle files associated with the same user source file but different targets, or to unbundle a file into separate files associated with different targets.
      
      This tool supports the driver support for OpenMP under review in http://reviews.llvm.org/D9888. The tool is used there to enable separate compilation, so that the very first action on input files that are not source files is a "unbundling action" and the very last non-linking action is a "bundling action".
      
      The format of the bundled files is currently very simple: text formats are concatenated with comments that have a magic string and target identifying triple in between, and binary formats have a header that contains the triple and the offset and size of the code for host and each target.
      
      The goal is to improve this tool in the future to deal with archive files so that each individual file in the archive is properly dealt with. We see that archives are very commonly used in current applications to combine separate compilation results. So I'm convinced users would enjoy this feature.
      
      This tool can be used like this:
      
      `clang-offload-bundler -targets=triple1,triple2 -type=ii -inputs=a.triple1.ii,a.triple2.ii -outputs=a.ii`
      
      or 
      
      `clang-offload-bundler -targets=triple1,triple2 -type=ii -outputs=a.triple1.ii,a.triple2.ii -inputs=a.ii -unbundle`
      
      I implemented the tool under clang/tools. Please let me know if something like this should live somewhere else.
      
      This patch is prerequisite for http://reviews.llvm.org/D9888.
      
      Reviewers: hfinkel, rsmith, echristo, chandlerc, tra, jlebar, ABataev, Hahnfeld
      
      Subscribers: whchung, caomhin, andreybokhanko, arpith-jacob, carlo.bertolli, mehdi_amini, guansong, Hahnfeld, cfe-commits
      
      Differential Revision: https://reviews.llvm.org/D13909
      
      git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@279632 91177308-0d34-0410-b5e6-96231b3b80d8
      37d6801b
    • Douglas Yung's avatar
      Adding an additional test to ensure the frame pointer is emitted · 28b38bc1
      Douglas Yung authored
      when compiling with optimization when PS4 is the target.
      
      
      
      git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@279603 91177308-0d34-0410-b5e6-96231b3b80d8
      28b38bc1
  2. Aug 23, 2016
  3. Aug 22, 2016
  4. Aug 18, 2016
  5. Aug 16, 2016
  6. Aug 15, 2016
  7. Aug 12, 2016
  8. Aug 11, 2016
  9. Aug 09, 2016
  10. Aug 08, 2016
    • Oliver Stannard's avatar
      [ARM] Command-line options for embedded position-independent code · 9acb854c
      Oliver Stannard authored
      This patch (with the corresponding ARM backend patch) adds support for
      some new relocation models:
      
      * Read-only position independence (ROPI): Code and read-only data is accessed
        PC-relative. The offsets between all code and RO data sections are known at
        static link time.
      * Read-write position independence (RWPI): Read-write data is accessed relative
        to a static base register. The offsets between all writeable data sections
        are known at static link time.
      
      These two modes are independent (they specify how different objects
      should be addressed), so they can be used individually or together.
      
      These modes are intended for bare-metal systems or systems with small
      real-time operating systems. They are designed to avoid the need for a
      dynamic linker, the only initialisation required is setting the static
      base register to an appropriate value for RWPI code.
      
      There is one C construct not currently supported by these modes: global
      variables initialised to the address of another global variable or
      function, where that address is not known at static-link time. There are
      a few possible ways to solve this:
      
      * Disallow this, and require the user to write their own initialisation
        function if they need variables like this.
      * Emit dynamic initialisers for these variables in the compiler, called from
        the .init_array section (as is currently done for C++ dynamic initialisers).
        We have a patch to do this, described in my original RFC email
        (http://lists.llvm.org/pipermail/llvm-dev/2015-December/093022.html), but the
        feedback from that RFC thread was that this is not something that belongs in
        clang.
      * Use a small dynamic loader to fix up these variables, by adding the
        difference between the load and execution address of the relevant section.
        This would require linker co-operation to generate a table of addresses that
        need fixing up.
      
      Differential Revision: https://reviews.llvm.org/D23196
      
      
      
      git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@278016 91177308-0d34-0410-b5e6-96231b3b80d8
      9acb854c
    • Diana Picus's avatar
      Fix two bugs for musl-libc on ARM · 1812aa02
      Diana Picus authored
      Bug 1: triples like armv7-pc-linux-musl use the wrong linker name
      ld-musl-armv7.so.1; the right name should be ld-musl-arm.so.1, disregarding the
      subarch field.
      
      Bug 2: when compiler option -mhard-float is used, we should use the "hardfloat"
      linker, no matter whether the triple itself mentions "hardfloat".
      
      Patch by Lei Zhang!
      
      Differential Revision: https://reviews.llvm.org/D22904
      
      git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@277985 91177308-0d34-0410-b5e6-96231b3b80d8
      1812aa02
  11. Aug 03, 2016
  12. Aug 02, 2016
  13. Aug 01, 2016
  14. Jul 29, 2016
  15. Jul 28, 2016
  16. Jul 27, 2016
  17. Jul 26, 2016
    • Manman Ren's avatar
      Modules: add command line option fmodules-disable-diagnostic-validation · cefd5475
      Manman Ren authored
      With PCH+Module, sometimes compiler gives a hard error:
      Module file ‘<some-file path>.pcm' is out of date and needs to be rebuilt
      
      This happens when we have a pch importing a module and the module gets
      overwritten by another compiler instance after we build the pch (one example is
      that both compiler instances hash to the same pcm file but use different
      diagnostic options). When we try to load the pch later on, the compiler notices
      that the imported module is out of date (modification date, size do not match)
      but it can't handle this out of date pcm (i.e it does not know how to rebuild
      the pch).
      
      This commit introduces a new command line option so for PCH + module, we can
      turn on this option and if two compiler instances only differ in diagnostic
      options, the latter instance will not invalidate the original pcm.
      
      rdar://26675801
      Differential Revision: http://reviews.llvm.org/D22773
      
      
      git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@276769 91177308-0d34-0410-b5e6-96231b3b80d8
      cefd5475
  18. Jul 23, 2016
  19. Jul 19, 2016
Loading