1. May 17, 2023
    • Matt Arsenault's avatar
      InstCombine: Try to turn is.fpclass sign checks to fcmp with 0 · e09115bc
      Matt Arsenault authored
      Try to use gt/lt compares with 0 instead of class.
      e09115bc
    • Katherine Rasmussen's avatar
      [flang] Add check for constraints on event-stmts · e0320016
      Katherine Rasmussen authored
      In the CoarrayChecker, add checks for the constraints C1177 and
      C1178 for event-wait-stmt. Add event-post-stmt to the check
      for the constraints for sync-stat-list. Add a check for the
      constraint C1176 on event-variable.
      
      Reviewed By: PeteSteinfeld
      
      Differential Revision: https://reviews.llvm.org/D137204
      e0320016
    • Piotr Fusik's avatar
      [libc++] Add C++20 stringstream::view() · 49007a02
      Piotr Fusik authored
      Reviewed By: #libc, philnik, Mordante
      
      Spies: Mordante, philnik, libcxx-commits
      
      Differential Revision: https://reviews.llvm.org/D148641
      49007a02
    • LLVM GN Syncbot's avatar
      [gn build] Port dc95245e · 9d202bfe
      LLVM GN Syncbot authored
      9d202bfe
    • Mark de Wever's avatar
      [libc++][format] Removes format sources. · dc95245e
      Mark de Wever authored
      The source file is used to anchor the destructor of format_error. When
      format is moved from experimental to stable this code would move to the
      dylib. One issue with code in the dylib is that it can't be used in
      constexpr context. There is a proposal to make format work during
      constant evaluation
      
        P2758 Emitting messages at compile time
      
      This paper has initially been received favourable by EWG. Therefore move
      the code to the header. This also avoids possible availability issues on
      Mac back deployment targets.
      
      Note it is expected that format will no longer be experimental with the
      next LLVM release.
      
      Reviewed By: ldionne, #libc
      
      Differential Revision: https://reviews.llvm.org/D150073
      dc95245e
    • Martin Storsjö's avatar
      [libcxx] [test] Improve error reporting around invoked commands · 391b51b1
      Martin Storsjö authored
      This was requested in the review of D145807, but I had missed to
      apply it before landing the patch.
      
      Differential Revision: https://reviews.llvm.org/D150444
      391b51b1
    • Martin Storsjö's avatar
      [OpenMP] Compile assembly files as ASM, not C · 4072c8ae
      Martin Storsjö authored
      Since CMake 3.20, CMake explicitly passes "-x c" (or equivalent)
      when compiling a file which has been set as having the language
      C. This behaviour change only takes place if "cmake_minimum_required"
      is set to 3.20 or newer, or if the policy CMP0119 is set to new.
      
      Attempting to compile assembly files with "-x c" fails, however
      this is workarounded in many cases, as OpenMP overrides this with
      "-x assembler-with-cpp", however this is only added for non-Windows
      targets.
      
      Thus, after increasing cmake_minimum_required to 3.20, this breaks
      compiling the GNU assembly for Windows targets; the GNU assembly is
      used for ARM and AArch64 Windows targets when building with Clang.
      This patch unbreaks that.
      
      Differential Revision: https://reviews.llvm.org/D150532
      4072c8ae
    • Daniel Paoliello's avatar
      Add testcase for CodeView "IsNoReturn" flag. · be556c83
      Daniel Paoliello authored
      Reviewed in D148761; missed committing this before.
      be556c83
    • Hans Wennborg's avatar
      [cmake] Set CMP0091 to fix Windows builds after the cmake_minimum_required bump · 7d47dac5
      Hans Wennborg authored
      The build uses other mechanism to select the runtime.
      
      Fixes #62719
      
      Differential revision: https://reviews.llvm.org/D150688
      7d47dac5
    • Joseph Huber's avatar
      [libc][NFC] Simplifly inbox and outbox state handling · 64d169c7
      Joseph Huber authored
      Currently we use a template parameter called `InvertInbox` to invert the
      inbox when we load it. This is more easily understood as a static check
      on whether or not the process running it is the server. Inverting the
      inbox makes the states 1 0 and 0 1 own the buffer, so it's easier to
      simply say that the server own the buffer if in != out. Also clean up some of
      the comments.
      
      Reviewed By: JonChesterfield
      
      Differential Revision: https://reviews.llvm.org/D150365
      64d169c7
    • Daniel Paoliello's avatar
      Emit the correct flags for the PROC CodeView Debug Symbol · f8499d57
      Daniel Paoliello authored
      The S_LPROC32_ID and S_GPROC32_ID CodeView Debug Symbols have a flags
      field which LLVM has had the values for (in the ProcSymFlags enum) but
      has never actually set.
      
      These flags are used by Microsoft-internal tooling that leverages debug
      information to do binary analysis.
      
      Modified LLVM to set the correct flags:
      
      - ProcSymFlags::HasOptimizedDebugInfo - always set, as this indicates that
      debug info is present for optimized builds (if debug info is not emitted
      for optimized builds, then LLVM won't emit a debug symbol at all).
      - ProcSymFlags::IsNoReturn and ProcSymFlags::IsNoInline - set if the
      function has the NoReturn or NoInline attributes respectively.
      - ProcSymFlags::HasFP - set if the function requires a frame pointer (per
      TargetFrameLowering::hasFP).
      
      Per discussion in review, XFAIL'ing lldb test until someone working on
      lldb has a chance to look at it.
      
      Differential Revision: https://reviews.llvm.org/D148761
      f8499d57
    • Aart Bik's avatar
      [mlir][sparse][gpu] set cubin flag when building for cuda · 195621aa
      Aart Bik authored
      Reviewed By: Peiming
      
      Differential Revision: https://reviews.llvm.org/D150692
      195621aa
    • Vitaly Buka's avatar
    • Vitaly Buka's avatar
    • Vitaly Buka's avatar
    • Katherine Rasmussen's avatar
      Revert "[flang] Add check for constraints on event-stmts" · 4d84ed52
      Katherine Rasmussen authored
      This reverts commit 9725c740.
      4d84ed52
    • Jolanta Jensen's avatar
      [SVE ACLE] Change the lowering of SVE integer builtins · 105d63a2
      Jolanta Jensen authored
      Change the lowering of SVE integer mla_x/mls_x and mad_x/msb_x
      builtins to use dedicated undef (_u) intrinsics.
      
      Differential Revision: https://reviews.llvm.org/D150553
      105d63a2
    • Aaron Ballman's avatar
      Correct documentation for -fconstexpr-depth= · 92b8ed6e
      Aaron Ballman authored
      We were documenting that this was about recursive calls when it's
      actually about arbitrary calls.
      
      e.g., https://godbolt.org/z/en8sYd77E
      92b8ed6e
    • Raghu Maddhipatla's avatar
      [Flang][OpenMP][Semantics] Added missing HostAssoc check for use_device_ptr test. · 608fe0b0
      Raghu Maddhipatla authored
      Missed adding this check in previous commit so adding it through separate commit.
      
      Reviewed By: raghavendhra
      
      Differential Revision: https://reviews.llvm.org/D150626
      608fe0b0
    • Guillaume Chatelet's avatar
      [libc] Add optimized memcmp for RISCV · 893f02c2
      Guillaume Chatelet authored
      This patch adds two versions of `bcmp` optimized for architectures where unaligned accesses are either illegal or extremely slow.
      It is currently enabled for RISCV 64 and RISCV 32 but it could be used for ARM 32 architectures as well.
      
      Here is the before / after output of `libc.benchmarks.memory_functions.opt_host --benchmark_filter=BM_memcmp` on a quad core Linux starfive RISCV 64 board running at 1.5GHz.
      
      Before
      ```
      Run on (4 X 1500 MHz CPU s)
      CPU Caches:
        L1 Instruction 32 KiB (x4)
        L1 Data 32 KiB (x4)
        L2 Unified 2048 KiB (x1)
      ----------------------------------------------------------------------
      Benchmark            Time             CPU   Iterations UserCounters...
      ----------------------------------------------------------------------
      BM_Memcmp/0/0        110 ns         66.4 ns     10404864 bytes_per_cycle=0.107646/s bytes_per_second=153.989M/s items_per_second=15.071M/s __llvm_libc::memcmp,memcmp Google A
      BM_Memcmp/1/0        318 ns          211 ns      3026944 bytes_per_cycle=0.131539/s bytes_per_second=188.167M/s items_per_second=4.73691M/s __llvm_libc::memcmp,memcmp Google B
      BM_Memcmp/2/0        204 ns          115 ns      6118400 bytes_per_cycle=0.121675/s bytes_per_second=174.058M/s items_per_second=8.70241M/s __llvm_libc::memcmp,memcmp Google D
      BM_Memcmp/3/0        143 ns         99.6 ns      7013376 bytes_per_cycle=0.117974/s bytes_per_second=168.763M/s items_per_second=10.0437M/s __llvm_libc::memcmp,memcmp Google L
      BM_Memcmp/4/0       81.3 ns         58.2 ns     11426816 bytes_per_cycle=0.101125/s bytes_per_second=144.661M/s items_per_second=17.1805M/s __llvm_libc::memcmp,memcmp Google M
      BM_Memcmp/5/0        177 ns          118 ns      5952512 bytes_per_cycle=0.120612/s bytes_per_second=172.537M/s items_per_second=8.45549M/s __llvm_libc::memcmp,memcmp Google Q
      BM_Memcmp/6/0        342 ns          220 ns      3483648 bytes_per_cycle=0.132004/s bytes_per_second=188.834M/s items_per_second=4.54739M/s __llvm_libc::memcmp,memcmp Google S
      BM_Memcmp/7/0        208 ns          130 ns      5681152 bytes_per_cycle=0.12468/s bytes_per_second=178.356M/s items_per_second=7.6674M/s __llvm_libc::memcmp,memcmp Google U
      BM_Memcmp/8/0        123 ns         79.1 ns      8387584 bytes_per_cycle=0.110593/s bytes_per_second=158.204M/s items_per_second=12.6439M/s __llvm_libc::memcmp,memcmp Google W
      BM_Memcmp/9/0      20707 ns        10643 ns        67584 bytes_per_cycle=0.142401/s bytes_per_second=203.707M/s items_per_second=93.9559k/s __llvm_libc::memcmp,uniform 384 to 4096
      ```
      
      After
      ```
      BM_Memcmp/0/0       80.4 ns         55.8 ns     12648448 bytes_per_cycle=0.132703/s bytes_per_second=189.834M/s items_per_second=17.9256M/s __llvm_libc::memcmp,memcmp Google A
      BM_Memcmp/1/0        140 ns         80.5 ns      8230912 bytes_per_cycle=0.337273/s bytes_per_second=482.474M/s items_per_second=12.4165M/s __llvm_libc::memcmp,memcmp Google B
      BM_Memcmp/2/0        101 ns         66.4 ns     10571776 bytes_per_cycle=0.208539/s bytes_per_second=298.317M/s items_per_second=15.0687M/s __llvm_libc::memcmp,memcmp Google D
      BM_Memcmp/3/0        118 ns         67.6 ns     10533888 bytes_per_cycle=0.176822/s bytes_per_second=252.946M/s items_per_second=14.7946M/s __llvm_libc::memcmp,memcmp Google L
      BM_Memcmp/4/0        106 ns         53.0 ns     12722176 bytes_per_cycle=0.111141/s bytes_per_second=158.988M/s items_per_second=18.8591M/s __llvm_libc::memcmp,memcmp Google M
      BM_Memcmp/5/0        141 ns         70.2 ns     10436608 bytes_per_cycle=0.26032/s bytes_per_second=372.39M/s items_per_second=14.2458M/s __llvm_libc::memcmp,memcmp Google Q
      BM_Memcmp/6/0        144 ns         79.3 ns      8932352 bytes_per_cycle=0.353168/s bytes_per_second=505.211M/s items_per_second=12.612M/s __llvm_libc::memcmp,memcmp Google S
      BM_Memcmp/7/0        123 ns         71.7 ns      9945088 bytes_per_cycle=0.22143/s bytes_per_second=316.758M/s items_per_second=13.9421M/s __llvm_libc::memcmp,memcmp Google U
      BM_Memcmp/8/0       97.0 ns         56.2 ns     12509184 bytes_per_cycle=0.160526/s bytes_per_second=229.635M/s items_per_second=17.7784M/s __llvm_libc::memcmp,memcmp Google W
      BM_Memcmp/9/0       1840 ns          989 ns       676864 bytes_per_cycle=1.4894/s bytes_per_second=2.08067G/s items_per_second=1010.92k/s __llvm_libc::memcmp,uniform 384 to 4096
      ```
      
      glibc
      ```
      BM_Memcmp/0/0       72.6 ns         51.7 ns     12963840 bytes_per_cycle=0.141261/s bytes_per_second=202.075M/s items_per_second=19.3246M/s glibc::memcmp,memcmp Google A
      BM_Memcmp/1/0        118 ns         75.2 ns      9280512 bytes_per_cycle=0.354054/s bytes_per_second=506.478M/s items_per_second=13.3046M/s glibc::memcmp,memcmp Google B
      BM_Memcmp/2/0        114 ns         62.9 ns     11152384 bytes_per_cycle=0.222675/s bytes_per_second=318.539M/s items_per_second=15.8943M/s glibc::memcmp,memcmp Google D
      BM_Memcmp/3/0       84.0 ns         63.5 ns     11030528 bytes_per_cycle=0.186353/s bytes_per_second=266.581M/s items_per_second=15.7378M/s glibc::memcmp,memcmp Google L
      BM_Memcmp/4/0       93.5 ns         51.2 ns     13462528 bytes_per_cycle=0.119215/s bytes_per_second=170.539M/s items_per_second=19.5384M/s glibc::memcmp,memcmp Google M
      BM_Memcmp/5/0        123 ns         61.7 ns     11376640 bytes_per_cycle=0.225262/s bytes_per_second=322.239M/s items_per_second=16.1993M/s glibc::memcmp,memcmp Google Q
      BM_Memcmp/6/0        122 ns         71.6 ns      9967616 bytes_per_cycle=0.380844/s bytes_per_second=544.802M/s items_per_second=13.9579M/s glibc::memcmp,memcmp Google S
      BM_Memcmp/7/0        118 ns         65.6 ns     10555392 bytes_per_cycle=0.238677/s bytes_per_second=341.43M/s items_per_second=15.2334M/s glibc::memcmp,memcmp Google U
      BM_Memcmp/8/0       90.4 ns         54.0 ns     12920832 bytes_per_cycle=0.161987/s bytes_per_second=231.724M/s items_per_second=18.5169M/s glibc::memcmp,memcmp Google W
      BM_Memcmp/9/0       1045 ns          601 ns      1195008 bytes_per_cycle=2.53677/s bytes_per_second=3.54383G/s items_per_second=1.66423M/s glibc::memcmp,uniform 384 to 4096
      ```
      
      Reviewed By: sivachandra
      
      Differential Revision: https://reviews.llvm.org/D150663
      893f02c2
    • Alex Langford's avatar
      [lldb][NFCI] Small adjustment to Breakpoint::AddName · d95aec2d
      Alex Langford authored
      m_name_list is a std::unordered_set<std::string>, we can insert the
      string directly instead of grabbing the c_str and creating yet another
      one.
      d95aec2d
    • David Green's avatar
      [AArch64] Combine add(extract v1i64) into v1i64 add · 198f6a9f
      David Green authored
      This helps fix a regression from D148309 where a shift + add was no longer
      combined into a ssra. It looks for add's with v1i64 extract operands and
      converts them to v1i64 adds. The other operand needs to be something that is
      easily converted to a v1i64, in this case it currently just checks for a load.
      
      Some of the code in performAddSubCombine has been cleaned up whilst I was here.
      
      Differential Revision: https://reviews.llvm.org/D148311
      198f6a9f
    • Peter Klausler's avatar
      [flang] Parenthesize RHS arguments to defined assignments (bug #62599) · 01e22dfb
      Peter Klausler authored
      The right-hand sides of assignment statements are always expressions,
      never variables.  When an assignment statement is converted into a call
      to a defined assignment subroutine, and the actual argument being associated
      with the second dummy argument is a variable, and the dummy argument does
      not have the VALUE attribute, wrap it with parentheses so that lowering
      will pass it by means of a temporary.
      
      Fixes https://github.com/llvm/llvm-project/issues/62599.
      
      Differential Revision: https://reviews.llvm.org/D150331
      01e22dfb
    • Guillaume Chatelet's avatar
      [libc] Add optimized bcmp for RISCV · 7c1f2793
      Guillaume Chatelet authored
      [libc] Add optimized bcmp for RISCV
      
      This patch adds two versions of bcmp optimized for architectures where unaligned accesses are either illegal or extremely slow.
      It is currently enabled for RISCV 64 and RISCV 32 but it could be used for ARM 32 architectures as well.
      
      Here is the before / after output of libc.benchmarks.memory_functions.opt_host --benchmark_filter=BM_Bcmp on a quad core Linux starfive RISCV 64 board running at 1.5GHz.
      
      Before
      ```
      Run on (4 X 1500 MHz CPU s)
      CPU Caches:
        L1 Instruction 32 KiB (x4)
        L1 Data 32 KiB (x4)
        L2 Unified 2048 KiB (x1)
      Load Average: 7.03, 5.98, 3.71
      ----------------------------------------------------------------------
      Benchmark            Time             CPU   Iterations UserCounters...
      ----------------------------------------------------------------------
      BM_Bcmp/0/0        102 ns         60.5 ns     11662336 bytes_per_cycle=0.122696/s bytes_per_second=175.518M/s items_per_second=16.5258M/s __llvm_libc::bcmp,memcmp Google A
      BM_Bcmp/1/0        328 ns          172 ns      3737600 bytes_per_cycle=0.15256/s bytes_per_second=218.238M/s items_per_second=5.80575M/s __llvm_libc::bcmp,memcmp Google B
      BM_Bcmp/2/0        199 ns         99.7 ns      7019520 bytes_per_cycle=0.141897/s bytes_per_second=202.986M/s items_per_second=10.032M/s __llvm_libc::bcmp,memcmp Google D
      BM_Bcmp/3/0        173 ns         86.5 ns      8361984 bytes_per_cycle=0.13863/s bytes_per_second=198.312M/s items_per_second=11.5669M/s __llvm_libc::bcmp,memcmp Google L
      BM_Bcmp/4/0        105 ns         51.8 ns     13213696 bytes_per_cycle=0.116399/s bytes_per_second=166.51M/s items_per_second=19.2931M/s __llvm_libc::bcmp,memcmp Google M
      BM_Bcmp/5/0        167 ns         93.9 ns      7853056 bytes_per_cycle=0.139432/s bytes_per_second=199.459M/s items_per_second=10.6503M/s __llvm_libc::bcmp,memcmp Google Q
      BM_Bcmp/6/0        262 ns          165 ns      3931136 bytes_per_cycle=0.151516/s bytes_per_second=216.745M/s items_per_second=6.07091M/s __llvm_libc::bcmp,memcmp Google S
      BM_Bcmp/7/0        168 ns          105 ns      6665216 bytes_per_cycle=0.143159/s bytes_per_second=204.791M/s items_per_second=9.52163M/s __llvm_libc::bcmp,memcmp Google U
      BM_Bcmp/8/0        108 ns         68.0 ns     10175488 bytes_per_cycle=0.125504/s bytes_per_second=179.535M/s items_per_second=14.701M/s __llvm_libc::bcmp,memcmp Google W
      BM_Bcmp/9/0      15371 ns         9007 ns        78848 bytes_per_cycle=0.166128/s bytes_per_second=237.648M/s items_per_second=111.031k/s __llvm_libc::bcmp,uniform 384 to 4096
      ```
      
      After
      ```
      BM_Bcmp/0/0       74.2 ns         49.7 ns     14306304 bytes_per_cycle=0.148927/s bytes_per_second=213.042M/s items_per_second=20.1101M/s __llvm_libc::bcmp,memcmp Google A
      BM_Bcmp/1/0        108 ns         68.1 ns     10350592 bytes_per_cycle=0.411197/s bytes_per_second=588.222M/s items_per_second=14.6849M/s __llvm_libc::bcmp,memcmp Google B
      BM_Bcmp/2/0       80.2 ns         56.0 ns     12386304 bytes_per_cycle=0.258588/s bytes_per_second=369.912M/s items_per_second=17.8585M/s __llvm_libc::bcmp,memcmp Google D
      BM_Bcmp/3/0       92.4 ns         55.7 ns     12555264 bytes_per_cycle=0.206835/s bytes_per_second=295.88M/s items_per_second=17.943M/s __llvm_libc::bcmp,memcmp Google L
      BM_Bcmp/4/0       79.3 ns         46.8 ns     14288896 bytes_per_cycle=0.125872/s bytes_per_second=180.061M/s items_per_second=21.3611M/s __llvm_libc::bcmp,memcmp Google M
      BM_Bcmp/5/0       98.0 ns         57.9 ns     12232704 bytes_per_cycle=0.268815/s bytes_per_second=384.543M/s items_per_second=17.2711M/s __llvm_libc::bcmp,memcmp Google Q
      BM_Bcmp/6/0        132 ns         65.5 ns     10474496 bytes_per_cycle=0.417246/s bytes_per_second=596.875M/s items_per_second=15.2673M/s __llvm_libc::bcmp,memcmp Google S
      BM_Bcmp/7/0        101 ns         60.9 ns     11505664 bytes_per_cycle=0.253733/s bytes_per_second=362.968M/s items_per_second=16.4202M/s __llvm_libc::bcmp,memcmp Google U
      BM_Bcmp/8/0       72.5 ns         50.2 ns     14082048 bytes_per_cycle=0.183262/s bytes_per_second=262.158M/s items_per_second=19.9271M/s __llvm_libc::bcmp,memcmp Google W
      BM_Bcmp/9/0        852 ns          803 ns       854016 bytes_per_cycle=1.85028/s bytes_per_second=2.58481G/s items_per_second=1.24597M/s __llvm_libc::bcmp,uniform 384 to 4096
      ```
      
      For comparison with glibc
      ```
      BM_Bcmp/0/0        106 ns         52.6 ns     12906496 bytes_per_cycle=0.142072/s bytes_per_second=203.235M/s items_per_second=19.0271M/s glibc::bcmp,memcmp Google A
      BM_Bcmp/1/0        132 ns         77.1 ns      8905728 bytes_per_cycle=0.365072/s bytes_per_second=522.239M/s items_per_second=12.9782M/s glibc::bcmp,memcmp Google B
      BM_Bcmp/2/0        122 ns         62.3 ns     10909696 bytes_per_cycle=0.222667/s bytes_per_second=318.527M/s items_per_second=16.0563M/s glibc::bcmp,memcmp Google D
      BM_Bcmp/3/0       99.5 ns         64.2 ns     11074560 bytes_per_cycle=0.185126/s bytes_per_second=264.825M/s items_per_second=15.5674M/s glibc::bcmp,memcmp Google L
      BM_Bcmp/4/0       86.6 ns         50.2 ns     13488128 bytes_per_cycle=0.117941/s bytes_per_second=168.717M/s items_per_second=19.9053M/s glibc::bcmp,memcmp Google M
      BM_Bcmp/5/0        106 ns         61.4 ns     11344896 bytes_per_cycle=0.248968/s bytes_per_second=356.151M/s items_per_second=16.284M/s glibc::bcmp,memcmp Google Q
      BM_Bcmp/6/0        145 ns         71.9 ns     10046464 bytes_per_cycle=0.389814/s bytes_per_second=557.633M/s items_per_second=13.9019M/s glibc::bcmp,memcmp Google S
      BM_Bcmp/7/0        119 ns         65.6 ns     10718208 bytes_per_cycle=0.243756/s bytes_per_second=348.696M/s items_per_second=15.2329M/s glibc::bcmp,memcmp Google U
      BM_Bcmp/8/0       86.4 ns         54.5 ns     13250560 bytes_per_cycle=0.154831/s bytes_per_second=221.488M/s items_per_second=18.3532M/s glibc::bcmp,memcmp Google W
      BM_Bcmp/9/0       1090 ns          604 ns      1186816 bytes_per_cycle=2.53848/s bytes_per_second=3.54622G/s items_per_second=1.65598M/s glibc::bcmp,uniform 384 to 4096
      ```
      
      Reviewed By: sivachandra
      
      Differential Revision: https://reviews.llvm.org/D150567
      7c1f2793
    • Alexey Lapshin's avatar
      [DWARFLinker][DWARFv5] Add handling of DW_OP_addrx and DW_OP_constx expression operands. · bd0dd27b
      Alexey Lapshin authored
      This patch adds handling of DW_OP_addrx and DW_OP_constx expression operands.
      In --update case these operands are preserved as is. Otherwise they are
      converted into the DW_OP_addr and DW_OP_const[*]u correspondingly.
      
      Differential Revision: https://reviews.llvm.org/D147066
      bd0dd27b
    • Sergei Barannikov's avatar
      [clang] Convert a few OpenMP tests to opaque pointers · d225e6f4
      Sergei Barannikov authored
      Reviewed By: nikic
      
      Differential Revision: https://reviews.llvm.org/D150680
      d225e6f4
    • Sergei Barannikov's avatar
      [clang] Convert a few OpenMP tests to opaque pointers · a51641c0
      Sergei Barannikov authored
      Reviewed By: nikic
      
      Differential Revision: https://reviews.llvm.org/D150682
      a51641c0
    • Peiming Liu's avatar
      ad469385
    • Peter Klausler's avatar
      [flang] Apply default module accessibility rules a second time (bug#62598) · 689de4c6
      Peter Klausler authored
      Apply the default PUBLIC/PRIVATE accessibility of a module to its symbols
      a second time after it is known that all symbols, including implicitly typed
      names from NAMELIST groups and specification expressions in module subprograms,
      have been created in its scope.
      
      Fixes https://github.com/llvm/llvm-project/issues/62598.
      
      Differential Revision: https://reviews.llvm.org/D150307
      689de4c6
    • Kazu Hirata's avatar
      Migrate {starts,ends}with_insensitive to {starts,ends}_with_insensitive (NFC) · ed1539c6
      Kazu Hirata authored
      This patch migrates uses of StringRef::{starts,ends}with_insensitive
      to StringRef::{starts,ends}_with_insensitive so that we can use names
      similar to those used in std::string_view.
      
      Note that the llvm/ directory has migrated in commit
      6c3ea866.
      
      I'll post a separate patch to deprecate
      StringRef::{starts,ends}with_insensitive.
      
      Differential Revision: https://reviews.llvm.org/D150506
      ed1539c6
    • Krzysztof Parzyszek's avatar
      [Hexagon] Fix HVX predicates on some intrinsic selection patterns · 41078988
      Krzysztof Parzyszek authored
      Instead of checking arch version, check HVX version when dealing with
      HVX instructions.
      41078988
    • Kadir Cetinkaya's avatar
      ece76dce
    • Peter Klausler's avatar
      [flang] Don't mistakenly tokenize a Hollerith literal from "DO 100 H=..." (bug #58732) · a6569e57
      Peter Klausler authored
      After tokenizing an identifier, don't allow the next token to be a
      Hollerith literal.
      
      Fixes https://github.com/llvm/llvm-project/issues/58732.
      
      Differential Revision: https://reviews.llvm.org/D150406
      a6569e57
    • Andrew Gozillon's avatar
      [Clang][Flang][OpenMP] Add loadOffloadInfoMetadata and... · 48c3ae5c
      Andrew Gozillon authored
      [Clang][Flang][OpenMP] Add loadOffloadInfoMetadata and createOffloadEntriesAndInfoMetadata into OMPIRBuilder's finalize and initialize
      
      This allows the generation of OpenMP offload metadata for the OpenMP
      dialect when lowering to LLVM-IR and moves some of the shared logic
      between the OpenMP Dialect and Clang into the IRBuilder.
      
      Reviewers: jsjodin, jdoerfert, kiranchandramohan
      
      Differential Revision: https://reviews.llvm.org/D148370
      48c3ae5c
    • Slava Zakharin's avatar
      [flang] Fixed comparison for derived types constants. · e47fbb7c
      Slava Zakharin authored
      The two constants should be equal only if their derived types
      are the same. This fixes regression caused by D150380.
      
      Differential Revision: https://reviews.llvm.org/D150634
      e47fbb7c
    • Viktoriia Bakalova's avatar
      [clangd] Fix test. · 76941b68
      Viktoriia Bakalova authored
      76941b68
    • Craig Topper's avatar
      [RISCV] Rework how implied SP operands work in the disassembler. NFC · 8f43c3f4
      Craig Topper authored
      Previously we added the SP operands when an immediate operand was added
      to certain opcodes.
      
      This patch moves it to a post processing step using the information
      in MCInstrDesc. This avoids an explicit opcode list in RISCVDisassembler.cpp.
      
      In considered using a custom DecoderMethod, but the bit swizzling we
      need to do for the immediates on these instructions made that
      unattractive.
      
      Reviewed By: asb
      
      Differential Revision: https://reviews.llvm.org/D149931
      8f43c3f4
    • Goran Flegar's avatar
      [bazel] Fix build after 0c4d7d14 · 2f4c9609
      Goran Flegar authored
      2f4c9609
    • Jonas Devlieghere's avatar
      [lldb] Define lldbassert based on NDEBUG instead of LLDB_CONFIGURATION_DEBUG · 10a50762
      Jonas Devlieghere authored
      Whether assertions are enabled or not is orthogonal to the build type
      which could lead to surprising behavior for lldbassert. Previously, when
      doing a debug build with assertions disabled, lldbassert would become a
      NOOP, rather than printing an error like it does in a release build. By
      definining lldbassert in terms of NDEBUG, it behaves like a regular
      assert when assertions are enabled, and like a soft assert.
      
      Differential revision: https://reviews.llvm.org/D150639
      10a50762
    • Fangrui Song's avatar
      [llvm-objdump][X86] Add @plt symbols for .plt.got · 9e37a7bd
      Fangrui Song authored
      If a symbol needs both JUMP_SLOT and GLOB_DAT relocations, there is a
      minor linker optimization to keep just GLOB_DAT. This optimization
      is only implemented by GNU ld's x86 port and mold.
      https://maskray.me/blog/2021-08-29-all-about-global-offset-table#combining-.got-and-.got.plt
      
      With the optimizing, the PLT entry is placed in .plt.got and the
      associated GOTPLT entry is placed in .got (ld.bfd -z now) or .got.plt (ld.bfd -z lazy).
      The relocation is in .rel[a].dyn.
      
      This patch synthesizes `symbol@plt` labels for these .plt.got entries.
      
      Example:
      ```
      cat > a.s <<e
      .globl _start; _start:
      mov combined0@gotpcrel(%rip), %rax; mov combined1@gotpcrel(%rip), %rax
      call combined0@plt; call combined1@plt
      call foo0@plt; call foo1@plt
      e
      cat > b.s <<e
      .globl foo0, foo1, combined0, combined1
      foo0: foo1: combined0: combined1:
      e
      gcc -fuse-ld=bfd -shared b.s -o b.so
      gcc -fuse-ld=bfd -pie -nostdlib a.s b.so -o a
      ```
      
      ```
      Disassembly of section .plt:
      
      0000000000001000 <.plt>:
          1000: ff 35 ea 1f 00 00             pushq   0x1fea(%rip)            # 0x2ff0 <_GLOBAL_OFFSET_TABLE_+0x8>
          1006: ff 25 ec 1f 00 00             jmpq    *0x1fec(%rip)           # 0x2ff8 <_GLOBAL_OFFSET_TABLE_+0x10>
          100c: 0f 1f 40 00                   nopl    (%rax)
      
      0000000000001010 <foo1@plt>:
          1010: ff 25 ea 1f 00 00             jmpq    *0x1fea(%rip)           # 0x3000 <_GLOBAL_OFFSET_TABLE_+0x18>
          1016: 68 00 00 00 00                pushq   $0x0
          101b: e9 e0 ff ff ff                jmp     0x1000 <.plt>
      
      0000000000001020 <foo0@plt>:
          1020: ff 25 e2 1f 00 00             jmpq    *0x1fe2(%rip)           # 0x3008 <_GLOBAL_OFFSET_TABLE_+0x20>
          1026: 68 01 00 00 00                pushq   $0x1
          102b: e9 d0 ff ff ff                jmp     0x1000 <.plt>
      
      Disassembly of section .plt.got:
      
      0000000000001030 <combined0@plt>:
          1030: ff 25 a2 1f 00 00             jmpq    *0x1fa2(%rip)           # 0x2fd8 <foo1+0x2fd8>
          1036: 66 90                         nop
      
      0000000000001038 <combined1@plt>:
          1038: ff 25 a2 1f 00 00             jmpq    *0x1fa2(%rip)           # 0x2fe0 <foo1+0x2fe0>
          103e: 66 90                         nop
      ```
      
      For x86-32, with -z now, if we remove `foo0` and `foo1`, the absence of regular
      PLT will cause GNU ld to omit .got.plt, and our code cannot synthesize @plt
      labels. This is an extreme corner case that almost never happens in practice (to
      trigger the case, ensure every PLT symbol has been taken address). To fix it, we
      can get the `_GLOBAL_OFFSET_TABLE_` symbol value, but the complexity is not
      worth it.
      
      Close https://github.com/llvm/llvm-project/issues/62537
      
      Reviewed By: bd1976llvm
      
      Differential Revision: https://reviews.llvm.org/D149817
      9e37a7bd