1. Sep 02, 2020
    • Amara Emerson's avatar
      Revert "Revert "[GlobalISel] Fold xor(cmp(pred, _, _), 1) ->... · 520ab710
      Amara Emerson authored
      Revert "Revert "[GlobalISel] Fold xor(cmp(pred, _, _), 1) -> cmp(inverse(pred), _, _)" (and dependent patch "Optimize away a Not feeding a brcond by using tbz instead of tbnz.")"
      
      This reverts commit 8693ddc7.
      
      Re-committing with the test requiring asserts.
      520ab710
    • Anatoly Trosinenko's avatar
      [builtins] Fix divtf3_test.c · 55383395
      Anatoly Trosinenko authored
      Fixes 93eed63d [builtins] Make __div[sdt]f3 handle denormal results.
      55383395
    • Aaron Puchert's avatar
      Thread safety analysis: More consistent warning message · 8ca00c5c
      Aaron Puchert authored
      Other warning messages for negative capabilities also mention their
      kind, and the double space was ugly.
      
      Reviewed By: aaron.ballman
      
      Differential Revision: https://reviews.llvm.org/D84603
      8ca00c5c
    • River Riddle's avatar
      [mlir][ODS] Use c++ types for integer attributes of fixed width when possible. · 431bb8b3
      River Riddle authored
      Unsigned and Signless attributes use uintN_t and signed attributes use intN_t, where N is the fixed width. The 1-bit variants use bool.
      
      Differential Revision: https://reviews.llvm.org/D86739
      431bb8b3
    • Michael Kruse's avatar
      [LangRef] Fix condition for when a loop is considered parallel. · 137dfd61
      Michael Kruse authored
      The wording before this patch applies to llvm.mem.parallel_loop_access, not access groups.
      
      Reviewed By: mppf, hfinkel
      
      Differential Revision: https://reviews.llvm.org/D83781
      137dfd61
    • Jordan Rupprecht's avatar
      Revert "[GlobalISel] Fold xor(cmp(pred, _, _), 1) -> cmp(inverse(pred), _, _)"... · 8693ddc7
      Jordan Rupprecht authored
      Revert "[GlobalISel] Fold xor(cmp(pred, _, _), 1) -> cmp(inverse(pred), _, _)" (and dependent patch "Optimize away a Not feeding a brcond by using tbz instead of tbnz.")
      
      This reverts commit 8ad8f484. It causes crashes when running `ninja check-llvm-codegen-aarch64-globalisel`, e.g.
      http://lab.llvm.org:8011/builders/clang-with-thin-lto-ubuntu/builds/24132/steps/test-stage1-compiler/logs/stdio.
      Note that the crash does not seem to reproduce in debug builds.
      
      5ded4442 depends on this, so revert that too.
      8693ddc7
    • Michael Liao's avatar
      [amdgpu] Run SROA after loop unrolling. · 1f4e7463
      Michael Liao authored
      Summary: - There are promotable `alloca`s after loop unrolling.
      
      Reviewers: rampitec, arsenm
      
      Subscribers: kzhuravl, jvesely, wdng, nhaehnle, yaxunl, dstuttard, tpr, t-tye, hiraditya, kerbowa, nikic, llvm-commits
      
      Tags: #llvm
      
      Differential Revision: https://reviews.llvm.org/D84252
      1f4e7463
    • Jordan Rupprecht's avatar
      [NFC] Fix unused var in release build · c90f15d2
      Jordan Rupprecht authored
      c90f15d2
    • Florian Hahn's avatar
      [Loads] Add canReplacePointersIfEqual helper. · 0d966ae4
      Florian Hahn authored
      This patch adds an initial, incomeplete and unsound implementation of
      canReplacePointersIfEqual to check if a pointer value A can be replaced
      by another pointer value B, that are deemed to be equivalent through
      some means (e.g. information from conditions).
      
      Note that is in general not sound to blindly replace pointers based on
      equality, for example if they are based on different underlying objects.
      
      LLVM's memory model is not completely settled as of now; see
      https://bugs.llvm.org/show_bug.cgi?id=34548 for a more detailed
      discussion.
      
      The initial version of canReplacePointersIfEqual only rejects a very
      specific case: replacing a pointer with a constant expression that is
      not dereferenceable. Such a replacement is problematic and can be
      restricted relatively easily without impacting most code. Using it to
      limit replacements in GVN/SCCP/CVP only results in small differences in
      7 programs out of MultiSource/SPEC2000/SPEC2006 on X86 with -O3 -flto.
      
      This patch is supposed to be an initial step to improve the current
      situation and the helper should be made stricter in the future. But this
      will require careful analysis of the impact on performance.
      
      Reviewed By: aqjune
      
      Differential Revision: https://reviews.llvm.org/D85524
      0d966ae4
    • Matt Morehouse's avatar
      Revert "[libfuzzer] Reduce default verbosity when printing large mutation sequences" · 71397362
      Matt Morehouse authored
      This reverts commit 26654259 due to
      buildbot failure.
      71397362
    • Aaron Liu's avatar
      [LV] Interleave to expose ILP for small loops with scalar reductions. · d7e16ca2
      Aaron Liu authored
      Interleave for small loops that have reductions inside,
      which breaks dependencies and expose.
      
      This gives very significant performance improvements for some benchmarks.
      Because small loops could be in very hot functions in real applications.
      
      Differential Revision: https://reviews.llvm.org/D81416
      d7e16ca2
    • Craig Topper's avatar
      [MachineCopyPropagation] In isNopCopy, check the destination registers match... · 4783e2c9
      Craig Topper authored
      [MachineCopyPropagation] In isNopCopy, check the destination registers match in addition to the source registers.
      
      Previously if the source match we asserted that the destination
      matched. But GPR <-> mask register copies on X86 can violate this
      since we use the same K-registers for multiple sizes.
      
      Fixes this ISPC issue https://github.com/ispc/ispc/issues/1851
      
      Differential Revision: https://reviews.llvm.org/D86507
      4783e2c9
    • Arthur Eubanks's avatar
      [Bindings] Add LLVMAddInstructionSimplifyPass · 96f0b575
      Arthur Eubanks authored
      Reviewed By: sroland
      
      Differential Revision: https://reviews.llvm.org/D86764
      96f0b575
    • Douglas Yung's avatar
      Do not emit "-tune-cpu generic" for PS4 platform · b1f39486
      Douglas Yung authored
      For the PS4, do not emit "-tune-cpu generic" since the platform only has 1 known CPU and we do not want to prevent optimizations by tuning for a generic rather than the specific processor it contains.
      
      Reviewed By: probinson
      
      Differential Revision: https://reviews.llvm.org/D86965
      b1f39486
    • Lang Hames's avatar
    • Owen Anderson's avatar
      Revert "Revert "Reapply D70800: Fix AArch64 AAPCS frame record chain"" · 5987da87
      Owen Anderson authored
      This reverts commit bc9a29b9.
      
      The reasoning that this patch was wrong was itself incorrect
      (see discussion on llvm-commits). This patch does seem to be exposing
      a latent SVE code generation bug on non-public tests, which should
      not block a correctness fix for public, non-SVE use cases.
      5987da87
    • Joseph Huber's avatar
      [OpenMP] Consolidate error handling and debug messages in Libomptarget · ae95ceeb
      Joseph Huber authored
      Summary:
      
      This patch consolidates the error handling and messaging routines to a single
      file omptargetmessage. The goal is to simplify the error handling interface
      prior to adding more error handling support
      
      Reviewers: jdoerfert grokos ABataev AndreyChurbanov ronlieb JonChesterfield ye-luo tianshilei1992
      
      Subscribers: danielkiss guansong jvesely kerbowa nhaehnle openmp-commits sstefan1 yaxunl
      ae95ceeb
    • Louis Dionne's avatar
      [libc++] Workaround timespec_get not always being available in Apple SDKs · 99f3b231
      Louis Dionne authored
      timespec_get is not available in Apple SDKs when (__DARWIN_C_LEVEL >= __DARWIN_C_FULL)
      isn't true, which leads to libc++ trying to import ::timespec_get into
      namespace std when it's not available. This issue has been reported to
      Apple's libc, but we need a workaround in the meantime.
      
      https://llvm.org/PR47208
      rdar://68157284
      99f3b231
    • Matt Morehouse's avatar
      Revert "[fuzzer] Create user provided fuzzer writeable directories when... · 10670bdf
      Matt Morehouse authored
      Revert "[fuzzer] Create user provided fuzzer writeable directories when requested if they dont exist"
      
      This reverts commit cb891279, since the
      test fails on Windows.
      10670bdf
    • Alina Sbirlea's avatar
      c292fba4
    • Anatoly Trosinenko's avatar
      [builtins] Make __div[sdt]f3 handle denormal results · 93eed63d
      Anatoly Trosinenko authored
      This patch introduces denormal result support to soft-float division
      implementation unified by D85031.
      
      Reviewed By: sepavloff
      
      Differential Revision: https://reviews.llvm.org/D85032
      93eed63d
    • Matt Morehouse's avatar
      [fuzzer] Create user provided fuzzer writeable directories when requested if they dont exist · cb891279
      Matt Morehouse authored
      Currently, libFuzzer will exit with an error message if a non-existent
      directory is provided for any of the appropriate arguments. For cases
      where libFuzzer is used in a specialized embedded environment, it would
      be much easier to have libFuzzer create the directories for the user.
      
      This patch accommodates for this scenario by allowing the user to provide
      the argument `-create_missing_dirs=1` which makes libFuzzer attempt to
      create the `artifact_prefix`, `exact_artifact_path`,
      `features_dir` and/or corpus directory if they don't already exist rather
      than throw an error and exit.
      
      Split off from D84808 as requested [here](https://reviews.llvm.org/D84808#2208546).
      
      Reviewed By: morehouse
      
      Differential Revision: https://reviews.llvm.org/D86733
      cb891279
    • Hans Wennborg's avatar
      First commit on the release/11.x branch. · 40fed004
      Hans Wennborg authored
      40fed004
    • LLVM GN Syncbot's avatar
      [gn build] Port 3e1e5f54 · 293fc6c2
      LLVM GN Syncbot authored
      293fc6c2
    • LLVM GN Syncbot's avatar
      [gn build] Port 3d90a61c · 1914fc9e
      LLVM GN Syncbot authored
      1914fc9e
    • Nico Weber's avatar
      [gn build] port 5ffd940a a bit more · ab919eed
      Nico Weber authored
      ab919eed
    • mhl's avatar
      [libfuzzer] Reduce default verbosity when printing large mutation sequences · 26654259
      mhl authored
      When using a custom mutator (e.g. thrift mutator, similar to LPM)
      that calls back into libfuzzer's mutations via `LLVMFuzzerMutate`, the mutation
      sequences needed to achieve new coverage can get prohibitively large.
      
      Printing these large sequences has two downsides:
      
      1) It makes the logs hard to understand for a human.
      2) The performance cost slows down fuzzing.
      
      In this patch I change the `PrintMutationSequence` function to take a max
      number of entries, to achieve this goal. I also update `PrintStatusForNewUnit`
      to default to printing only 10 entries, in the default verbosity level (1),
      requiring the user to set verbosity to 2 if they want the full mutation
      sequence.
      
      For our use case, turning off verbosity is not an option, as that would also
      disable `PrintStats()` which is very useful for infrastructure that analyzes
      the logs in realtime. I imagine most users of libfuzzer always want those logs
      in the default.
      
      I built a fuzzer locally with this patch applied to libfuzzer.
      
      When running with the default verbosity, I see logs like this:
      
          #65 NEW    cov: 4799 ft: 10443 corp: 41/1447Kb lim: 64000 exec/s: 1 rss: 575Mb L: 28658/62542 MS: 196 Custom-CrossOver-ChangeBit-EraseBytes-ChangeBit-ChangeBit-ChangeBit-CrossOver-ChangeBit-CrossOver- DE: "\xff\xff\xff\x0e"-"\xfe\xff\xff\x7f"-"\xfe\xff\xff\x7f"-"\x17\x00\x00\x00\x00\x00\x00\x00"-"\x00\x00\x00\xf9"-"\xff\xff\xff\xff"-"\xfa\xff\xff\xff"-"\xf7\xff\xff\xff"-"@\xff\xff\xff\xff\xff\xff\xff"-"E\x00"-
          #67 NEW    cov: 4810 ft: 10462 corp: 42/1486Kb lim: 64000 exec/s: 1 rss: 577Mb L: 39823/62542 MS: 135 Custom-CopyPart-ShuffleBytes-ShuffleBytes-ChangeBit-ChangeBinInt-EraseBytes-ChangeBit-ChangeBinInt-ChangeBit- DE: "\x01\x00\x00\x00\x00\x00\x01\xf1"-"\x00\x00\x00\x07"-"\x00\x0d"-"\xfd\xff\xff\xff"-"\xfe\xff\xff\xf4"-"\xe3\xff\xff\xff"-"\xff\xff\xff\xf1"-"\xea\xff\xff\xff"-"\x00\x00\x00\xfd"-"\x01\x00\x00\x05"-
      
      Staring hard at the logs it's clear that the cap of 10 is applied.
      
      When running with verbosity level 2, the logs look like the below:
      
          #66    NEW    cov: 4700 ft: 10188 corp: 37/1186Kb lim: 64000 exec/s: 2 rss: 509Mb L: 47616/61231 MS: 520 Custom-CopyPart-ChangeBinInt-ChangeBit-ChangeByte-EraseBytes-PersAutoDict-CopyPart-ShuffleBytes-ChangeBit-ShuffleBytes-CopyPart-EraseBytes-CopyPart-ChangeBinInt-CopyPart-ChangeByte-ShuffleBytes-ChangeBinInt-ShuffleBytes-ChangeBit-CMP-ShuffleBytes-ChangeBit-CrossOver-ChangeBinInt-ChangeByte-ShuffleBytes-CrossOver-EraseBytes-ChangeBinInt-InsertRepeatedBytes-PersAutoDict-InsertRepeatedBytes-InsertRepeatedBytes-CrossOver-ChangeByte-ShuffleBytes-CopyPart-ShuffleBytes-CopyPart-CrossOver-ChangeBit-ShuffleBytes-CrossOver-PersAutoDict-ChangeByte-ChangeBit-ShuffleBytes-CrossOver-ChangeByte-EraseBytes-CopyPart-ChangeBinInt-PersAutoDict-CrossOver-ShuffleBytes-CrossOver-CrossOver-EraseBytes-CrossOver-EraseBytes-CrossOver-ChangeBit-ChangeBinInt-ChangeByte-EraseBytes-ShuffleBytes-ShuffleBytes-ChangeBit-EraseBytes-ChangeBinInt-ChangeBit-ChangeBinInt-CopyPart-EraseBytes-PersAutoDict-EraseBytes-CopyPart-ChangeBinInt-ChangeByte-CrossOver-ChangeBinInt-ShuffleBytes-PersAutoDict-PersAutoDict-ChangeBinInt-CopyPart-ChangeBinInt-CrossOver-ChangeBit-ChangeBinInt-CopyPart-ChangeByte-ChangeBit-CopyPart-CrossOver-ChangeByte-ChangeBit-ChangeByte-ShuffleBytes-CMP-ChangeBit-CopyPart-ChangeBit-ChangeByte-ChangeBinInt-PersAutoDict-ChangeBinInt-CrossOver-ChangeBinInt-ChangeBit-ChangeBinInt-ChangeBinInt-PersAutoDict-ChangeBinInt-ChangeBinInt-ChangeByte-CopyPart-ShuffleBytes-ChangeByte-ChangeBit-ChangeByte-ChangeByte-EraseBytes-CrossOver-ChangeByte-ChangeByte-EraseBytes-EraseBytes-InsertRepeatedBytes-ShuffleBytes-CopyPart-CopyPart-ChangeBit-ShuffleBytes-PersAutoDict-ShuffleBytes-ChangeBit-ChangeByte-ChangeBit-ShuffleBytes-ChangeByte-ChangeBinInt-CrossOver-ChangeBinInt-ChangeBit-EraseBytes-CopyPart-ChangeByte-CrossOver-EraseBytes-CrossOver-ChangeByte-ShuffleBytes-ChangeByte-ChangeBinInt-CrossOver-ChangeByte-InsertRepeatedBytes-InsertByte-ShuffleBytes-PersAutoDict-ChangeBit-ChangeByte-ChangeBit-ShuffleBytes-ShuffleBytes-CopyPart-ShuffleBytes-EraseBytes-ShuffleBytes-ShuffleBytes-CrossOver-ChangeBinInt-CopyPart-CopyPart-CopyPart-EraseBytes-EraseBytes-ChangeByte-ChangeBinInt-ShuffleBytes-CMP-InsertByte-EraseBytes-ShuffleBytes-CopyPart-ChangeBit-CrossOver-CopyPart-CopyPart-ShuffleBytes-ChangeByte-ChangeByte-ChangeBinInt-EraseBytes-ChangeByte-ChangeBinInt-ChangeBit-ChangeBit-ChangeByte-ShuffleBytes-PersAutoDict-PersAutoDict-CMP-ChangeBit-ShuffleBytes-PersAutoDict-ChangeBinInt-EraseBytes-EraseBytes-ShuffleBytes-ChangeByte-ShuffleBytes-ChangeBit-EraseBytes-CMP-ShuffleBytes-ChangeByte-ChangeBinInt-EraseBytes-ChangeBinInt-ChangeByte-EraseBytes-ChangeByte-CrossOver-ShuffleBytes-EraseBytes-EraseBytes-ShuffleBytes-ChangeBit-EraseBytes-CopyPart-ShuffleBytes-ShuffleBytes-CrossOver-CopyPart-ChangeBinInt-ShuffleBytes-CrossOver-InsertByte-InsertByte-ChangeBinInt-ChangeBinInt-CopyPart-EraseBytes-ShuffleBytes-ChangeBit-ChangeBit-EraseBytes-ChangeByte-ChangeByte-ChangeBinInt-CrossOver-ChangeBinInt-ChangeBinInt-ShuffleBytes-ShuffleBytes-ChangeByte-ChangeByte-ChangeBinInt-ShuffleBytes-CrossOver-EraseBytes-CopyPart-CopyPart-CopyPart-ChangeBit-ShuffleBytes-ChangeByte-EraseBytes-ChangeByte-InsertRepeatedBytes-InsertByte-InsertRepeatedBytes-PersAutoDict-EraseBytes-ShuffleBytes-ChangeByte-ShuffleBytes-ChangeBinInt-ShuffleBytes-ChangeBinInt-ChangeBit-CrossOver-CrossOver-ShuffleBytes-CrossOver-CopyPart-CrossOver-CrossOver-CopyPart-ChangeByte-ChangeByte-CrossOver-ChangeBit-ChangeBinInt-EraseBytes-ShuffleBytes-EraseBytes-CMP-PersAutoDict-PersAutoDict-InsertByte-ChangeBit-ChangeByte-CopyPart-CrossOver-ChangeByte-ChangeBit-ChangeByte-CopyPart-ChangeBinInt-EraseBytes-CrossOver-ChangeBit-CrossOver-PersAutoDict-CrossOver-ChangeByte-CrossOver-ChangeByte-ChangeByte-CrossOver-ShuffleBytes-CopyPart-CopyPart-ShuffleBytes-ChangeByte-ChangeByte-ChangeBinInt-ChangeBinInt-ChangeBinInt-ChangeBinInt-ShuffleBytes-CrossOver-ChangeBinInt-ShuffleBytes-ChangeBit-PersAutoDict-ChangeBinInt-ShuffleBytes-ChangeBinInt-ChangeByte-CrossOver-ChangeBit-CopyPart-ChangeBit-ChangeBit-CopyPart-ChangeByte-PersAutoDict-ChangeBit-ShuffleBytes-ChangeByte-ChangeBit-CrossOver-ChangeByte-CrossOver-ChangeByte-CrossOver-ChangeBit-ChangeByte-ChangeBinInt-PersAutoDict-CopyPart-ChangeBinInt-ChangeBit-CrossOver-ChangeBit-PersAutoDict-ShuffleBytes-EraseBytes-CrossOver-ChangeByte-ChangeBinInt-ShuffleBytes-ChangeBinInt-InsertRepeatedBytes-PersAutoDict-CrossOver-ChangeByte-Custom-PersAutoDict-CopyPart-CopyPart-ChangeBinInt-ShuffleBytes-ChangeBinInt-ChangeBit-ShuffleBytes-CrossOver-CMP-ChangeByte-CopyPart-ShuffleBytes-CopyPart-CopyPart-CrossOver-CrossOver-CrossOver-ShuffleBytes-ChangeByte-ChangeBinInt-ChangeBit-ChangeBit-ChangeBit-ChangeByte-EraseBytes-ChangeByte-ChangeBit-ChangeByte-ChangeByte-CopyPart-PersAutoDict-ChangeBinInt-PersAutoDict-PersAutoDict-PersAutoDict-CopyPart-CopyPart-CrossOver-ChangeByte-ChangeBinInt-ShuffleBytes-ChangeBit-CopyPart-EraseBytes-CopyPart-CopyPart-CrossOver-ChangeByte-EraseBytes-ShuffleBytes-ChangeByte-CopyPart-EraseBytes-CopyPart-CrossOver-ChangeBinInt-ChangeBinInt-InsertByte-ChangeBinInt-ChangeBit-ChangeByte-CopyPart-ChangeByte-EraseBytes-ChangeByte-ChangeBit-ChangeByte-ShuffleBytes-CopyPart-ChangeBinInt-EraseBytes-CrossOver-ChangeBit-ChangeBit-CrossOver-EraseBytes-ChangeBinInt-CopyPart-CopyPart-ChangeBinInt-ChangeBit-EraseBytes-InsertRepeatedBytes-EraseBytes-ChangeBit-CrossOver-CrossOver-EraseBytes-EraseBytes-ChangeByte-CopyPart-CopyPart-ShuffleBytes-ChangeByte-ChangeBit-ChangeByte-EraseBytes-ChangeBit-ChangeByte-ChangeByte-CrossOver-CopyPart-EraseBytes-ChangeByte-EraseBytes-ChangeByte-ShuffleBytes-ShuffleBytes-ChangeByte-CopyPart-ChangeByte-ChangeByte-ChangeBit-CopyPart-ChangeBit-ChangeBinInt-CopyPart-ShuffleBytes-ChangeBit-ChangeBinInt-ChangeBit-EraseBytes-CMP-CrossOver-CopyPart-ChangeBinInt-CrossOver-CrossOver-CopyPart-CrossOver-CrossOver-InsertByte-InsertByte-CopyPart-Custom- DE: "warn"-"\x00\x00\x00\x80"-"\xfe\xff\xff\xfb"-"\xff\xff"-"\x10\x00\x00\x00"-"\xfe\xff\xff\xff"-"\xff\xff\xff\xf6"-"U\x01\x00\x00\x00\x00\x00\x00"-"\xd9\xff\xff\xff"-"\xfe\xff\xff\xea"-"\xf0\xff\xff\xff"-"\xfc\xff\xff\xff"-"warn"-"\xff\xff\xff\xff"-"\xfe\xff\xff\xfb"-"\x00\x00\x00\x80"-"\xfe\xff\xff\xf1"-"\xfe\xff\xff\xea"-"\x00\x00\x00\x00\x00\x00\x012"-"\xe2\x00"-"\xfb\xff\xff\xff"-"\x00\x00\x00\x00"-"\xe9\xff\xff\xff"-"\xff\xff"-"\x00\x00\x00\x80"-"\x01\x00\x04\xc9"-"\xf0\xff\xff\xff"-"\xf9\xff\xff\xff"-"\xff\xff\xff\xff\xff\xff\xff\x12"-"\xe2\x00"-"\xfe\xff\xff\xff"-"\xfe\xff\xff\xea"-"\xff\xff\xff\xff"-"\xf4\xff\xff\xff"-"\xe9\xff\xff\xff"-"\xf1\xff\xff\xff"-
          #48    NEW    cov: 4502 ft: 9151 corp: 27/750Kb lim: 64000 exec/s: 2 rss: 458Mb L: 50772/50772 MS: 259 ChangeByte-ShuffleBytes-ChangeBinInt-ChangeByte-ChangeByte-ChangeByte-ChangeByte-ChangeBit-CopyPart-CrossOver-CopyPart-ChangeByte-CrossOver-CopyPart-ChangeBit-ChangeByte-EraseBytes-ChangeByte-CopyPart-CopyPart-CopyPart-ChangeBit-EraseBytes-ChangeBinInt-CrossOver-CopyPart-CrossOver-CopyPart-ChangeBit-ChangeByte-ChangeBit-InsertByte-CrossOver-InsertRepeatedBytes-InsertRepeatedBytes-InsertRepeatedBytes-ChangeBinInt-EraseBytes-InsertRepeatedBytes-InsertByte-ChangeBit-ShuffleBytes-ChangeBit-ChangeBit-CopyPart-ChangeBit-ChangeByte-CrossOver-ChangeBinInt-ChangeByte-CrossOver-CMP-ChangeByte-CrossOver-ChangeByte-ShuffleBytes-ShuffleBytes-ChangeByte-ChangeBinInt-CopyPart-EraseBytes-CrossOver-ChangeBit-ChangeBinInt-InsertByte-ChangeBit-CopyPart-ChangeBinInt-ChangeByte-CrossOver-ChangeBit-EraseBytes-CopyPart-ChangeBinInt-ChangeBit-ChangeBit-ChangeByte-CopyPart-ChangeBinInt-CrossOver-PersAutoDict-ChangeByte-ChangeBit-ChangeByte-ChangeBinInt-ChangeBinInt-EraseBytes-CopyPart-CopyPart-ChangeByte-ChangeByte-EraseBytes-PersAutoDict-CopyPart-ChangeByte-ChangeByte-EraseBytes-CrossOver-CopyPart-CopyPart-CopyPart-ChangeByte-ChangeBit-CMP-CopyPart-ChangeBinInt-ChangeBinInt-CrossOver-ChangeBit-ChangeBit-EraseBytes-ChangeByte-ShuffleBytes-ChangeBit-ChangeBinInt-CMP-InsertRepeatedBytes-CopyPart-Custom-ChangeByte-CrossOver-EraseBytes-ChangeBit-CopyPart-CrossOver-CMP-ShuffleBytes-EraseBytes-CrossOver-PersAutoDict-ChangeByte-CrossOver-CopyPart-CrossOver-CrossOver-ShuffleBytes-ChangeBinInt-CrossOver-ChangeBinInt-ShuffleBytes-PersAutoDict-ChangeByte-EraseBytes-ChangeBit-CrossOver-EraseBytes-CrossOver-ChangeBit-ChangeBinInt-EraseBytes-InsertByte-InsertRepeatedBytes-InsertByte-InsertByte-ChangeByte-ChangeBinInt-ChangeBit-CrossOver-ChangeByte-CrossOver-EraseBytes-ChangeByte-ShuffleBytes-ChangeBit-ChangeBit-ShuffleBytes-CopyPart-ChangeByte-PersAutoDict-ChangeBit-ChangeByte-InsertRepeatedBytes-CMP-CrossOver-ChangeByte-EraseBytes-ShuffleBytes-CrossOver-ShuffleBytes-ChangeBinInt-ChangeBinInt-CopyPart-PersAutoDict-ShuffleBytes-ChangeBit-CopyPart-ShuffleBytes-CopyPart-EraseBytes-ChangeByte-ChangeBit-ChangeBit-ChangeBinInt-ChangeByte-CopyPart-EraseBytes-ChangeBinInt-EraseBytes-EraseBytes-PersAutoDict-CMP-PersAutoDict-CrossOver-CrossOver-ChangeBit-CrossOver-PersAutoDict-CrossOver-CopyPart-ChangeByte-EraseBytes-ChangeByte-ShuffleBytes-ChangeByte-ChangeByte-CrossOver-ChangeBit-EraseBytes-ChangeByte-EraseBytes-ChangeBinInt-CrossOver-CrossOver-EraseBytes-ChangeBinInt-CrossOver-ChangeBit-ShuffleBytes-ChangeBit-ChangeByte-EraseBytes-ChangeBit-CrossOver-CrossOver-CrossOver-ChangeByte-ChangeBit-ShuffleBytes-ChangeBit-ChangeBit-EraseBytes-CrossOver-CrossOver-CopyPart-ShuffleBytes-ChangeByte-ChangeByte-CopyPart-CrossOver-CopyPart-CrossOver-CrossOver-EraseBytes-EraseBytes-ShuffleBytes-InsertRepeatedBytes-ChangeBit-CopyPart-Custom- DE: "\xfe\xff\xff\xfc"-"\x00\x00\x00\x00"-"F\x00"-"\xf3\xff\xff\xff"-"St9exception"-"_\x00\x00\x00"-"\xf6\xff\xff\xff"-"\xfe\xff\xff\xff"-"\x00\x00\x00\x00"-"p\x02\x00\x00\x00\x00\x00\x00"-"\xfe\xff\xff\xfb"-"\xff\xff"-"\xff\xff\xff\xff"-"\x01\x00\x00\x07"-"\xfe\xff\xff\xfe"-
      
      These are prohibitively large and of limited value in the default case (when
      someone is running the fuzzer, not debugging it), in my opinion.
      
      Reviewed By: morehouse
      
      Differential Revision: https://reviews.llvm.org/D86658
      26654259
    • Sean Fertile's avatar
      [PowerPC][AIX] Update save/restore offset for frame and base pointers. · fecc27db
      Sean Fertile authored
      General purpose registers 30 and 31 are handled differently when they are
      reserved as the base-pointer and frame-pointer respectively. This fixes the
      offset of their fixed-stack objects when there are fpr calle-saved registers.
      
      Differential Revision: https://reviews.llvm.org/D85850
      fecc27db
    • Craig Topper's avatar
      [Bitstream] Use alignTo to make code more readable. NFC · 96ae43ba
      Craig Topper authored
      I was recently debugging a similar issue to https://reviews.llvm.org/D86500 only with a large metadata section. Only after I finished debugging it did I discover it was fixed very recently.
      
      My version of the fix was going to alignTo since that uses uint64_t and improves the readability of the code. So I though I would go ahead and share it.
      
      Differential Revision: https://reviews.llvm.org/D86957
      96ae43ba
    • Amara Emerson's avatar
      [AArch64][GlobalISel] Optimize away a Not feeding a brcond by using tbz instead of tbnz. · 5ded4442
      Amara Emerson authored
      Usually brconds are fed by compares, but not always, in which case we would
      miss this fold.
      
      Differential Revision: https://reviews.llvm.org/D86413
      5ded4442
    • Camille Coti's avatar
      [flang] Version information in flang/f18 · b11c5278
      Camille Coti authored
      Fixed some version information in flang/f18:
      
        - fixed the behavior of the -v switch: this flag enables verbosity with used with arguments, but just displays the version when used alone (related to this bug: https://bugs.llvm.org/show_bug.cgi?id=46017)
       - added __FLANG, __FLANG_MAJOR__, __FLANG_MINOR__ and __FLANG_PATCHLEVEL__ (similar to their __F18* counterparts) for compatibility purpose
      
      Reviewed By: AlexisPerry, richard.barton.arm, tskeith
      
      Differential Revision: https://reviews.llvm.org/D84334
      b11c5278
    • peter klausler's avatar
      [flang] Fix integer CASE constant typing · 11ddb84b
      peter klausler authored
      Don't use just 128-bit integer as the type for integer
      CASE statement constants.  Use the actual type of the
      literal constants that appeared.
      
      Differential Review: https://reviews.llvm.org/D86875
      11ddb84b
    • Amara Emerson's avatar
      [GlobalISel] Fold xor(cmp(pred, _, _), 1) -> cmp(inverse(pred), _, _) · 8ad8f484
      Amara Emerson authored
      This is needed for an upcoming change to how we translate conditional branches
      which might generate these.
      
      Differential Revision: https://reviews.llvm.org/D86383
      8ad8f484
    • Eric Astor's avatar
      x87 FPU state instructions do not use an f32 memory location · a57fdcdd
      Eric Astor authored
      These instructions actually use a 512-byte location, where bytes 464-511 are ignored.
      
      Reviewed By: craig.topper
      
      Differential Revision: https://reviews.llvm.org/D86942
      a57fdcdd
    • Alex Richardson's avatar
      [tsan] Fix "failed to intercept sysctlnametomib" on FreeBSD · 7be86829
      Alex Richardson authored
      The sysctlnametomib function is called from __tsan::Initialize via
      __sanitizer::internal_sysctlbyname (see stack trace below). This results
      in a fatal error since sysctlnametomib has not been intercepted yet.
      This patch allows internal_sysctlbyname to be called before
      __tsan::Initialize() has completed. On FreeBSD >= 1300045 sysctlbyname()
      is a real syscall, but for older versions it calls sysctlnametomib()
      followed by sysctl(). To avoid calling the intercepted version, look up
      the real sysctlnametomib() followed by internal_sysctl() if the
      syscall is not available.
      
      This reduces check-sanitizer failures from 62 to 11 for me.
      
      ==34433==FATAL: ThreadSanitizer: failed to intercept sysctlnametomib
          at /exports/users/alr48/sources/upstream-llvm-project/compiler-rt/lib/sanitizer_common/sanitizer_termination.cpp:51
          name=0x7fffffffce10, namelenp=0x7fffffffce08)
          at /exports/users/alr48/sources/upstream-llvm-project/compiler-rt/lib/tsan/../sanitizer_common/sanitizer_common_interceptors.inc:7908
          oldp=0x7fffffffcf2c, oldlenp=0x7fffffffcf20, newp=0x0, newlen=0)
          at /exports/users/alr48/sources/upstream-llvm-project/compiler-rt/lib/sanitizer_common/sanitizer_linux.cpp:803
          at /exports/users/alr48/sources/upstream-llvm-project/compiler-rt/lib/sanitizer_common/sanitizer_linux.cpp:2152
          at /exports/users/alr48/sources/upstream-llvm-project/compiler-rt/lib/tsan/rtl/tsan_rtl.cpp:367
          fname=0x21c731 "readlink", pc=34366042556)
          at /exports/users/alr48/sources/upstream-llvm-project/compiler-rt/lib/tsan/rtl/tsan_interceptors_posix.cpp:255
          bufsiz=1024)
          at /exports/users/alr48/sources/upstream-llvm-project/compiler-rt/lib/tsan/../sanitizer_common/sanitizer_common_interceptors.inc:7151
      
      Reviewed By: #sanitizers, vitalybuka
      
      Differential Revision: https://reviews.llvm.org/D85292
      7be86829
    • Matt Arsenault's avatar
      32a8a10b
    • Matt Arsenault's avatar
    • Matt Arsenault's avatar
    • Qiu Chaofan's avatar
      [PowerPC] Handle STRICT_FSETCC(S) in more cases · 29ae4485
      Qiu Chaofan authored
      On -O0, i1 strict_fsetcc will be promoted to i32. We don't handle that
      in TD patterns. This patch fills logic in PPCISelDAGToDAG to handle more
      cases.
      
      Reviewed By: uweigand
      
      Differential Revision: https://reviews.llvm.org/D86595
      29ae4485
    • Anatoly Trosinenko's avatar
      [builtins] Unify the softfloat division implementation · 0e90d8d4
      Anatoly Trosinenko authored
      This patch replaces three different pre-existing implementations of
      __div[sdt]f3 LibCalls with a generic one - like it is already done for
      many other LibCalls.
      
      Reviewed By: sepavloff
      
      Differential Revision: https://reviews.llvm.org/D85031
      0e90d8d4