Skip to content
  1. Jan 19, 2019
    • Chandler Carruth's avatar
      Update more file headers across all of the LLVM projects in the monorepo · 57b08b09
      Chandler Carruth authored
      to reflect the new license. These used slightly different spellings that
      defeated my regular expressions.
      
      We understand that people may be surprised that we're moving the header
      entirely to discuss the new license. We checked this carefully with the
      Foundation's lawyer and we believe this is the correct approach.
      
      Essentially, all code in the project is now made available by the LLVM
      project under our new license, so you will see that the license headers
      include that license only. Some of our contributors have contributed
      code under our old license, and accordingly, we have retained a copy of
      our old license notice in the top-level files in each project and
      repository.
      
      llvm-svn: 351648
      57b08b09
    • Nikita Popov's avatar
      [InstCombine] Simplify cttz/ctlz + icmp ugt/ult · 6515db20
      Nikita Popov authored
      Followup to D55745, this time handling comparisons with ugt and ult
      predicates (which are the canonical forms for non-equality predicates).
      
      For ctlz we can convert into a simple icmp, for cttz we can convert
      into a mask check.
      
      Differential Revision: https://reviews.llvm.org/D56355
      
      llvm-svn: 351645
      6515db20
    • Johannes Doerfert's avatar
      [NFX] Fix language reference title declaration · 0b02907e
      Johannes Doerfert authored
      llvm-svn: 351644
      0b02907e
    • Johannes Doerfert's avatar
      [NFC] Fix unused variable warnings in Release builds · 043a0873
      Johannes Doerfert authored
      llvm-svn: 351641
      043a0873
    • Kristina Brooks's avatar
      Remove a period from CREDITS.TXT (testing email change). NFC · 8dffa6f0
      Kristina Brooks authored
      llvm-svn: 351639
      8dffa6f0
    • Chandler Carruth's avatar
      Update the file headers across all of the LLVM projects in the monorepo · 2946cd70
      Chandler Carruth authored
      to reflect the new license.
      
      We understand that people may be surprised that we're moving the header
      entirely to discuss the new license. We checked this carefully with the
      Foundation's lawyer and we believe this is the correct approach.
      
      Essentially, all code in the project is now made available by the LLVM
      project under our new license, so you will see that the license headers
      include that license only. Some of our contributors have contributed
      code under our old license, and accordingly, we have retained a copy of
      our old license notice in the top-level files in each project and
      repository.
      
      llvm-svn: 351636
      2946cd70
    • Chandler Carruth's avatar
      Convert two more files that were using Windows line endings and remove · 4a50956c
      Chandler Carruth authored
      a stray single '\r' from one file. These are the last line ending issues
      I can find in the files containing parts of LLVM's file headers.
      
      llvm-svn: 351634
      4a50956c
    • Chandler Carruth's avatar
      Install new LLVM license structure and new developer policy. · 469bdefd
      Chandler Carruth authored
      This installs the new developer policy and moves all of the license
      files across all LLVM projects in the monorepo to the new license
      structure. The remaining projects will be moved independently.
      
      Note that I've left odd formatting and other idiosyncracies of the
      legacy license structure text alone to make the diff easier to read.
      Critically, note that we do not in any case *remove* the old license
      notice or terms, as that remains necessary until we finish the
      relicensing process.
      
      I've updated a few license files that refer to the LLVM license to
      instead simply refer generically to whatever license the LLVM project is
      under, basically trying to minimize confusion.
      
      This is really the culmination of so many people. Chris led the
      community discussions, drafted the policy update and organized the
      multi-year string of meeting between lawyers across the community to
      figure out the strategy. Numerous lawyers at companies in the community
      spent their time figuring out initial answers, and then the Foundation's
      lawyer Heather Meeker has done *so* much to help refine and get us ready
      here. I could keep going on, but I just want to make sure everyone
      realizes what a huge community effort this has been from the begining.
      
      Differential Revision: https://reviews.llvm.org/D56897
      
      llvm-svn: 351631
      469bdefd
    • Chandler Carruth's avatar
      f51a9635
    • Johannes Doerfert's avatar
      Enable IPConstantPropagation to work with abstract call sites · 36872b5d
      Johannes Doerfert authored
      This modification of the currently unused inter-procedural constant
      propagation pass (IPConstantPropagation) shows how abstract call sites
      enable optimization of callback calls alongside direct and indirect
      calls. Through minimal changes, mostly dealing with the partial mapping
      of callbacks, inter-procedural constant propagation was enabled for
      callbacks, e.g., OpenMP runtime calls or pthreads_create.
      
      Differential Revision: https://reviews.llvm.org/D56447
      
      llvm-svn: 351628
      36872b5d
    • Johannes Doerfert's avatar
      AbstractCallSite -- A unified interface for (in)direct and callback calls · 18251842
      Johannes Doerfert authored
        An abstract call site is a wrapper that allows to treat direct,
        indirect, and callback calls the same. If an abstract call site
        represents a direct or indirect call site it behaves like a stripped
        down version of a normal call site object. The abstract call site can
        also represent a callback call, thus the fact that the initially
        called function (=broker) may invoke a third one (=callback callee).
        In this case, the abstract call side hides the middle man, hence the
        broker function. The result is a representation of the callback call,
        inside the broker, but in the context of the original instruction that
        invoked the broker.
      
        Again, there are up to three functions involved when we talk about
        callback call sites. The caller (1), which invokes the broker
        function. The broker function (2), that may or may not invoke the
        callback callee. And finally the callback callee (3), which is the
        target of the callback call.
      
        The abstract call site will handle the mapping from parameters to
        arguments depending on the semantic of the broker function. However,
        it is important to note that the mapping is often partial. Thus, some
        arguments of the call/invoke instruction are mapped to parameters of
        the callee while others are not. At the same time, arguments of the
        callback callee might be unknown, thus "null" if queried.
      
        This patch introduces also !callback metadata which describe how a
        callback broker maps from parameters to arguments. This metadata is
        directly created by clang for known broker functions, provided through
        source code attributes by the user, or later deduced by analyses.
      
      For motivation and additional information please see the corresponding
      talk (slides/video)
        https://llvm.org/devmtg/2018-10/talk-abstracts.html#talk20
      as well as the LCPC paper
        http://compilers.cs.uni-saarland.de/people/doerfert/par_opt_lcpc18.pdf
      
      Differential Revision: https://reviews.llvm.org/D54498
      
      llvm-svn: 351627
      18251842
    • Roman Tereshin's avatar
      Reapply "[CGP] Check for existing inttotpr before creating new one" · a0383d6c
      Roman Tereshin authored
      Original commit: r351582
      
      llvm-svn: 351626
      a0383d6c
    • Vedant Kumar's avatar
      [MergeFunc] Allow merging identical vararg functions using aliases · b537b946
      Vedant Kumar authored
      Thanks to Nikita Popov for pointing out this missed case.
      
      This is a follow-up to r351411, which disabled function merging for
      vararg functions outright due to a miscompile (see llvm.org/PR40345).
      
      Differential Revision: https://reviews.llvm.org/D56865
      
      llvm-svn: 351624
      b537b946
    • Vedant Kumar's avatar
      [HotColdSplit] Mark inherently cold functions as such · b755a2df
      Vedant Kumar authored
      If an inherently cold function is found, mark it as cold. For now this
      means applying the `cold` and `minsize` attributes.
      
      As a drive-by, revisit and clean up the criteria for considering a
      function for splitting. Add tests.
      
      llvm-svn: 351623
      b755a2df
    • Vedant Kumar's avatar
      [HotColdSplit] Remove a set which tracked split functions (NFC) · 4de1962b
      Vedant Kumar authored
      Use the begin/end iterator idiom to avoid visiting split functions,
      instead of doing a set lookup.
      
      llvm-svn: 351622
      4de1962b
    • Vedant Kumar's avatar
      [CodeExtractor] Emit lifetime markers around reloads of outputs · 17d9f14b
      Vedant Kumar authored
      CodeExtractor permits extracting a region of blocks from a function even
      when values defined within the region are used outside of it.
      
      This is typically done by creating an alloca in the original function
      and reloading the alloca after a call to the extracted function.
      
      Wrap the reload in lifetime start/end markers to promote stack coloring.
      
      Suggested by Sergei Kachkov!
      
      Differential Revision: https://reviews.llvm.org/D56045
      
      llvm-svn: 351621
      17d9f14b
    • Roman Tereshin's avatar
      Revert "Reapply "[CGP] Check for existing inttotpr before creating new one"" · 022bf3e8
      Roman Tereshin authored
      This reverts commit r351618.
      
      Compiler RT + ASAN tests are failing for PowerPC. Not sure
      how would I reproduce these on macOS, so reverting (again)
      until I do.
      
      llvm-svn: 351619
      022bf3e8
    • Roman Tereshin's avatar
      Reapply "[CGP] Check for existing inttotpr before creating new one" · dd6f9f68
      Roman Tereshin authored
      Original commit: r351582
      
      llvm-svn: 351618
      dd6f9f68
    • Amara Emerson's avatar
      Revert r351584: "GlobalISel: Verify g_zextload and g_sextload" · d5015edb
      Amara Emerson authored
      This new assertion triggered on the AArch64 GlobalISel bots. Reverting while it's being investigated.
      
      llvm-svn: 351617
      d5015edb
    • Reid Kleckner's avatar
      [X86] Deduplicate static calling convention helpers for code size, NFC · 38f9900a
      Reid Kleckner authored
      Summary:
      Right now we include ${TGT}GenCallingConv.inc once per each instruction
      selection method implemented by ${TGT}:
      - ${TGT}ISelLowering.cpp
      - ${TGT}CallLowering.cpp
      - ${TGT}FastISel.cpp
      
      Instead, add a mechanism to tablegen for marking a particular convention
      as "External", which causes tablegen to emit into the ::llvm namespace,
      instead of as a static helper. This allows us to provide a header to
      forward declare it, so we can simply call the function from all the
      places it is referenced. Typically the calling convention analyzer is
      called indirectly, so it doesn't benefit from inlining.
      
      This saves a bit of final binary size, but mostly just saves object file
      size:
      
      before  after   diff   artifact
      12852K  12492K  -360K  X86ISelLowering.cpp.obj
      4640K   4280K   -360K  X86FastISel.cpp.obj
      1704K   2092K   +388K  X86CallingConv.cpp.obj
      52448K  52336K  -112K  llc.exe
      
      I didn't collect before numbers for X86CallLowering.cpp.obj, which is
      for GlobalISel, but we should save 360K there as well.
      
      This patch applies the strategy to the X86 backend, but there is no
      reason it couldn't be applied to the other backends that implement
      multiple ISel strategies, like AArch64.
      
      Reviewers: craig.topper, hfinkel, efriedma
      
      Subscribers: javed.absar, kristof.beyls, hiraditya, llvm-commits
      
      Differential Revision: https://reviews.llvm.org/D56883
      
      llvm-svn: 351616
      38f9900a
    • Nico Weber's avatar
      Use llvm_canonicalize_cmake_booleans for LLVM_LIBXML2_ENABLED [llvm] · 63fd07ce
      Nico Weber authored
      r291284 added a nice mechanism to consistently pass CMake on/off toggles to
      lit. This change uses it for LLVM_LIBXML2_ENABLED too (which was added around
      the same time and doesn't use the new system yet).
      
      Also alphabetically sort the list passed to llvm_canonicalize_cmake_booleans()
      in llvm/test/CMakeLists.txt.
      
      No intended behavior change.
      
      Differential Revision: https://reviews.llvm.org/D56912
      
      llvm-svn: 351615
      63fd07ce
    • Rui Ueyama's avatar
      Remove F_modify flag from FileOutputBuffer. · 8e7600dc
      Rui Ueyama authored
      This code is dead. There is no use of the feature in the entire LLVM codebase.
      
      Differential Revision: https://reviews.llvm.org/D56939
      
      llvm-svn: 351613
      8e7600dc
  2. Jan 18, 2019
Loading