1. Jun 12, 2021
    • Andrew Litteken's avatar
      Revert "[IRSim] Adding basic implementation of llvm-sim." · 8bc0eb40
      Andrew Litteken authored
      This reverts commit f47d00c5.
      8bc0eb40
    • Philip Reames's avatar
      Allow ptrtoint/inttoptr of non-integral pointer types in IR · ac81cb7e
      Philip Reames authored
      I don't like landing this change, but it's an acknowledgement of a practical reality.  Despite not having well specified semantics for inttoptr and ptrtoint involving non-integral pointer types, they are used in practice.  Here's a quick summary of the current pragmatic reality:
      * I happen to know that the main external user of non-integral pointers has effectively disabled the verifier rules.
      * RS4GC (the lowering pass for abstract GC machine model which is the key motivation for non-integral pointers), even supports them.  We just have all the tests using an integral pointer space to let the verifier run.
      * Certain idioms (such as alignment checks for alignment N, where any relocation is guaranteed to be N byte aligned) are fine in practice.
      * As implemented, inttoptr/ptrtoint are CSEd and are not control dependent.  This means that any code which is intending to check a particular bit pattern at site of use must be wrapped in an intrinsic or external function call.
      
      This change allows them in the Verifier, and updates the LangRef to specific them as implementation dependent.  This allows us to acknowledge current reality while still leaving ourselves room to punt on figuring out "good" semantics until the future.
      ac81cb7e
    • Alex Lorenz's avatar
      [clang][ObjC] allow the use of NSAttributedString * argument type with format attribute · 22dea692
      Alex Lorenz authored
      This is useful for APIs that want to accept an attributed NSString as their format string
      
      rdar://79163229
      22dea692
    • Andrew Litteken's avatar
      [IRSim] Adding basic implementation of llvm-sim. · f47d00c5
      Andrew Litteken authored
      This is a similarity visualization tool that accepts a Module and
      passes it to the IRSimilarityIdentifier.  The resulting SimilarityGroups
      are output in a JSON file.
      
      Tests are found in test/tools/llvm-sim and check for the file not found,
      a bad module, and that the JSON is created correctly.
      
      Reviewers: paquette, jroelofs, MaskRay
      
      Recommit of: 15645d04 to fix linking
      errors.
      
      Differential Revision: https://reviews.llvm.org/D86974
      f47d00c5
    • Arthur Eubanks's avatar
    • Marius Brehler's avatar
      [mlir][docs] Reorder PassWrapper arguments · f60d23c7
      Marius Brehler authored
      Fixes the order of template arguments passed to the `PassWrapper`.
      
      Reviewed By: mehdi_amini
      
      Differential Revision: https://reviews.llvm.org/D104132
      f60d23c7
    • Peter Steinfeld's avatar
      [flang] Handle multiple USE statements for the same module · 1b241b9b
      Peter Steinfeld authored
      It's possible to have several USE statements for the same module that
      have different mixes of rename clauses and ONLY clauses.  The presence
      of a rename cause has the effect of hiding a previously associated name,
      and the presence of an ONLY clause forces the name to be visible even in
      the presence of a rename.
      
      I fixed this by keeping track of the names that appear on rename and ONLY
      clauses.  Then, when processing the USE association of a name, I check to see
      if it previously appeared in a rename clause and not in a USE clause.  If so, I
      remove its USE associated symbol.  Also, when USE associating all of the names
      in a module, I do not USE associate names that have appeared in rename clauses.
      
      I also added a test.
      
      Differential Revision: https://reviews.llvm.org/D104130
      1b241b9b
    • Kevin Athey's avatar
      [clang-cl][sanitizer] Add -fsanitize-address-use-after-return to clang. · e0b469ff
      Kevin Athey authored
      Also:
        - add driver test (fsanitize-use-after-return.c)
        - add basic IR test (asan-use-after-return.cpp)
        - (NFC) cleaned up logic for generating table of __asan_stack_malloc
          depending on flag.
      
      for issue: https://github.com/google/sanitizers/issues/1394
      
      Reviewed By: vitalybuka
      
      Differential Revision: https://reviews.llvm.org/D104076
      e0b469ff
    • Arthur Eubanks's avatar
      [NFC][OpaquePtr] Explicitly pass GEP source type in optimizeGatherScatterInst() · c0c5a98b
      Arthur Eubanks authored
      Reviewed By: craig.topper
      
      Differential Revision: https://reviews.llvm.org/D103480
      c0c5a98b
    • John Paul Adrian Glaubitz's avatar
      [compiler-rt] Add platform detection support for x32 · 27ef43d2
      John Paul Adrian Glaubitz authored
      Currently, the compiler-rt build system checks only whether __X86_64
      is defined to determine whether the default compiler-rt target arch
      is x86_64. Since x32 defines __X86_64 as well, we must also check that
      the default pointer size is eight bytes and not four bytes to properly
      detect a 64-bit x86_64 compiler-rt default target arch.
      
      Reviewed By: hvdijk, vitalybuka
      
      Differential Revision: https://reviews.llvm.org/D99988
      27ef43d2
    • LLVM GN Syncbot's avatar
      [gn build] Port 7eba4856 · a67780f7
      LLVM GN Syncbot authored
      a67780f7
    • zoecarver's avatar
      [libcxx][ranges] Add class ref_view. · 7eba4856
      zoecarver authored
      Differential Revision: https://reviews.llvm.org/D102020
      7eba4856
    • Matt Arsenault's avatar
      AMDGPU/GlobalISel: Remove leftover hack for argument memory sizes · a845dc1e
      Matt Arsenault authored
      Since the call lowering code now tries to respect the tablegen
      reported argument types, this is no longer necessary.
      a845dc1e
    • Matt Arsenault's avatar
      AMDGPU/GlobalISel: Fix indentation · 6dd54dad
      Matt Arsenault authored
      6dd54dad
    • Matt Arsenault's avatar
      9d7299b6
    • Matt Arsenault's avatar
      CodeGen: Fix missing const · 93f3c7cc
      Matt Arsenault authored
      93f3c7cc
    • eahcmrh's avatar
      [Sema] Address-space sensitive check for unbounded arrays (v2) · ce44fe19
      eahcmrh authored
      Check applied to unbounded (incomplete) arrays and pointers to spot
      cases where the computed address is beyond the largest possible
      addressable extent of the array, based on the address space in which the
      array is delcared, or which the pointer refers to.
      
      Check helps to avoid cases of nonsense pointer math and array indexing
      which could lead to linker failures or runtime exceptions.  Of
      particular interest when building for embedded systems with small
      address spaces.
      
      This is version 2 of this patch -- version 1 had some testing issues
      due to a sign error in existing code.  That error is corrected and
      lit test for this chagne is extended to verify the fix.
      
      Originally reviewed/accepted by: aaron.ballman
      Original revision: https://reviews.llvm.org/D86796
      
      Reviewed By: aaron.ballman, ebevhan
      
      Differential Revision: https://reviews.llvm.org/D88174
      ce44fe19
    • Denys Shabalin's avatar
      Introduce alloca_scope op · fdc0d436
      Denys Shabalin authored
      ## Introduction
      
      This proposal describes the new op to be added to the `std` (and later moved `memref`)
      dialect called `alloca_scope`.
      
      ## Motivation
      
      Alloca operations are easy to misuse, especially if one relies on it while doing
      rewriting/conversion passes. For example let's consider a simple example of two
      independent dialects, one defines an op that wants to allocate on-stack and
      another defines a construct that corresponds to some form of looping:
      
      ```
      dialect1.looping_op {
        %x = dialect2.stack_allocating_op
      }
      ```
      
      Since the dialects might not know about each other they are going to define a
      lowering to std/scf/etc independently:
      
      ```
      scf.for … {
         %x_temp = std.alloca …
         … // do some domain-specific work using %x_temp buffer
         … // and store the result into %result
         %x = %result
      }
      ```
      
      Later on the scf and `std.alloca` is going to be lowered to llvm using a
      combination of `llvm.alloca` and unstructured control flow.
      
      At this point the use of `%x_temp` is bound to either be either optimized by
      llvm (for example using mem2reg) or in the worst case: perform an independent
      stack allocation on each iteration of the loop. While the llvm optimizations are
      likely to succeed they are not guaranteed to do so, and they provide
      opportunities for surprising issues with unexpected use of stack size.
      
      ## Proposal
      
      We propose a new operation that defines a finer-grain allocation scope for the
      alloca-allocated memory called `alloca_scope`:
      
      ```
      alloca_scope {
         %x_temp = alloca …
         ...
      }
      ```
      
      Here the lifetime of `%x_temp` is going to be bound to the narrow annotated
      region within `alloca_scope`. Moreover, one can also return values out of the
      alloca_scope with an accompanying `alloca_scope.return` op (that behaves
      similarly to `scf.yield`):
      
      ```
      %result = alloca_scope {
         %x_temp = alloca …
         …
         alloca_scope.return %myvalue
      }
      ```
      
      Under the hood the `alloca_scope` is going to lowered to a combination of
      `llvm.intr.stacksave` and `llvm.intr.strackrestore` that are going to be invoked
      automatically as control-flow enters and leaves the body of the `alloca_scope`.
      
      The key value of the new op is to allow deterministic guaranteed stack use
      through an explicit annotation in the code which is finer-grain than the
      function-level scope of `AutomaticAllocationScope` interface. `alloca_scope`
      can be inserted at arbitrary locations and doesn’t require non-trivial
      transformations such as outlining.
      
      ## Which dialect
      
      Before memref dialect is split, `alloca_scope` can temporarily reside in `std`
      dialect, and later on be moved to `memref` together with the rest of
      memory-related operations.
      
      ## Implementation
      
      An implementation of the op is available [here](https://reviews.llvm.org/D97768).
      
      Original commits:
      
      * Add initial scaffolding for alloca_scope op
      * Add alloca_scope.return op
      * Add no region arguments and variadic results
      * Add op descriptions
      * Add failing test case
      * Add another failing test
      * Initial implementation of lowering for std.alloca_scope
      * Fix backticks
      * Fix getSuccessorRegions implementation
      
      Reviewed By: ftynse
      
      Differential Revision: https://reviews.llvm.org/D97768
      fdc0d436
    • Jonas Devlieghere's avatar
      [lldb] Support new objective-c hash table layout · fc71a5c6
      Jonas Devlieghere authored
      Update LLDB for thew new Objective-C hash table layout in the dyld
      shared cache found in macOS Monterey.
      
      rdar://72863911
      fc71a5c6
    • Jonas Devlieghere's avatar
      c7dee6ae
    • Valery N Dmitriev's avatar
      [SLP][NFC] Fix condition that was supposed to save a bit of compile time. · 94a07c79
      Valery N Dmitriev authored
      It was found by chance revealing discrepancy between comment (few lines above),
      the condition and how re-ordering of instruction is done inside the if statement
      it guards. The condition was always evaluated to true.
      
      Differential Revision: https://reviews.llvm.org/D104064
      94a07c79
    • LLVM GN Syncbot's avatar
      [gn build] Port c54d3050 · ee98f600
      LLVM GN Syncbot authored
      ee98f600
    • Louis Dionne's avatar
      [libc++] NFC: Move indirect_concepts.h to __iterator/concepts.h · c54d3050
      Louis Dionne authored
      There's no fundamental reason to separate those from the other iterator
      concepts.
      
      Differential Revision: https://reviews.llvm.org/D104048
      c54d3050
    • Guozhi Wei's avatar
      [X86FixupLEAs] Sub register usage of LEA dest should block LEA/SUB optimization · f35bcea1
      Guozhi Wei authored
      In function searchALUInst, sub register usage of LEA dest should also block LEA/SUB optimization, otherwise the sub register usage gets an undefined value.
      
      This patch fixes https://bugs.llvm.org/show_bug.cgi?id=50615.
      
      Differential Revision: https://reviews.llvm.org/D103922
      f35bcea1
    • Louis Dionne's avatar
      [libc++] Enable the synchronization library on Apple platforms · f84dbd2f
      Louis Dionne authored
      The synchronization library was marked as disabled on Apple platforms
      up to now because we were not 100% sure that it was going to be ABI
      stable. However, it's been some time since we shipped it in upstream
      libc++ now and there's been no changes so far. This patch enables the
      synchronization library on Apple platforms, and hence commits the ABI
      stability as far as that vendor is concerned.
      
      Differential Revision: https://reviews.llvm.org/D96790
      f84dbd2f
    • LLVM GN Syncbot's avatar
      [gn build] Port 9106047e · 2244a0f5
      LLVM GN Syncbot authored
      2244a0f5
    • zoecarver's avatar
      [libcxx][ranges] Add range.subrange. · 9106047e
      zoecarver authored
      Basically the title.
      
      Differential Revision: https://reviews.llvm.org/D102006
      9106047e
    • Adam Nemet's avatar
      [Matrix] In transpose opts, handle a^t * a^t · e0efebb8
      Adam Nemet authored
      Without the fix the testcase crashes because we remove the same instruction
      twice.
      
      Differential Revision: https://reviews.llvm.org/D104127
      e0efebb8
    • Aaron En Ye Shi's avatar
      [HIP] Fix --hip-version flag with 0 as component · f2cc0427
      Aaron En Ye Shi authored
      Allow the usage of minor version 0, for hip versions
      such as 4.0. Change the default values when performing
      version checks.
      
      Reviewed By: yaxunl
      
      Differential Revision: https://reviews.llvm.org/D104062
      f2cc0427
    • Ayush Sahay's avatar
      [lldb-vscode] Synchronize calls to SendTerminatedEvent · 5ef51771
      Ayush Sahay authored
      If an inferior exits prior to the processing of a disconnect request,
      then the threads executing EventThreadFunction and request_discontinue
      respectively may call SendTerminatedEvent simultaneously, in turn,
      testing and/or setting g_vsc.sent_terminated_event without any
      synchronization. In case the thread executing EventThreadFunction sets
      it before the thread executing request_discontinue has had a chance to
      test it, the latter would move ahead to issue a response to the
      disconnect request. Said response may be dispatched ahead of the
      terminated event compelling the client to terminate the debug session
      without consuming any console output that might've been generated by
      the execution of terminateCommands.
      
      Reviewed By: clayborg, wallace
      
      Differential Revision: https://reviews.llvm.org/D103609
      5ef51771
    • Aaron Ballman's avatar
      Update the C status page somewhat. · 82a3b606
      Aaron Ballman authored
      This adds implementation information for N2607,
      clarifies that C17 only resolved defect reports,
      and adds -std= information for the different versions.
      82a3b606
  2. Jun 11, 2021