1. Apr 04, 2024
    • Matthias Springer's avatar
      [mlir][SCF] Add `scf.for` bufferization preprocessing pass · 4c819864
      Matthias Springer authored
      Add a bufferization preprocessing pass for `scf.for` loops to support loops where a yielded tensor value does not bufferize to the equivalent corresponding iter_arg buffer. This preprocessing works around a limitation of `scf.for` bufferization by inserting additional buffer copies for yielded tensors.
      
      This preprocessing can be used to support most cases where One-Shot Bufferize fails to bufferize the IR with the following error message:
      ```
      error: Yield operand #0 is not equivalent to the corresponding iter bbArg
      ```
      4c819864
  2. Apr 02, 2024
    • David Blaikie's avatar
      Add uncovered enums in switches caused by 9434c083 · 9df19ce4
      David Blaikie authored
      These are probably actually unreachable - perhaps an lldb developer
      would be interested in rephrasing this change to move the new cases into
      some unreachable/unsupported bucket, rather than my half-hearted guess
      at what the desired behavior would be (completely untested, because
      they're probably untestable/unreachable - maybe debugging from modules?)
      9df19ce4
    • Joseph Huber's avatar
      [OpenMP] Use loaded offloading toolchains to add libraries (#87108) · f2a87b07
      Joseph Huber authored
      Summary:
      We want to pass these GPU libraries by default if a certain offloading
      toolchain is loaded for OpenMP. Previously I parsed this from the
      arguments because it's only available in the compilation. This doesn't
      really work for `native` and it's extra effort, so this patch just
      passes in the `Compilation` as an extr argument and uses that. Tests
      should be unaffected.
      f2a87b07
    • Tom Stellard's avatar
    • Mingming Liu's avatar
      [ThinLTO][TypeProf] Implement vtable def import (#79381) · 1e15371d
      Mingming Liu authored
      Add annotated vtable GUID as referenced variables in per function
      summary, and update bitcode writer to create value-ids for these
      referenced vtables.
      
      - This is the part3 of type profiling work, and described in the "Virtual Table Definition Import" [1] section of the
      RFC.
      
      [1] https://github.com/llvm/llvm-project/pull/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
      1e15371d
    • Michael Maitland's avatar
      [GISEL][NFC] Fix comment for widenScalarToNextPow2 · 1d5e5f4d
      Michael Maitland authored
      The docstring for this function incorrectly specified when a widening is
      not performed. This patch adds the additional specification for what
      happens when the type size is a power of two but it is less than MinSize.
      1d5e5f4d
    • Fangrui Song's avatar
      [Object,ELFTypes] Remove TargetEndianness · 0478adc9
      Fangrui Song authored
      Finish the rename by #86604
      0478adc9
    • Tom Stellard's avatar
      [workflows] issue-write: Exit early if there are no comments (#87114) · 6b136ce7
      Tom Stellard authored
      This will eliminate some unnecessary REST API calls.
      6b136ce7
    • Nick Desaulniers's avatar
      [libc] fixup ftello test (#87282) · 70e189fb
      Nick Desaulniers authored
      Use a seek offset that fits within the file size.
      
      This was missed in presubmit because the FILE based stdio tests aren't
      run in
      overlay mode; fullbuild is not tested in presubmit.
      
      WRITE_SIZE == 11, so using a value of 42 for offseto would cause the
      expression
      `WRITE_SIZE - offseto` to evaluate to -31 as an unsigned 64b integer
      (18446744073709551585ULL).
      
      Fixes #86928
      70e189fb
    • Maksim Panchenko's avatar
      [BOLT][NFC] Fix typo · 03577ced
      Maksim Panchenko authored
      03577ced
    • Jordan Rupprecht's avatar
      [lldb] Don't crash when attempting to parse breakpoint id `N.` as `N.*` (#87263) · a6caceed
      Jordan Rupprecht authored
      We check if the next character after `N.` is `*` before we check its
      length. Using `split` on the string is cleaner and less error prone than
      using indices with `find` and `substr`.
      
      Note: this does not make `N.` mean anything, it just prevents assertion
      failures. `N.` is treated the same as an unrecognized breakpoint name:
      
      ```
      (lldb) breakpoint enable 1
      1 breakpoints enabled.
      (lldb) breakpoint enable 1.*
      1 breakpoints enabled.
      (lldb) breakpoint enable 1.
      0 breakpoints enabled.
      (lldb) breakpoint enable xyz
      0 breakpoints enabled.
      ```
      
      Found via LLDB fuzzers.
      a6caceed
    • Jeff Niu's avatar
      [llvm][Support] Use `thread_local` caching for llvm::get_threadid() query on Apple systems (#87219) · f2f01f6b
      Jeff Niu authored
      
      
      I was profiling our compiler and noticed that `llvm::get_threadid` was
      at the top of the hotlist, taking up a surprising 5% (7 seconds) in the
      profile trace. It seems that computing this on MacOS systems is
      non-trivial, so cache the result in a thread_local.
      
      Co-authored-by: default avatarMehdi Amini <joker.eph@gmail.com>
      f2f01f6b
    • Lei Wang's avatar
      [PseudoProbe] Extend to skip instrumenting probe into the dests of invoke (#79919) · b8cc3ba4
      Lei Wang authored
      As before we only skip instrumenting probe of `unwind`(`KnownColdBlock`)
      block, this PR extends to skip the both EH flow from `invoke`, i.e. also
      skip the `normal` dest. For more contexts: when doing call-to-invoke
      conversion, the block is split by the `invoke` and two extra
      blocks(`normal` and `unwind`) are added. With this PR, the
      instrumentation is the same as the one before the call-to-invoke
      conversion.
      One significant benefit is this can help mitigate the "unstable IR"
      issue(https://discourse.llvm.org/t/ipo-for-linkonce-odr-functions/69404),
      the two versions now are on the same probe instrumentation, expected to
      be the same checksum.
      To achieve the same checksum, some tweaks is needed:
      -  Now it also skips incrementing the probe ID for the skipped probe.
      - The checksum is also computed based on the CFG that skips the EH
      edges.
      
      We observed this fixes ~5% mismatched samples.
      b8cc3ba4
    • Vitaly Buka's avatar
      [ubsan][NFC] Remove recently added `cl::init(false)` · e93b5f5a
      Vitaly Buka authored
      Extracted from #84858
      e93b5f5a
    • Christopher Ferris's avatar
      [scudo] Change isPowerOfTwo macro to return false for zero. (#87120) · ed6edf26
      Christopher Ferris authored
      Clean-up all of the calls and remove the redundant == 0 checks.
      
      There is only one small visible change. For non-Android, the memalign
      function will now fail if alignment is zero. Before this would have
      passed.
      ed6edf26
    • Nathan Sidwell's avatar
      [clang] Fix bitfield access unit for vbase corner case (#87238) · ee994750
      Nathan Sidwell authored
      This fixes #87227, a vbase can be placed below nvsize when empty members and/or bases are in play. We must account for that.
      ee994750
    • Kirill Podoprigora's avatar
      [mlir] Remove ``dataclasses`` package from mlir ``requirements.txt`` (#87223) · 4cd7bb07
      Kirill Podoprigora authored
      The ``dataclasses`` package makes sense for Python 3.6, becauses
      ``dataclasses`` is only included in the standard library with 3.7
      version. Now, 3.6 has reached EOL, so all current supported versions of
      Python (3.8, 3.9, 3.10, 3.11, 3.12) have this feature in their standard
      libraries.
      
      Therefore there's no need to install the ``dataclasses`` package now.
      4cd7bb07
    • Aaron Ballman's avatar
      [C99] Claim conformance to "conversion of array to pointer not limited to lvalues" · cbd48b18
      Aaron Ballman authored
      We don't have a document number for this, but the change was called out
      explicitly in the editor's comments in the C99 foreword.
      cbd48b18
    • Mingming Liu's avatar
      [NFC]Precommit test for vtable import (#79363) · f3ec73fc
      Mingming Liu authored
      A precommit test case to show function summary and global values when a function has instructions annotated with vtable profiles and indirect call profiles.
      - This is a precommit test for https://github.com/llvm/llvm-project/pull/79381
      f3ec73fc
    • Vlad Serebrennikov's avatar
      [clang] Factor out OpenACC part of `Sema` (#84184) · e45f6e56
      Vlad Serebrennikov authored
      This patch moves OpenACC parts of `Sema` into a separate class
      `SemaOpenACC` that is placed in a separate header `Sema/SemaOpenACC.h`.
      This patch is intended to be a model of factoring things out of `Sema`,
      so I picked a small OpenACC part.
      
      Goals are the following:
      1) Split `Sema` into manageable parts.
      2) Make dependencies between parts visible.
      3) Improve Clang development cycle by avoiding recompiling unrelated
      parts of the compiler.
      4) Avoid compile-time regressions.
      5) Avoid notational regressions in the code that uses Sema.
      e45f6e56
    • Gulfem Savrun Yeniceri's avatar
    • Kai Nacke's avatar
      [GOFF] Wrap debug output with LLVM_DEBUG (#87252) · 6634c3e9
      Kai Nacke authored
      The content of a GOFF record is always dumped if NDEBUG is not defined,
      which produces rather confusing output. This changes wrap the dumping
      code in LLVM_DEBUG, so the dump is only done when debug output of this
      module is requested.
      6634c3e9
    • Russell Greene's avatar
      [clang-cl] Allow a colon after /Fo option (#87209) · 5ff2773d
      Russell Greene authored
      Modeled after
      https://github.com/llvm/llvm-project/commit/8513a681f7d8d1188706762e712168aebc3119dd#
      
      According to
      https://learn.microsoft.com/en-us/cpp/build/reference/fo-object-file-name?view=msvc-170,
      `/Fo` accepts a trailing-colon variant. This is also tested in practice.
      This allows clang-cl to parse this.
      
      I just copied one of the existing tests, let me know if this is not the
      best way to do this. I tested that the test does not pass beofre the
      Options.td change, and that it does after.
      
      See also #46065
      5ff2773d
    • Aaron Ballman's avatar
      [C99] Claim conformance to WG14 N570 · 4746877c
      Aaron Ballman authored
      4746877c
    • lntue's avatar
      [libc][math] Implement atan2f correctly rounded to all rounding modes. (#86716) · 2be72258
      lntue authored
      We compute atan2f(y, x) in 2 stages:
      - Fast step: perform computations in double precision , with relative
      errors < 2^-50
      - Accurate step: if the result from the Fast step fails Ziv's rounding
      test, then we perform computations in double-double precision, with
      relative errors < 2^-100.
      
      On Ryzen 5900X, worst-case latency is ~ 200 clocks, compared to average
      latency ~ 60 clocks, and average reciprocal throughput ~ 20 clocks.
      2be72258
    • Peiming Liu's avatar
    • Nick Desaulniers's avatar
      [libc] fixup missing include for fullbuild (#87266) · 2cfd7d43
      Nick Desaulniers authored
      Fixes #86928
      2cfd7d43
    • Eric's avatar
      Update the "Current Status" section of the website to be current. (#84507) · 53d256bb
      Eric authored
      
      
      The section discusses the reasons for the libraries inception more than
      a decade ago. Now it discusses the progess libc++ has made, and the many
      impressive acomplishments our contributors have brought it.
      
      The initial section remains below.
      
      ---------
      
      Co-authored-by: default avatarLouis Dionne <ldionne.2@gmail.com>
      53d256bb
    • Chris B's avatar
      [HLSL] Implement array temporary support (#79382) · 9434c083
      Chris B authored
      HLSL constant sized array function parameters do not decay to pointers.
      Instead constant sized array types are preserved as unique types for
      overload resolution, template instantiation and name mangling.
      
      This implements the change by adding a new `ArrayParameterType` which
      represents a non-decaying `ConstantArrayType`. The new type behaves the
      same as `ConstantArrayType` except that it does not decay to a pointer.
      
      Values of `ConstantArrayType` in HLSL decay during overload resolution
      via a new `HLSLArrayRValue` cast to `ArrayParameterType`.
      
      `ArrayParamterType` values are passed indirectly by-value to functions
      in IR generation resulting in callee generated memcpy instructions.
      
      The behavior of HLSL function calls is documented in the [draft language
      specification](https://microsoft.github.io/hlsl-specs/specs/hlsl.pdf)
      under the Expr.Post.Call heading.
      
      Additionally the design of this implementation approach is documented in
      [Clang's
      documentation](https://clang.llvm.org/docs/HLSL/FunctionCalls.html)
      
      Resolves #70123
      9434c083
    • ChiaHungDuan's avatar
    • Shourya Goel's avatar
      [libc][POSIX] implement fseeko, ftello (#86928) · 55b74030
      Shourya Goel authored
      
      Fixes: #85287
      55b74030
    • Mingming Liu's avatar
      [nfc] Disable the a cpp compiler-rt test on ppc bigendian systems due to build errors (#87262) · 5bbc640f
      Mingming Liu authored
      `Linux/instrprof-vtable-value-prof.cpp` needs to be built for the test
      to run. However, cpp compile & link failed with undefined-ABI error [1].
      See original failure in
      https://lab.llvm.org/buildbot/#/builders/18/builds/16429
      
      [1] 
      ```
      FAIL: Profile-powerpc64 :: Linux/instrprof-vtable-value-prof.cpp (2406 of 2414)
      ******************** TEST 'Profile-powerpc64 :: Linux/instrprof-vtable-value-prof.cpp' FAILED ********************
      Exit Code: 1
      Command Output (stderr):
      --
      RUN: at line 3: /home/buildbots/llvm-external-buildbots/workers/ppc64be-sanitizer/sanitizer-ppc64be/build/build_debug/./bin/clang  --driver-mode=g++  -m64  -ldl  -fprofile-generate -fuse-ld=lld -O2 -g -fprofile-generate=. -mllvm -enable-vtable-value-profiling /home/buildbots/llvm-external-buildbots/workers/ppc64be-sanitizer/sanitizer-ppc64be/build/llvm-project/compiler-rt/test/profile/Linux/instrprof-vtable-value-prof.cpp -o /home/buildbots/llvm-external-buildbots/workers/ppc64be-sanitizer/sanitizer-ppc64be/build/build_debug/runtimes/runtimes-bins/compiler-rt/test/profile/Profile-powerpc64/Linux/Output/instrprof-vtable-value-prof.cpp.tmp-test
      + /home/buildbots/llvm-external-buildbots/workers/ppc64be-sanitizer/sanitizer-ppc64be/build/build_debug/./bin/clang --driver-mode=g++ -m64 -ldl -fprofile-generate -fuse-ld=lld -O2 -g -fprofile-generate=. -mllvm -enable-vtable-value-profiling /home/buildbots/llvm-external-buildbots/workers/ppc64be-sanitizer/sanitizer-ppc64be/build/llvm-project/compiler-rt/test/profile/Linux/instrprof-vtable-value-prof.cpp -o /home/buildbots/llvm-external-buildbots/workers/ppc64be-sanitizer/sanitizer-ppc64be/build/build_debug/runtimes/runtimes-bins/compiler-rt/test/profile/Profile-powerpc64/Linux/Output/instrprof-vtable-value-prof.cpp.tmp-test
      ld.lld: error: /lib/../lib64/Scrt1.o: ABI version 1 is not supported
      clang: error: linker command failed with exit code 1 (use -v to see invocation)
      
      ```
      5bbc640f
    • Caslyn Tonelli's avatar
      [libc] Include algorithm.h to parser.h (#87125) · d83271b0
      Caslyn Tonelli authored
      This includes algorithm.h directly to provide the definition for
      `cpp:max` in parser.h. This will define `max(...)` in the libc namespace
      for build systems that pull in parser.h explicitly.
      d83271b0
    • Jakub Kuderski's avatar
      [mlir][TD] Allow op printing flags as `transform.print` attrs (#86846) · a8cfa7cb
      Jakub Kuderski authored
      Introduce 3 new optional attributes to the `transform.print` ops:
      * `assume_verified`
      * `use_local_scope`
      * `skip_regions`
      
      The primary motivation is to allow printing on large inputs that
      otherwise take forever to print and verify. For the full context, see
      this IREE issue: https://github.com/openxla/iree/issues/16901.
      
      Also add some tests and fix the op description.
      a8cfa7cb
    • Nikolas Klauser's avatar
      [libc++] Optimize the two range overload of mismatch (#86853) · 985c1a44
      Nikolas Klauser authored
      ```
      -----------------------------------------------------------------------------
      Benchmark                                                 old             new
      -----------------------------------------------------------------------------
      bm_mismatch_two_range_overload<char>/1               0.941 ns         1.88 ns
      bm_mismatch_two_range_overload<char>/2                1.43 ns         2.15 ns
      bm_mismatch_two_range_overload<char>/3                1.95 ns         2.55 ns
      bm_mismatch_two_range_overload<char>/4                2.58 ns         2.90 ns
      bm_mismatch_two_range_overload<char>/5                3.75 ns         3.31 ns
      bm_mismatch_two_range_overload<char>/6                5.00 ns         3.83 ns
      bm_mismatch_two_range_overload<char>/7                5.59 ns         4.35 ns
      bm_mismatch_two_range_overload<char>/8                6.37 ns         4.84 ns
      bm_mismatch_two_range_overload<char>/16               11.8 ns         6.72 ns
      bm_mismatch_two_range_overload<char>/64               45.5 ns         2.59 ns
      bm_mismatch_two_range_overload<char>/512               366 ns         12.6 ns
      bm_mismatch_two_range_overload<char>/4096             2890 ns         91.6 ns
      bm_mismatch_two_range_overload<char>/32768           23038 ns          758 ns
      bm_mismatch_two_range_overload<char>/262144         142813 ns         6573 ns
      bm_mismatch_two_range_overload<char>/1048576        366679 ns        26710 ns
      bm_mismatch_two_range_overload<short>/1              0.934 ns         1.88 ns
      bm_mismatch_two_range_overload<short>/2               1.30 ns         2.58 ns
      bm_mismatch_two_range_overload<short>/3               1.76 ns         3.28 ns
      bm_mismatch_two_range_overload<short>/4               2.24 ns         3.98 ns
      bm_mismatch_two_range_overload<short>/5               2.80 ns         4.92 ns
      bm_mismatch_two_range_overload<short>/6               3.58 ns         6.01 ns
      bm_mismatch_two_range_overload<short>/7               4.29 ns         7.03 ns
      bm_mismatch_two_range_overload<short>/8               4.67 ns         7.39 ns
      bm_mismatch_two_range_overload<short>/16              9.86 ns         13.1 ns
      bm_mismatch_two_range_overload<short>/64              38.9 ns         4.55 ns
      bm_mismatch_two_range_overload<short>/512              348 ns         27.7 ns
      bm_mismatch_two_range_overload<short>/4096            2881 ns          225 ns
      bm_mismatch_two_range_overload<short>/32768          23111 ns         1715 ns
      bm_mismatch_two_range_overload<short>/262144        184846 ns        14416 ns
      bm_mismatch_two_range_overload<short>/1048576       742885 ns        57264 ns
      bm_mismatch_two_range_overload<int>/1                0.838 ns         1.19 ns
      bm_mismatch_two_range_overload<int>/2                 1.19 ns         1.65 ns
      bm_mismatch_two_range_overload<int>/3                 1.83 ns         2.06 ns
      bm_mismatch_two_range_overload<int>/4                 2.38 ns         2.42 ns
      bm_mismatch_two_range_overload<int>/5                 3.60 ns         2.47 ns
      bm_mismatch_two_range_overload<int>/6                 3.68 ns         3.05 ns
      bm_mismatch_two_range_overload<int>/7                 4.32 ns         3.36 ns
      bm_mismatch_two_range_overload<int>/8                 5.18 ns         3.58 ns
      bm_mismatch_two_range_overload<int>/16                10.6 ns         2.84 ns
      bm_mismatch_two_range_overload<int>/64                39.0 ns         7.78 ns
      bm_mismatch_two_range_overload<int>/512                247 ns         53.9 ns
      bm_mismatch_two_range_overload<int>/4096              1927 ns          429 ns
      bm_mismatch_two_range_overload<int>/32768            15569 ns         3393 ns
      bm_mismatch_two_range_overload<int>/262144          125413 ns        28504 ns
      bm_mismatch_two_range_overload<int>/1048576         504549 ns       112729 ns
      ```
      985c1a44
  3. Apr 01, 2024