Skip to content

[clang][analyzer] fix false positive of BlockInCriticalSectionChecker #126752

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 263 commits into from

Conversation

flovent
Copy link
Contributor

@flovent flovent commented Feb 11, 2025

this PR close #124474
when calling read function for a non-block file descriptor(first argument), it will not cause block inside a critical section.
this commit checks for non-block file descriptor assigned by open function with O_NONBLOCK flag(second argument).

@llvmbot llvmbot added clang Clang issues not falling into any other category clang:static analyzer labels Feb 11, 2025
@llvmbot
Copy link
Member

llvmbot commented Feb 11, 2025

@llvm/pr-subscribers-clang-static-analyzer-1

@llvm/pr-subscribers-clang

Author: None (flovent)

Changes

this PR close #124474


Full diff: https://github.com/llvm/llvm-project/pull/126752.diff

2 Files Affected:

  • (modified) clang/lib/StaticAnalyzer/Checkers/BlockInCriticalSectionChecker.cpp (+116)
  • (added) clang/test/Analysis/issue-124474.cpp (+49)
diff --git a/clang/lib/StaticAnalyzer/Checkers/BlockInCriticalSectionChecker.cpp b/clang/lib/StaticAnalyzer/Checkers/BlockInCriticalSectionChecker.cpp
index 7460781799d08a..cfff5a25e7a50f 100644
--- a/clang/lib/StaticAnalyzer/Checkers/BlockInCriticalSectionChecker.cpp
+++ b/clang/lib/StaticAnalyzer/Checkers/BlockInCriticalSectionChecker.cpp
@@ -145,6 +145,92 @@ using MutexDescriptor =
     std::variant<FirstArgMutexDescriptor, MemberMutexDescriptor,
                  RAIIMutexDescriptor>;
 
+class NonBlockOpenVisitor : public BugReporterVisitor {
+private:
+  const VarRegion *VR;
+  const CallExpr *OpenCallExpr;
+  int O_NONBLOCKV;
+  bool Satisfied;
+  CallDescription OpenFunction{CDM::CLibrary, {"open"}, 2};
+
+public:
+  NonBlockOpenVisitor(const VarRegion *VR, int O_NONBLOCKV)
+      : VR(VR), OpenCallExpr(nullptr), O_NONBLOCKV(O_NONBLOCKV),
+        Satisfied(false) {}
+
+  static void *getTag() {
+    static int Tag = 0;
+    return static_cast<void *>(&Tag);
+  }
+
+  void Profile(llvm::FoldingSetNodeID &ID) const override {
+    ID.AddPointer(getTag());
+    ID.AddPointer(VR);
+  }
+
+  PathDiagnosticPieceRef VisitNode(const ExplodedNode *N,
+                                   BugReporterContext &BRC,
+                                   PathSensitiveBugReport &BR) override {
+    if (Satisfied)
+      return nullptr;
+
+    // check for open call's 2th argument
+    if (std::optional<StmtPoint> P = N->getLocationAs<StmtPoint>()) {
+      if (OpenCallExpr && OpenCallExpr == P->getStmtAs<CallExpr>()) {
+        Satisfied = true;
+        const auto *openFlagExpr = OpenCallExpr->getArg(1);
+        SVal flagSV = N->getSVal(openFlagExpr);
+        const llvm::APSInt *flagV = flagSV.getAsInteger();
+        if (!flagV)
+          return nullptr;
+
+        if ((*flagV & O_NONBLOCKV) != 0)
+          BR.markInvalid(getTag(), nullptr);
+
+        return nullptr;
+      }
+    }
+
+    const ExplodedNode *Pred = N->getFirstPred();
+    SVal presv = Pred->getState()->getSVal(VR);
+    SVal sv = N->getState()->getSVal(VR);
+
+    // check if file descirptor's SVal changed between nodes
+    if (sv == presv)
+      return nullptr;
+
+    std::optional<PostStore> P = N->getLocationAs<PostStore>();
+    if (!P)
+      return nullptr;
+
+    if (const auto *DS = P->getStmtAs<DeclStmt>()) {
+      // variable initialization
+      // int fd = open(...)
+      const VarDecl *VD = VR->getDecl();
+      if (DS->getSingleDecl() == VR->getDecl()) {
+        const auto *InitCall = dyn_cast_if_present<CallExpr>(VD->getInit());
+        if (!InitCall || !OpenFunction.matchesAsWritten(*InitCall))
+          return nullptr;
+
+        OpenCallExpr = InitCall;
+      }
+    } else if (const auto *BO = P->getStmtAs<BinaryOperator>()) {
+      // assignment
+      // fd = open(...)
+      const auto *DRE = dyn_cast<DeclRefExpr>(BO->getLHS());
+      if (DRE && DRE->getDecl() == VR->getDecl()) {
+        const auto *InitCall = dyn_cast<CallExpr>(BO->getRHS());
+        if (!InitCall || !OpenFunction.matchesAsWritten(*InitCall))
+          return nullptr;
+
+        OpenCallExpr = InitCall;
+      }
+    }
+
+    return nullptr;
+  }
+};
+
 class BlockInCriticalSectionChecker : public Checker<check::PostCall> {
 private:
   const std::array<MutexDescriptor, 8> MutexDescriptors{
@@ -339,6 +425,36 @@ void BlockInCriticalSectionChecker::reportBlockInCritSection(
                                                     os.str(), ErrNode);
   R->addRange(Call.getSourceRange());
   R->markInteresting(Call.getReturnValue());
+  // for 'read' call, check whether it's file descriptor(first argument) is
+  // created by 'open' API with O_NONBLOCK flag and don't report for this
+  // situation.
+  if (Call.getCalleeIdentifier()->getName() == "read") {
+    do {
+      const auto *arg = Call.getArgExpr(0);
+      if (!arg)
+        break;
+
+      const auto *DRE = dyn_cast<DeclRefExpr>(arg->IgnoreImpCasts());
+      if (!DRE)
+        break;
+
+      const auto *VD = dyn_cast_if_present<VarDecl>(DRE->getDecl());
+      if (!VD)
+        break;
+
+      const VarRegion *VR = C.getState()->getRegion(VD, C.getLocationContext());
+      if (!VR)
+        break;
+
+      std::optional<int> O_NONBLOCKV = tryExpandAsInteger(
+          "O_NONBLOCK", C.getBugReporter().getPreprocessor());
+      if (!O_NONBLOCKV)
+        break;
+
+      R->addVisitor(
+          std::make_unique<NonBlockOpenVisitor>(VR, O_NONBLOCKV.value()));
+    } while (false);
+  }
   C.emitReport(std::move(R));
 }
 
diff --git a/clang/test/Analysis/issue-124474.cpp b/clang/test/Analysis/issue-124474.cpp
new file mode 100644
index 00000000000000..f6d67ae967af98
--- /dev/null
+++ b/clang/test/Analysis/issue-124474.cpp
@@ -0,0 +1,49 @@
+// RUN: %clang_analyze_cc1 \
+// RUN:   -analyzer-checker=unix.BlockInCriticalSection \
+// RUN:   -std=c++11 \
+// RUN:   -analyzer-output text \
+// RUN:   -verify %s
+
+// expected-no-diagnostics
+
+namespace std {
+  struct mutex {
+    void lock() {}
+    void unlock() {}
+  };
+  template<typename T>
+  struct lock_guard {
+    lock_guard<T>(std::mutex) {}
+    ~lock_guard<T>() {}
+  };
+  template<typename T>
+  struct unique_lock {
+    unique_lock<T>(std::mutex) {}
+    ~unique_lock<T>() {}
+  };
+  template<typename T>
+  struct not_real_lock {
+    not_real_lock<T>(std::mutex) {}
+  };
+  } // namespace std
+
+std::mutex mtx;
+using ssize_t = long long;
+using size_t = unsigned long long;
+int open (const char *__file, int __oflag, ...);
+ssize_t read(int fd, void *buf, size_t count);
+void close(int fd);
+#define O_RDONLY	     00
+# define O_NONBLOCK	  04000
+
+void foo()
+{
+    std::lock_guard<std::mutex> lock(mtx);
+
+    const char *filename = "example.txt";
+    int fd = open(filename, O_RDONLY | O_NONBLOCK);
+
+    char buffer[200] = {};
+    read(fd, buffer, 199); // no-warning: fd is a non-block file descriptor
+    close(fd);
+}
\ No newline at end of file

@Xazax-hun
Copy link
Collaborator

Could you summarize the problem and the fix in the PR description? This will help people a lot when they read the git log.

private:
const VarRegion *VR;
const CallExpr *OpenCallExpr;
int O_NONBLOCKV;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These POSIX constants are often defined as preprocessor macros, so I don't think it's a good idea to use these as symbol names where they could expand to their definition.

Copy link
Contributor Author

@flovent flovent Feb 12, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

i am not sure if i understand you comment right.
To avoid get it every time we need it, O_NONBLOCK's value is got for marco using tryExpandAsInteger API in reportBlockInCritSection, passed to NonBlockOpenVisitor and stored to this class member O_NONBLOCKV.
And it may not exists in current TU(didn't include certain header or some other reason), when we can't get it's value, the NonBlockOpenVisitor will not be needed then.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

My suggestion is to call this int here something else. Maybe int ValueOfONonBlockVFlag; or just int ValueO_NONBLOCKV;. Something that prevents an accidental expansion to invalid code int 8;` or something in this file.

Getting the value at runtime from the target architecture and putting it behind this variable is not a problem to do. The only concern here is the name of this variable.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

i understand now, thank you for explaining, i will change it in the subsequent modification

@flovent
Copy link
Contributor Author

flovent commented Feb 12, 2025

Could you summarize the problem and the fix in the PR description? This will help people a lot when they read the git log.

description is updated @Xazax-hun

Copy link
Collaborator

@Xazax-hun Xazax-hun left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is read the only operation that is non-blocking in this case?

Alternatively, instead of using a BugReporterVisitor, we could maintain a set of file handles that are OK to use.

char buffer[200] = {};
read(fd, buffer, 199); // no-warning: fd is a non-block file descriptor
close(fd);
}
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nit: missing new line at the end of the file.

// situation.
if (Call.getCalleeIdentifier()->getName() == "read") {
do {
const auto *arg = Call.getArgExpr(0);
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nit: I know the function is not consistent at the moment but the coding convention requires variable names to start with an uppercase letter.

if (!arg)
break;

const auto *DRE = dyn_cast<DeclRefExpr>(arg->IgnoreImpCasts());
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Matching the AST is not a good idea. What if the user writes something like cond ? val1 : val2 as the argument? Any reason to not use CallEvent::getArgSVal?

Copy link
Contributor Author

@flovent flovent Feb 12, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

i am hoping to get the MemRegion of file descriptor here and compare its corresponding SVal between pred node and current node in VisitNode, i can't use getArgSVal to get SVal as region because open call is evaluated to a symbol or a literal int value(-1), i need to recognize this two situation.
is there a way to check binding for SVal between nodes or i should do some other operations to check changed node position?

Alternatively, instead of using a BugReporterVisitor, we could maintain a set of file handles that are OK to use.

this is the same reason i didn't use set

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I see. Unfortunately, matching on the memory region might not be the most reliable.

Having things like int a = b; would move the value in a new memory region. Also, matching the AST in the bug reporter visitor is fragile as there are many ways to express something.

E.g., imagine if someone has some logging and does something like int fd = LOG(open(...)) where the LOG macro inserts some extra code? In general, we should try to do as little matching on the AST as possible and should rely in the symbols when we can.

So my proposal would be to maintain a set of symbols in the analysis state. After each open call look at the returned symbol, and in case it was returning a non-blocking file descriptor put that symbol in the set.

When we report a problem check if the file descriptor we use to report the problem is in the set.

This works great for symbolic file descriptors. Unfortunately, this might break down for concrete integers like 1. But I am wondering if that is a rare edge case enough that we might not need to support. I'd expect open to almost always return a symbolic value. What do you think?

Copy link
Contributor Author

@flovent flovent Feb 12, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

thank you for your detailed explanation, I did overlook some complex scenarios.

And I agree with your point, Checking for open's return value before calling read is very necessary in a real project, this is a modified testcase with checking for file descirptor,in that case we can ignore concrete integers situation.

void foo()
{
    std::lock_guard<std::mutex> lock(mtx);

    const char *filename = "example.txt";
    int fd = open(filename, O_RDONLY | O_NONBLOCK);

    char buffer[200] = {};
    if (fd == -1)
      return;
    read(fd, buffer, 199); // no-warning: fd is a non-block file descriptor
    close(fd);
}

@flovent
Copy link
Contributor Author

flovent commented Feb 12, 2025

Is read the only operation that is non-blocking in this case?

this checker checks read, sleep, getc, fgets, recv for blocking functions.
after some investigation, recv seems can be non-block too when it has non-block file descriptor as argument, i think it can be handled same as read's argument

@steakhal
Copy link
Contributor

I want to review this PR before anyone would approve and merge this, as I was the one who plotted a potential solution in the linked issue. I hope I can get to this on the weekend.

@flovent
Copy link
Contributor Author

flovent commented Feb 12, 2025

i have implemented the way using set successfully in my local development environment as @Xazax-hun suggested.
the implementation detail is:

  1. when we encounter open call, if open flag contains O_NONBLOCK, store call's return Symbol to set,
  2. when we encounter read call, check whether file descriptor's Symbol exists in this set, if so don't report.

it's different with your solution in the related issue, and it doesn't handle situation when open return -1. have any thoughts for the discussion above? @steakhal

@Xazax-hun
Copy link
Collaborator

Thanks a lot! Actually, I think you can also make the BugReporterVisitor approach work similarly. When you create the visitor, you would pass the symbol associated with the filedescriptor to the visitor and the visitor would track back to the function that created the said symbol. I am fine with both the set and the visitor approach I just want it to be symbol based as opposed to matching the AST.

@flovent
Copy link
Contributor Author

flovent commented Feb 13, 2025

I thought about the case when file descriptor equals to -1, which is modeled by evalcall for open in testcase, means that open failed to get a valid file descriptor, if we use this file descriptor in read or recv, they will not be blocked since no actual read is performed, this will not take a long time like this checker's description concerns, so maybe we should avoid report for this situation like non-block file descriptor as well?

@Xazax-hun
Copy link
Collaborator

Oh, for functions that are documented to not block on invalid fds, I think it makes sense to skip the warnings when the fd is -1.

kazutakahirata and others added 9 commits February 13, 2025 19:49
This PR llvm#125646 added this test and it was failing in Android's compiler
and on my machine locally. I removed the "Build config" check and it
passes now.
When the loop induction variable implicit private clause was being
generated, the name was left empty. The intent is that the data clause
operation holds the source language variable name. Thus, add the missing
name now.
…#126096)

Move the code that computes `NumNegativeBits` and `NumPositiveBits` for
an enum to a separate function in `ASTContext.h`.
This function needs to be called from LLDB as well (llvm#115005)
When optimization is disabled, set `optnone` attribute all module entry
functions.

Updated test in accordance with the change.

Closes llvm#124796
When cross compiling the libc-stdbit-tests, the existing tests trigger numerous
instances of -Wimplicit-int-conversion. The truncation of these implicit
promotions is intentional.
@flovent
Copy link
Contributor Author

flovent commented Feb 13, 2025

i have some wrong operations about git here ... i feel very sorry
maybe i should open another PR?

@flovent flovent closed this Feb 13, 2025
Copy link

⚠️ C/C++ code formatter, clang-format found issues in your code. ⚠️

You can test this locally with the following command:
git-clang-format --diff 9387fd96314c59fc9aff1a82e478f9b89a97c20a 551b04136a9296b3983635cb0e9e846a53d98a08 --extensions ,inc,cpp,c,h -- clang/test/Analysis/issue-124474.cpp clang/test/OpenMP/spirv_variant_match.cpp libc/src/math/generic/atan2f_float.h libc/src/stdfix/countlshk.cpp libc/src/stdfix/countlshk.h libc/src/stdfix/countlshr.cpp libc/src/stdfix/countlshr.h libc/src/stdfix/countlsk.cpp libc/src/stdfix/countlsk.h libc/src/stdfix/countlslk.cpp libc/src/stdfix/countlslk.h libc/src/stdfix/countlslr.cpp libc/src/stdfix/countlslr.h libc/src/stdfix/countlsr.cpp libc/src/stdfix/countlsr.h libc/src/stdfix/countlsuhk.cpp libc/src/stdfix/countlsuhk.h libc/src/stdfix/countlsuhr.cpp libc/src/stdfix/countlsuhr.h libc/src/stdfix/countlsuk.cpp libc/src/stdfix/countlsuk.h libc/src/stdfix/countlsulk.cpp libc/src/stdfix/countlsulk.h libc/src/stdfix/countlsulr.cpp libc/src/stdfix/countlsulr.h libc/src/stdfix/countlsur.cpp libc/src/stdfix/countlsur.h libc/test/src/stdfix/CountlsTest.h libc/test/src/stdfix/countlshk_test.cpp libc/test/src/stdfix/countlshr_test.cpp libc/test/src/stdfix/countlsk_test.cpp libc/test/src/stdfix/countlslk_test.cpp libc/test/src/stdfix/countlslr_test.cpp libc/test/src/stdfix/countlsr_test.cpp libc/test/src/stdfix/countlsuhk_test.cpp libc/test/src/stdfix/countlsuhr_test.cpp libc/test/src/stdfix/countlsuk_test.cpp libc/test/src/stdfix/countlsulk_test.cpp libc/test/src/stdfix/countlsulr_test.cpp libc/test/src/stdfix/countlsur_test.cpp libclc/clc/include/clc/clc_convert.h libclc/clc/include/clc/float/definitions.h lldb/test/API/functionalities/thread/finish-from-empty-func/main.c llvm/include/llvm/CodeGen/DroppedVariableStatsMIR.h llvm/lib/CodeGen/DroppedVariableStatsMIR.cpp llvm/lib/IR/DroppedVariableStats.cpp llvm/lib/Target/AMDGPU/GCNRewritePartialRegUses.h llvm/lib/Target/RISCV/RISCVVMV0Elimination.cpp llvm/unittests/CodeGen/DroppedVariableStatsMIRTest.cpp mlir/include/mlir/Dialect/Arith/Transforms/ShardingInterfaceImpl.h mlir/lib/Dialect/Arith/Transforms/ShardingInterfaceImpl.cpp openmp/runtime/test/misc_bugs/simd_conservative_ordered.c bolt/include/bolt/Core/BinarySection.h bolt/tools/driver/llvm-bolt.cpp bolt/unittests/Core/BinaryContext.cpp clang/include/clang/AST/ASTContext.h clang/include/clang/AST/JSONNodeDumper.h clang/include/clang/AST/Mangle.h clang/include/clang/AST/TextNodeDumper.h clang/include/clang/Basic/LangOptions.h clang/lib/AST/ASTContext.cpp clang/lib/AST/ByteCode/InterpBuiltin.cpp clang/lib/AST/ExprConstant.cpp clang/lib/AST/JSONNodeDumper.cpp clang/lib/AST/TextNodeDumper.cpp clang/lib/Analysis/LiveVariables.cpp clang/lib/CodeGen/CGDebugInfo.cpp clang/lib/CodeGen/CGHLSLRuntime.cpp clang/lib/CodeGen/CGObjCMac.cpp clang/lib/CodeGen/CGObjCRuntime.h clang/lib/CodeGen/CGOpenMPRuntime.cpp clang/lib/CodeGen/CGStmtOpenMP.cpp clang/lib/CodeGen/CodeGenFunction.h clang/lib/CodeGen/CodeGenModule.h clang/lib/CodeGen/Targets/NVPTX.cpp clang/lib/Driver/ToolChains/AMDGPU.cpp clang/lib/Driver/ToolChains/AMDGPUOpenMP.cpp clang/lib/Driver/ToolChains/Clang.cpp clang/lib/Driver/ToolChains/ROCm.h clang/lib/Format/UnwrappedLineFormatter.cpp clang/lib/Frontend/PrintPreprocessedOutput.cpp clang/lib/Sema/HeuristicResolver.cpp clang/lib/Sema/SemaDecl.cpp clang/lib/Sema/SemaOpenMP.cpp clang/lib/Sema/SemaTemplateDeductionGuide.cpp clang/lib/StaticAnalyzer/Checkers/BlockInCriticalSectionChecker.cpp clang/lib/StaticAnalyzer/Checkers/WebKit/ASTUtils.cpp clang/lib/StaticAnalyzer/Core/ExprEngine.cpp clang/test/AST/ByteCode/new-delete.cpp clang/test/AST/ast-dump-templates.cpp clang/test/Analysis/Checkers/WebKit/call-args-counted-const-member.cpp clang/test/Analysis/Checkers/WebKit/mock-types.h clang/test/Analysis/analyzer-config.c clang/test/Analysis/live-stmts.cpp clang/test/Analysis/loop-assumptions.c clang/test/Analysis/out-of-bounds-constraint-check.c clang/test/Analysis/out-of-bounds.c clang/test/CodeGen/allow-ubsan-check.c clang/test/CodeGenCXX/RelativeVTablesABI/dynamic-cast.cpp clang/test/CodeGenCXX/RelativeVTablesABI/type-info.cpp clang/test/Driver/amdgpu-openmp-sanitize-options.c clang/test/OpenMP/ordered_codegen.cpp clang/test/Preprocessor/embed_preprocess_to_file.c clang/test/SemaCXX/cxx20-ctad-type-alias.cpp clang/test/Tooling/clang-linker-wrapper-spirv-elf.cpp clang/tools/clang-installapi/Options.cpp clang/tools/libclang/CXString.cpp clang/unittests/Format/TokenAnnotatorTest.cpp clang/unittests/Sema/HeuristicResolverTest.cpp compiler-rt/lib/profile/InstrProfiling.h compiler-rt/lib/profile/InstrProfilingFile.c compiler-rt/lib/sanitizer_common/sanitizer_allocator_local_cache.h compiler-rt/lib/scudo/standalone/chunk.h compiler-rt/lib/scudo/standalone/report.cpp compiler-rt/lib/scudo/standalone/report.h compiler-rt/lib/scudo/standalone/tests/report_test.cpp flang/include/flang/Optimizer/Dialect/FIRType.h flang/include/flang/Optimizer/OpenACC/FIROpenACCTypeInterfaces.h flang/include/flang/Semantics/openmp-directive-sets.h flang/include/flang/Tools/PointerModels.h flang/lib/Frontend/FrontendActions.cpp flang/lib/Lower/OpenACC.cpp flang/lib/Lower/OpenMP/PrivateReductionUtils.cpp flang/lib/Optimizer/Analysis/AliasAnalysis.cpp flang/lib/Optimizer/CodeGen/CodeGen.cpp flang/lib/Optimizer/CodeGen/TargetRewrite.cpp flang/lib/Optimizer/Dialect/FIROps.cpp flang/lib/Optimizer/Dialect/FIRType.cpp flang/lib/Optimizer/OpenACC/FIROpenACCTypeInterfaces.cpp flang/lib/Optimizer/OpenACC/RegisterOpenACCExtensions.cpp flang/lib/Optimizer/Passes/Pipelines.cpp flang/lib/Optimizer/Transforms/AddDebugInfo.cpp flang/lib/Semantics/check-omp-structure.cpp flang/test/lib/OpenACC/TestOpenACCInterfaces.cpp libc/include/__llvm-libc-common.h libc/include/llvm-libc-macros/endian-macros.h libc/include/llvm-libc-macros/features-macros.h libc/include/llvm-libc-macros/pthread-macros.h libc/include/llvm-libc-types/struct_tm.h libc/src/__support/CPP/bit.h libc/src/__support/FPUtil/double_double.h libc/src/__support/fixed_point/fx_bits.h libc/src/__support/fixed_point/fx_rep.h libc/src/__support/macros/optimization.h libc/src/math/generic/atan2f.cpp libc/src/math/generic/pow.cpp libc/src/math/generic/range_reduction_double_common.h libc/src/math/generic/range_reduction_double_fma.h libc/src/math/generic/range_reduction_double_nofma.h libc/src/time/mktime.cpp libc/src/time/time_constants.h libc/src/time/time_utils.cpp libc/src/time/time_utils.h libc/test/integration/src/pthread/pthread_mutex_test.cpp libc/test/src/__support/CPP/bit_test.cpp libc/test/src/stdbit/stdc_bit_ceil_uc_test.cpp libc/test/src/stdbit/stdc_bit_ceil_us_test.cpp libc/test/src/stdbit/stdc_first_leading_one_uc_test.cpp libc/test/src/stdbit/stdc_first_leading_one_us_test.cpp libc/test/src/stdbit/stdc_first_leading_zero_uc_test.cpp libc/test/src/stdbit/stdc_first_leading_zero_us_test.cpp libc/test/src/stdbit/stdc_first_trailing_one_uc_test.cpp libc/test/src/stdbit/stdc_first_trailing_one_us_test.cpp libc/test/src/stdbit/stdc_first_trailing_zero_uc_test.cpp libc/test/src/stdbit/stdc_first_trailing_zero_us_test.cpp libc/test/src/stdbit/stdc_has_single_bit_uc_test.cpp libc/test/src/stdbit/stdc_has_single_bit_us_test.cpp libc/test/src/stdbit/stdc_leading_ones_uc_test.cpp libc/test/src/stdbit/stdc_leading_ones_us_test.cpp libc/test/src/stdbit/stdc_leading_zeros_uc_test.cpp libc/test/src/stdbit/stdc_leading_zeros_us_test.cpp libc/test/src/stdbit/stdc_trailing_ones_uc_test.cpp libc/test/src/stdbit/stdc_trailing_ones_us_test.cpp libc/test/src/stdbit/stdc_trailing_zeros_uc_test.cpp libc/test/src/stdbit/stdc_trailing_zeros_us_test.cpp libclc/generic/include/clc/convert.h libcxx/include/__config libcxx/include/__filesystem/path.h libcxx/include/__vector/vector_bool.h libcxx/test/std/algorithms/alg.nonmodifying/alg.find/find.pass.cpp libcxx/test/std/algorithms/alg.nonmodifying/alg.find/ranges.find.pass.cpp libcxx/test/std/algorithms/alg.nonmodifying/alg.foreach/for_each.pass.cpp libcxxabi/src/cxa_default_handlers.cpp lldb/include/lldb/API/SBTarget.h lldb/include/lldb/API/SBType.h lldb/include/lldb/API/SBValue.h lldb/include/lldb/Core/Debugger.h lldb/include/lldb/Core/UserSettingsController.h lldb/source/API/SBDebugger.cpp lldb/source/API/SBType.cpp lldb/source/Commands/CommandObjectDisassemble.cpp lldb/source/Commands/CommandObjectDisassemble.h lldb/source/Core/Debugger.cpp lldb/source/Core/DynamicLoader.cpp lldb/source/Core/Telemetry.cpp lldb/source/Core/UserSettingsController.cpp lldb/source/Interpreter/ScriptInterpreter.cpp lldb/source/Plugins/Disassembler/LLVMC/DisassemblerLLVMC.cpp lldb/source/Plugins/DynamicLoader/Darwin-Kernel/DynamicLoaderDarwinKernel.cpp lldb/source/Plugins/DynamicLoader/FreeBSD-Kernel/DynamicLoaderFreeBSDKernel.cpp lldb/source/Plugins/InstrumentationRuntime/TSan/InstrumentationRuntimeTSan.cpp lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCTrampolineHandler.cpp lldb/source/Plugins/ScriptInterpreter/Lua/ScriptInterpreterLua.cpp lldb/source/Plugins/ScriptInterpreter/None/ScriptInterpreterNone.cpp lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp lldb/source/Plugins/SymbolFile/DWARF/DWARFDIE.cpp lldb/source/Symbol/Block.cpp lldb/source/Symbol/SymbolContext.cpp lldb/source/Target/Process.cpp lldb/source/Target/Target.cpp lldb/source/Target/ThreadPlanStepOut.cpp lldb/source/Target/ThreadPlanTracer.cpp lldb/test/API/lang/cpp/template-arguments/main.cpp lldb/test/Shell/SymbolFile/DWARF/x86/simplified-template-names.cpp llvm/include/llvm/Analysis/CaptureTracking.h llvm/include/llvm/Analysis/DDG.h llvm/include/llvm/Analysis/DependenceAnalysis.h llvm/include/llvm/Analysis/LoopAccessAnalysis.h llvm/include/llvm/Analysis/SparsePropagation.h llvm/include/llvm/AsmParser/LLToken.h llvm/include/llvm/CodeGen/MachinePipeliner.h llvm/include/llvm/CodeGen/MachineScheduler.h llvm/include/llvm/CodeGen/SelectionDAGNodes.h llvm/include/llvm/CodeGen/TargetFrameLowering.h llvm/include/llvm/ExecutionEngine/Orc/Shared/OrcRTBridge.h llvm/include/llvm/ExecutionEngine/Orc/TargetProcess/UnwindInfoManager.h llvm/include/llvm/ExecutionEngine/Orc/UnwindInfoRegistrationPlugin.h llvm/include/llvm/IR/DIBuilder.h llvm/include/llvm/IR/IRBuilder.h llvm/include/llvm/InitializePasses.h llvm/include/llvm/MC/MCContext.h llvm/include/llvm/MC/MCELFStreamer.h llvm/include/llvm/MC/MCParser/MCTargetAsmParser.h llvm/include/llvm/Passes/CodeGenPassBuilder.h llvm/include/llvm/Passes/StandardInstrumentations.h llvm/include/llvm/Support/ModRef.h llvm/include/llvm/Transforms/Utils/SampleProfileLoaderBaseImpl.h llvm/include/llvm/Transforms/Vectorize/SandboxVectorizer/InstrMaps.h llvm/include/llvm/Transforms/Vectorize/SandboxVectorizer/Scheduler.h llvm/lib/Analysis/CaptureTracking.cpp llvm/lib/Analysis/DDG.cpp llvm/lib/Analysis/DependenceAnalysis.cpp llvm/lib/Analysis/DependenceGraphBuilder.cpp llvm/lib/Analysis/InstructionSimplify.cpp llvm/lib/Analysis/LoopAccessAnalysis.cpp llvm/lib/Analysis/LoopCacheAnalysis.cpp llvm/lib/Analysis/ValueTracking.cpp llvm/lib/AsmParser/LLLexer.cpp llvm/lib/AsmParser/LLParser.cpp llvm/lib/Bitcode/Reader/BitcodeReader.cpp llvm/lib/Bitcode/Writer/BitcodeWriter.cpp llvm/lib/CodeGen/CFIFixup.cpp llvm/lib/CodeGen/CodeGen.cpp llvm/lib/CodeGen/MachineFunctionPass.cpp llvm/lib/CodeGen/MachineScheduler.cpp llvm/lib/CodeGen/RegAllocBasic.cpp llvm/lib/CodeGen/RegAllocGreedy.cpp llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp llvm/lib/CodeGen/SelectionDAG/LegalizeTypes.h llvm/lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp llvm/lib/CodeGen/TargetFrameLoweringImpl.cpp llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp llvm/lib/ExecutionEngine/Orc/ExecutorProcessControl.cpp llvm/lib/ExecutionEngine/Orc/LLJIT.cpp llvm/lib/ExecutionEngine/Orc/Shared/OrcRTBridge.cpp llvm/lib/ExecutionEngine/Orc/TargetProcess/UnwindInfoManager.cpp llvm/lib/ExecutionEngine/Orc/UnwindInfoRegistrationPlugin.cpp llvm/lib/Frontend/OpenMP/OMPContext.cpp llvm/lib/Frontend/OpenMP/OMPIRBuilder.cpp llvm/lib/IR/Attributes.cpp llvm/lib/IR/AutoUpgrade.cpp llvm/lib/IR/Constants.cpp llvm/lib/IR/DIBuilder.cpp llvm/lib/IR/DebugInfo.cpp llvm/lib/MC/MCContext.cpp llvm/lib/MC/MCObjectFileInfo.cpp llvm/lib/MC/MCParser/WasmAsmParser.cpp llvm/lib/Object/GOFFObjectFile.cpp llvm/lib/Passes/PassBuilder.cpp llvm/lib/Passes/PassBuilderPipelines.cpp llvm/lib/Support/ModRef.cpp llvm/lib/Support/Unix/Process.inc llvm/lib/Target/AArch64/AArch64FrameLowering.cpp llvm/lib/Target/AArch64/AArch64FrameLowering.h llvm/lib/Target/AArch64/AArch64ISelLowering.cpp llvm/lib/Target/AArch64/AArch64TargetTransformInfo.cpp llvm/lib/Target/AMDGPU/AMDGPU.h llvm/lib/Target/AMDGPU/AMDGPUCallLowering.cpp llvm/lib/Target/AMDGPU/AMDGPULegalizerInfo.cpp llvm/lib/Target/AMDGPU/AMDGPULegalizerInfo.h llvm/lib/Target/AMDGPU/AMDGPULowerBufferFatPointers.cpp llvm/lib/Target/AMDGPU/AMDGPUMemoryUtils.cpp llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp llvm/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp llvm/lib/Target/AMDGPU/Disassembler/AMDGPUDisassembler.cpp llvm/lib/Target/AMDGPU/GCNDPPCombine.cpp llvm/lib/Target/AMDGPU/GCNHazardRecognizer.cpp llvm/lib/Target/AMDGPU/GCNRewritePartialRegUses.cpp llvm/lib/Target/AMDGPU/MCA/AMDGPUCustomBehaviour.cpp llvm/lib/Target/AMDGPU/MCA/AMDGPUCustomBehaviour.h llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUInstPrinter.cpp llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUMCCodeEmitter.cpp llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUMCTargetDesc.h llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUTargetStreamer.cpp llvm/lib/Target/AMDGPU/MCTargetDesc/R600MCTargetDesc.h llvm/lib/Target/AMDGPU/R600ExpandSpecialInstrs.cpp llvm/lib/Target/AMDGPU/R600InstrInfo.cpp llvm/lib/Target/AMDGPU/R600InstrInfo.h llvm/lib/Target/AMDGPU/R600Packetizer.cpp llvm/lib/Target/AMDGPU/SIFoldOperands.cpp llvm/lib/Target/AMDGPU/SIISelLowering.cpp llvm/lib/Target/AMDGPU/SIInsertWaitcnts.cpp llvm/lib/Target/AMDGPU/SIInstrInfo.cpp llvm/lib/Target/AMDGPU/SIInstrInfo.h llvm/lib/Target/AMDGPU/SILoadStoreOptimizer.cpp llvm/lib/Target/AMDGPU/SIOptimizeExecMasking.cpp llvm/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.h llvm/lib/Target/ARM/ARMCallingConv.cpp llvm/lib/Target/ARM/ARMISelLowering.cpp llvm/lib/Target/DirectX/DXILShaderFlags.cpp llvm/lib/Target/DirectX/DXILShaderFlags.h llvm/lib/Target/Hexagon/Disassembler/HexagonDisassembler.cpp llvm/lib/Target/Hexagon/HexagonLoopAlign.cpp llvm/lib/Target/Lanai/Disassembler/LanaiDisassembler.cpp llvm/lib/Target/Lanai/Disassembler/LanaiDisassembler.h llvm/lib/Target/NVPTX/NVPTXCtorDtorLowering.cpp llvm/lib/Target/NVPTX/NVPTXISelLowering.cpp llvm/lib/Target/NVPTX/NVPTXISelLowering.h llvm/lib/Target/NVPTX/NVPTXUtilities.cpp llvm/lib/Target/RISCV/RISCV.h llvm/lib/Target/RISCV/RISCVISelDAGToDAG.cpp llvm/lib/Target/RISCV/RISCVISelLowering.cpp llvm/lib/Target/RISCV/RISCVInstrInfo.h llvm/lib/Target/RISCV/RISCVTargetMachine.cpp llvm/lib/Target/RISCV/RISCVVectorPeephole.cpp llvm/lib/Target/SPIRV/SPIRVEmitIntrinsics.cpp llvm/lib/Target/SystemZ/SystemZAsmPrinter.cpp llvm/lib/Target/WebAssembly/AsmParser/WebAssemblyAsmParser.cpp llvm/lib/Target/WebAssembly/WebAssemblyInstrInfo.h llvm/lib/Target/X86/X86DomainReassignment.cpp llvm/lib/Target/X86/X86ISelLowering.cpp llvm/lib/Transforms/Coroutines/CoroFrame.cpp llvm/lib/Transforms/IPO/AttributorAttributes.cpp llvm/lib/Transforms/IPO/FunctionAttrs.cpp llvm/lib/Transforms/IPO/SCCP.cpp llvm/lib/Transforms/InstCombine/InstCombineCompares.cpp llvm/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp llvm/lib/Transforms/Instrumentation/HWAddressSanitizer.cpp llvm/lib/Transforms/Instrumentation/MemorySanitizer.cpp llvm/lib/Transforms/Scalar/LoopFuse.cpp llvm/lib/Transforms/Scalar/LoopInterchange.cpp llvm/lib/Transforms/Scalar/MemCpyOptimizer.cpp llvm/lib/Transforms/Scalar/SROA.cpp llvm/lib/Transforms/Utils/CodeMoverUtils.cpp llvm/lib/Transforms/Utils/Debugify.cpp llvm/lib/Transforms/Utils/Local.cpp llvm/lib/Transforms/Utils/LoopUnrollAndJam.cpp llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp llvm/lib/Transforms/Vectorize/LoopVectorize.cpp llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp llvm/lib/Transforms/Vectorize/SandboxVectorizer/DependencyGraph.cpp llvm/lib/Transforms/Vectorize/SandboxVectorizer/Legality.cpp llvm/lib/Transforms/Vectorize/SandboxVectorizer/Passes/BottomUpVec.cpp llvm/lib/Transforms/Vectorize/SandboxVectorizer/Scheduler.cpp llvm/lib/Transforms/Vectorize/VPlan.h llvm/lib/Transforms/Vectorize/VPlanRecipes.cpp llvm/tools/llvm-jitlink/llvm-jitlink-executor/llvm-jitlink-executor.cpp llvm/tools/llvm-jitlink/llvm-jitlink.cpp llvm/unittests/Analysis/CaptureTrackingTest.cpp llvm/unittests/IR/IRBuilderTest.cpp llvm/unittests/Support/ModRefTest.cpp llvm/unittests/Transforms/Utils/CloningTest.cpp llvm/unittests/Transforms/Vectorize/SandboxVectorizer/DependencyGraphTest.cpp llvm/unittests/Transforms/Vectorize/SandboxVectorizer/InstrMapsTest.cpp llvm/unittests/Transforms/Vectorize/SandboxVectorizer/SchedulerTest.cpp llvm/utils/TableGen/InstrInfoEmitter.cpp llvm/utils/TableGen/RegisterInfoEmitter.cpp mlir/include/mlir-c/IR.h mlir/include/mlir/Dialect/Affine/Passes.h mlir/include/mlir/Dialect/Bufferization/Transforms/Passes.h mlir/include/mlir/Dialect/DLTI/DLTI.h mlir/include/mlir/Dialect/Mesh/IR/MeshOps.h mlir/include/mlir/Dialect/Mesh/Interfaces/ShardingInterface.h mlir/include/mlir/Dialect/Tensor/IR/Tensor.h mlir/include/mlir/InitAllDialects.h mlir/lib/Analysis/DataFlow/IntegerRangeAnalysis.cpp mlir/lib/Bindings/Python/IRCore.cpp mlir/lib/Bytecode/Writer/BytecodeWriter.cpp mlir/lib/CAPI/IR/IR.cpp mlir/lib/Conversion/ArithToLLVM/ArithToLLVM.cpp mlir/lib/Conversion/TosaToLinalg/TosaToLinalg.cpp mlir/lib/Dialect/Affine/Transforms/LoopFusion.cpp mlir/lib/Dialect/Affine/Transforms/LoopUnroll.cpp mlir/lib/Dialect/DLTI/DLTI.cpp mlir/lib/Dialect/Linalg/Transforms/DataLayoutPropagation.cpp mlir/lib/Dialect/Mesh/IR/MeshOps.cpp mlir/lib/Dialect/Mesh/Interfaces/ShardingInterface.cpp mlir/lib/Dialect/Mesh/Transforms/ShardingPropagation.cpp mlir/lib/Dialect/Mesh/Transforms/Spmdization.cpp mlir/lib/Dialect/Tensor/Extensions/MeshShardingExtensions.cpp mlir/lib/Dialect/Tensor/IR/TensorOps.cpp mlir/lib/Dialect/Tosa/IR/TosaCanonicalizations.cpp mlir/lib/Dialect/Tosa/IR/TosaOps.cpp mlir/lib/Dialect/Tosa/Transforms/TosaReduceTransposes.cpp mlir/lib/Dialect/Vector/IR/VectorOps.cpp mlir/lib/IR/AsmPrinter.cpp mlir/lib/Target/LLVMIR/Dialect/NVVM/NVVMToLLVMIRTranslation.cpp mlir/lib/Target/LLVMIR/ModuleTranslation.cpp mlir/tools/mlir-tblgen/OpDocGen.cpp mlir/tools/mlir-tblgen/OpInterfacesGen.cpp mlir/tools/mlir-tblgen/PassDocGen.cpp mlir/unittests/Bytecode/BytecodeTest.cpp offload/include/Shared/Environment.h offload/plugins-nextgen/common/include/GlobalHandler.h offload/plugins-nextgen/common/include/RPC.h offload/plugins-nextgen/common/src/GlobalHandler.cpp offload/plugins-nextgen/common/src/PluginInterface.cpp offload/plugins-nextgen/common/src/RPC.cpp offload/test/offloading/pgo1.c utils/bazel/llvm-project-overlay/llvm/include/llvm/Config/config.h llvm/include/llvm/IR/DroppedVariableStats.h llvm/include/llvm/IR/DroppedVariableStatsIR.h llvm/lib/IR/DroppedVariableStatsIR.cpp
View the diff from clang-format here.
diff --git a/lldb/source/Target/ThreadPlanStepOut.cpp b/lldb/source/Target/ThreadPlanStepOut.cpp
index a05c46db6b..49a40cf085 100644
--- a/lldb/source/Target/ThreadPlanStepOut.cpp
+++ b/lldb/source/Target/ThreadPlanStepOut.cpp
@@ -365,7 +365,8 @@ bool ThreadPlanStepOut::ShouldStop(Event *event_ptr) {
 
   if (!done) {
     StopInfoSP stop_info_sp = GetPrivateStopInfo();
-    if (stop_info_sp && stop_info_sp->GetStopReason() == eStopReasonBreakpoint) {
+    if (stop_info_sp &&
+        stop_info_sp->GetStopReason() == eStopReasonBreakpoint) {
       StackID frame_zero_id = GetThread().GetStackFrameAtIndex(0)->GetStackID();
       done = !(frame_zero_id < m_step_out_to_id);
     }
diff --git a/llvm/include/llvm/Analysis/DDG.h b/llvm/include/llvm/Analysis/DDG.h
index dfd84a9add..c08b6b7eab 100644
--- a/llvm/include/llvm/Analysis/DDG.h
+++ b/llvm/include/llvm/Analysis/DDG.h
@@ -452,8 +452,7 @@ bool DependenceGraphInfo<NodeType>::getDependencies(
 
   for (auto *SrcI : SrcIList)
     for (auto *DstI : DstIList)
-      if (auto Dep =
-              const_cast<DependenceInfo *>(&DI)->depends(SrcI, DstI))
+      if (auto Dep = const_cast<DependenceInfo *>(&DI)->depends(SrcI, DstI))
         Deps.push_back(std::move(Dep));
 
   return !Deps.empty();
diff --git a/llvm/include/llvm/Analysis/DependenceAnalysis.h b/llvm/include/llvm/Analysis/DependenceAnalysis.h
index 426ac757b4..5e1b3991c8 100644
--- a/llvm/include/llvm/Analysis/DependenceAnalysis.h
+++ b/llvm/include/llvm/Analysis/DependenceAnalysis.h
@@ -303,8 +303,7 @@ namespace llvm {
     /// depends - Tests for a dependence between the Src and Dst instructions.
     /// Returns NULL if no dependence; otherwise, returns a Dependence (or a
     /// FullDependence) with as much information as can be gleaned.
-    std::unique_ptr<Dependence> depends(Instruction *Src,
-                                        Instruction *Dst);
+    std::unique_ptr<Dependence> depends(Instruction *Src, Instruction *Dst);
 
     /// getSplitIteration - Give a dependence that's splittable at some
     /// particular level, return the iteration that should be used to split
diff --git a/llvm/lib/Analysis/DependenceAnalysis.cpp b/llvm/lib/Analysis/DependenceAnalysis.cpp
index cd252c62ba..a62f996f82 100644
--- a/llvm/lib/Analysis/DependenceAnalysis.cpp
+++ b/llvm/lib/Analysis/DependenceAnalysis.cpp
@@ -199,8 +199,7 @@ static void dumpExampleDependence(raw_ostream &OS, DependenceInfo *DA,
                 OS << "!\n";
               }
             }
-          }
-          else
+          } else
             OS << "none!\n";
         }
       }
@@ -3588,8 +3587,8 @@ bool DependenceInfo::invalidate(Function &F, const PreservedAnalyses &PA,
 //
 // Care is required to keep the routine below, getSplitIteration(),
 // up to date with respect to this routine.
-std::unique_ptr<Dependence>
-DependenceInfo::depends(Instruction *Src, Instruction *Dst) {
+std::unique_ptr<Dependence> DependenceInfo::depends(Instruction *Src,
+                                                    Instruction *Dst) {
   bool PossiblyLoopIndependent = true;
   if (Src == Dst)
     PossiblyLoopIndependent = false;
diff --git a/llvm/lib/Target/ARM/ARMISelLowering.cpp b/llvm/lib/Target/ARM/ARMISelLowering.cpp
index 2bac1d0086..1fb210667a 100644
--- a/llvm/lib/Target/ARM/ARMISelLowering.cpp
+++ b/llvm/lib/Target/ARM/ARMISelLowering.cpp
@@ -8497,12 +8497,9 @@ bool ARMTargetLowering::isShuffleMaskLegal(ArrayRef<int> M, EVT VT) const {
   unsigned Imm, WhichResult;
 
   unsigned EltSize = VT.getScalarSizeInBits();
-  if (EltSize >= 32 ||
-      ShuffleVectorSDNode::isSplatMask(M) ||
-      ShuffleVectorInst::isIdentityMask(M, M.size()) ||
-      isVREVMask(M, VT, 64) ||
-      isVREVMask(M, VT, 32) ||
-      isVREVMask(M, VT, 16))
+  if (EltSize >= 32 || ShuffleVectorSDNode::isSplatMask(M) ||
+      ShuffleVectorInst::isIdentityMask(M, M.size()) || isVREVMask(M, VT, 64) ||
+      isVREVMask(M, VT, 32) || isVREVMask(M, VT, 16))
     return true;
   else if (Subtarget->hasNEON() &&
            (isVEXTMask(M, VT, ReverseVEXT, Imm) ||
diff --git a/llvm/lib/Target/RISCV/RISCVISelLowering.cpp b/llvm/lib/Target/RISCV/RISCVISelLowering.cpp
index 829eef2e4d..1311edde4b 100644
--- a/llvm/lib/Target/RISCV/RISCVISelLowering.cpp
+++ b/llvm/lib/Target/RISCV/RISCVISelLowering.cpp
@@ -5356,8 +5356,7 @@ static bool isLocalRepeatingShuffle(ArrayRef<int> Mask, int Span) {
 
 /// Is this mask only using elements from the first span of the input?
 static bool isLowSourceShuffle(ArrayRef<int> Mask, int Span) {
-  return all_of(Mask,
-                [&](const auto &Idx) { return Idx == -1 || Idx < Span; });
+  return all_of(Mask, [&](const auto &Idx) { return Idx == -1 || Idx < Span; });
 }
 
 /// Try to widen element type to get a new mask value for a better permutation
@@ -5791,9 +5790,8 @@ static SDValue lowerVECTOR_SHUFFLE(SDValue Op, SelectionDAG &DAG,
       Gather = DAG.getUNDEF(ContainerVT);
       SDValue SlideAmt =
           DAG.getElementCount(DL, XLenVT, M1VT.getVectorElementCount());
-      SDValue SubV1 =
-          DAG.getNode(ISD::EXTRACT_SUBVECTOR, DL, M1VT, V1,
-                      DAG.getVectorIdxConstant(0, DL));
+      SDValue SubV1 = DAG.getNode(ISD::EXTRACT_SUBVECTOR, DL, M1VT, V1,
+                                  DAG.getVectorIdxConstant(0, DL));
       for (int i = 0; i < N; i++) {
         if (i != 0)
           LHSIndices = getVSlidedown(DAG, Subtarget, DL, IndexContainerVT,

Copy link

⚠️ undef deprecator found issues in your code. ⚠️

You can test this locally with the following command:
git diff -U0 --pickaxe-regex -S '([^a-zA-Z0-9#_-]undef[^a-zA-Z0-9_-]|UndefValue::get)' 9387fd96314c59fc9aff1a82e478f9b89a97c20a 551b04136a9296b3983635cb0e9e846a53d98a08 clang/test/Analysis/issue-124474.cpp clang/test/OpenMP/spirv_variant_match.cpp libc/src/math/generic/atan2f_float.h libc/src/stdfix/countlshk.cpp libc/src/stdfix/countlshk.h libc/src/stdfix/countlshr.cpp libc/src/stdfix/countlshr.h libc/src/stdfix/countlsk.cpp libc/src/stdfix/countlsk.h libc/src/stdfix/countlslk.cpp libc/src/stdfix/countlslk.h libc/src/stdfix/countlslr.cpp libc/src/stdfix/countlslr.h libc/src/stdfix/countlsr.cpp libc/src/stdfix/countlsr.h libc/src/stdfix/countlsuhk.cpp libc/src/stdfix/countlsuhk.h libc/src/stdfix/countlsuhr.cpp libc/src/stdfix/countlsuhr.h libc/src/stdfix/countlsuk.cpp libc/src/stdfix/countlsuk.h libc/src/stdfix/countlsulk.cpp libc/src/stdfix/countlsulk.h libc/src/stdfix/countlsulr.cpp libc/src/stdfix/countlsulr.h libc/src/stdfix/countlsur.cpp libc/src/stdfix/countlsur.h libc/test/src/stdfix/CountlsTest.h libc/test/src/stdfix/countlshk_test.cpp libc/test/src/stdfix/countlshr_test.cpp libc/test/src/stdfix/countlsk_test.cpp libc/test/src/stdfix/countlslk_test.cpp libc/test/src/stdfix/countlslr_test.cpp libc/test/src/stdfix/countlsr_test.cpp libc/test/src/stdfix/countlsuhk_test.cpp libc/test/src/stdfix/countlsuhr_test.cpp libc/test/src/stdfix/countlsuk_test.cpp libc/test/src/stdfix/countlsulk_test.cpp libc/test/src/stdfix/countlsulr_test.cpp libc/test/src/stdfix/countlsur_test.cpp libclc/clc/include/clc/clc_convert.h libclc/clc/include/clc/float/definitions.h lldb/test/API/functionalities/thread/finish-from-empty-func/main.c llvm/include/llvm/CodeGen/DroppedVariableStatsMIR.h llvm/lib/CodeGen/DroppedVariableStatsMIR.cpp llvm/lib/IR/DroppedVariableStats.cpp llvm/lib/Target/AMDGPU/GCNRewritePartialRegUses.h llvm/lib/Target/RISCV/RISCVVMV0Elimination.cpp llvm/test/Analysis/LoopAccessAnalysis/retry-runtime-checks-after-dependence-analysis.ll llvm/test/Bitcode/memory-attribute-upgrade.ll llvm/test/CodeGen/AArch64/Atomics/aarch64-atomicrmw-lsfe.ll llvm/test/CodeGen/AArch64/Atomics/aarch64-atomicrmw-v8a_fp.ll llvm/test/CodeGen/AArch64/Atomics/aarch64_be-atomicrmw-lsfe.ll llvm/test/CodeGen/AArch64/Atomics/aarch64_be-atomicrmw-v8a_fp.ll llvm/test/CodeGen/AMDGPU/dumpcode.ll llvm/test/CodeGen/AMDGPU/iglp-no-clobber.ll llvm/test/CodeGen/AMDGPU/llvm.amdgcn.workitem.id-unsupported-calling-convention.ll llvm/test/CodeGen/DirectX/ShaderFlags/disable-opt-cs.ll llvm/test/CodeGen/DirectX/ShaderFlags/disable-opt-lib.ll llvm/test/CodeGen/DirectX/ShaderFlags/lib-entry-attr-error.ll llvm/test/CodeGen/RISCV/rvv/vmv0-elimination.ll llvm/test/CodeGen/Thumb2/bf16-pcs.ll llvm/test/CodeGen/Thumb2/fp16-pcs.ll llvm/test/LTO/X86/coro.ll llvm/test/Transforms/FunctionAttrs/sendmsg-nocallback.ll llvm/test/Transforms/LoopVectorize/AArch64/partial-reduce-sub.ll llvm/test/Transforms/PhaseOrdering/AArch64/udotabd.ll llvm/test/Transforms/SLPVectorizer/SystemZ/reuse-non-power-of-2-reorder.ll llvm/test/Transforms/Util/strip-nonlinetable-debuginfo-pr125116.ll llvm/unittests/CodeGen/DroppedVariableStatsMIRTest.cpp mlir/include/mlir/Dialect/Arith/Transforms/ShardingInterfaceImpl.h mlir/lib/Dialect/Arith/Transforms/ShardingInterfaceImpl.cpp openmp/runtime/test/misc_bugs/simd_conservative_ordered.c bolt/include/bolt/Core/BinarySection.h bolt/tools/driver/llvm-bolt.cpp bolt/unittests/Core/BinaryContext.cpp clang/include/clang/AST/ASTContext.h clang/include/clang/AST/JSONNodeDumper.h clang/include/clang/AST/Mangle.h clang/include/clang/AST/TextNodeDumper.h clang/include/clang/Basic/LangOptions.h clang/lib/AST/ASTContext.cpp clang/lib/AST/ByteCode/InterpBuiltin.cpp clang/lib/AST/ExprConstant.cpp clang/lib/AST/JSONNodeDumper.cpp clang/lib/AST/TextNodeDumper.cpp clang/lib/Analysis/LiveVariables.cpp clang/lib/CodeGen/CGDebugInfo.cpp clang/lib/CodeGen/CGHLSLRuntime.cpp clang/lib/CodeGen/CGObjCMac.cpp clang/lib/CodeGen/CGObjCRuntime.h clang/lib/CodeGen/CGOpenMPRuntime.cpp clang/lib/CodeGen/CGStmtOpenMP.cpp clang/lib/CodeGen/CodeGenFunction.h clang/lib/CodeGen/CodeGenModule.h clang/lib/CodeGen/Targets/NVPTX.cpp clang/lib/Driver/ToolChains/AMDGPU.cpp clang/lib/Driver/ToolChains/AMDGPUOpenMP.cpp clang/lib/Driver/ToolChains/Clang.cpp clang/lib/Driver/ToolChains/ROCm.h clang/lib/Format/UnwrappedLineFormatter.cpp clang/lib/Frontend/PrintPreprocessedOutput.cpp clang/lib/Sema/HeuristicResolver.cpp clang/lib/Sema/SemaDecl.cpp clang/lib/Sema/SemaOpenMP.cpp clang/lib/Sema/SemaTemplateDeductionGuide.cpp clang/lib/StaticAnalyzer/Checkers/BlockInCriticalSectionChecker.cpp clang/lib/StaticAnalyzer/Checkers/WebKit/ASTUtils.cpp clang/lib/StaticAnalyzer/Core/ExprEngine.cpp clang/test/AST/ByteCode/new-delete.cpp clang/test/AST/ast-dump-templates.cpp clang/test/Analysis/Checkers/WebKit/call-args-counted-const-member.cpp clang/test/Analysis/Checkers/WebKit/mock-types.h clang/test/Analysis/analyzer-config.c clang/test/Analysis/live-stmts.cpp clang/test/Analysis/loop-assumptions.c clang/test/Analysis/out-of-bounds-constraint-check.c clang/test/Analysis/out-of-bounds.c clang/test/CodeGen/allow-ubsan-check.c clang/test/CodeGenCXX/RelativeVTablesABI/dynamic-cast.cpp clang/test/CodeGenCXX/RelativeVTablesABI/type-info.cpp clang/test/Driver/amdgpu-openmp-sanitize-options.c clang/test/OpenMP/ordered_codegen.cpp clang/test/Preprocessor/embed_preprocess_to_file.c clang/test/SemaCXX/cxx20-ctad-type-alias.cpp clang/test/Tooling/clang-linker-wrapper-spirv-elf.cpp clang/tools/clang-installapi/Options.cpp clang/tools/libclang/CXString.cpp clang/unittests/Format/TokenAnnotatorTest.cpp clang/unittests/Sema/HeuristicResolverTest.cpp compiler-rt/lib/profile/InstrProfiling.h compiler-rt/lib/profile/InstrProfilingFile.c compiler-rt/lib/sanitizer_common/sanitizer_allocator_local_cache.h compiler-rt/lib/scudo/standalone/chunk.h compiler-rt/lib/scudo/standalone/report.cpp compiler-rt/lib/scudo/standalone/report.h compiler-rt/lib/scudo/standalone/tests/report_test.cpp flang/include/flang/Optimizer/Dialect/FIRType.h flang/include/flang/Optimizer/OpenACC/FIROpenACCTypeInterfaces.h flang/include/flang/Semantics/openmp-directive-sets.h flang/include/flang/Tools/PointerModels.h flang/lib/Frontend/FrontendActions.cpp flang/lib/Lower/OpenACC.cpp flang/lib/Lower/OpenMP/PrivateReductionUtils.cpp flang/lib/Optimizer/Analysis/AliasAnalysis.cpp flang/lib/Optimizer/CodeGen/CodeGen.cpp flang/lib/Optimizer/CodeGen/TargetRewrite.cpp flang/lib/Optimizer/Dialect/FIROps.cpp flang/lib/Optimizer/Dialect/FIRType.cpp flang/lib/Optimizer/OpenACC/FIROpenACCTypeInterfaces.cpp flang/lib/Optimizer/OpenACC/RegisterOpenACCExtensions.cpp flang/lib/Optimizer/Passes/Pipelines.cpp flang/lib/Optimizer/Transforms/AddDebugInfo.cpp flang/lib/Semantics/check-omp-structure.cpp flang/test/lib/OpenACC/TestOpenACCInterfaces.cpp libc/include/__llvm-libc-common.h libc/include/llvm-libc-macros/endian-macros.h libc/include/llvm-libc-macros/features-macros.h libc/include/llvm-libc-macros/pthread-macros.h libc/include/llvm-libc-types/struct_tm.h libc/src/__support/CPP/bit.h libc/src/__support/FPUtil/double_double.h libc/src/__support/fixed_point/fx_bits.h libc/src/__support/fixed_point/fx_rep.h libc/src/__support/macros/optimization.h libc/src/math/generic/atan2f.cpp libc/src/math/generic/pow.cpp libc/src/math/generic/range_reduction_double_common.h libc/src/math/generic/range_reduction_double_fma.h libc/src/math/generic/range_reduction_double_nofma.h libc/src/time/mktime.cpp libc/src/time/time_constants.h libc/src/time/time_utils.cpp libc/src/time/time_utils.h libc/test/integration/src/pthread/pthread_mutex_test.cpp libc/test/src/__support/CPP/bit_test.cpp libc/test/src/stdbit/stdc_bit_ceil_uc_test.cpp libc/test/src/stdbit/stdc_bit_ceil_us_test.cpp libc/test/src/stdbit/stdc_first_leading_one_uc_test.cpp libc/test/src/stdbit/stdc_first_leading_one_us_test.cpp libc/test/src/stdbit/stdc_first_leading_zero_uc_test.cpp libc/test/src/stdbit/stdc_first_leading_zero_us_test.cpp libc/test/src/stdbit/stdc_first_trailing_one_uc_test.cpp libc/test/src/stdbit/stdc_first_trailing_one_us_test.cpp libc/test/src/stdbit/stdc_first_trailing_zero_uc_test.cpp libc/test/src/stdbit/stdc_first_trailing_zero_us_test.cpp libc/test/src/stdbit/stdc_has_single_bit_uc_test.cpp libc/test/src/stdbit/stdc_has_single_bit_us_test.cpp libc/test/src/stdbit/stdc_leading_ones_uc_test.cpp libc/test/src/stdbit/stdc_leading_ones_us_test.cpp libc/test/src/stdbit/stdc_leading_zeros_uc_test.cpp libc/test/src/stdbit/stdc_leading_zeros_us_test.cpp libc/test/src/stdbit/stdc_trailing_ones_uc_test.cpp libc/test/src/stdbit/stdc_trailing_ones_us_test.cpp libc/test/src/stdbit/stdc_trailing_zeros_uc_test.cpp libc/test/src/stdbit/stdc_trailing_zeros_us_test.cpp libclc/generic/include/clc/convert.h libcxx/include/__filesystem/path.h libcxx/include/__vector/vector_bool.h libcxx/test/std/algorithms/alg.nonmodifying/alg.find/find.pass.cpp libcxx/test/std/algorithms/alg.nonmodifying/alg.find/ranges.find.pass.cpp libcxx/test/std/algorithms/alg.nonmodifying/alg.foreach/for_each.pass.cpp libcxxabi/src/cxa_default_handlers.cpp lldb/include/lldb/API/SBTarget.h lldb/include/lldb/API/SBType.h lldb/include/lldb/API/SBValue.h lldb/include/lldb/Core/Debugger.h lldb/include/lldb/Core/UserSettingsController.h lldb/source/API/SBDebugger.cpp lldb/source/API/SBType.cpp lldb/source/Commands/CommandObjectDisassemble.cpp lldb/source/Commands/CommandObjectDisassemble.h lldb/source/Core/Debugger.cpp lldb/source/Core/DynamicLoader.cpp lldb/source/Core/Telemetry.cpp lldb/source/Core/UserSettingsController.cpp lldb/source/Interpreter/ScriptInterpreter.cpp lldb/source/Plugins/Disassembler/LLVMC/DisassemblerLLVMC.cpp lldb/source/Plugins/DynamicLoader/Darwin-Kernel/DynamicLoaderDarwinKernel.cpp lldb/source/Plugins/DynamicLoader/FreeBSD-Kernel/DynamicLoaderFreeBSDKernel.cpp lldb/source/Plugins/InstrumentationRuntime/TSan/InstrumentationRuntimeTSan.cpp lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCTrampolineHandler.cpp lldb/source/Plugins/ScriptInterpreter/Lua/ScriptInterpreterLua.cpp lldb/source/Plugins/ScriptInterpreter/None/ScriptInterpreterNone.cpp lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp lldb/source/Plugins/SymbolFile/DWARF/DWARFDIE.cpp lldb/source/Symbol/Block.cpp lldb/source/Symbol/SymbolContext.cpp lldb/source/Target/Process.cpp lldb/source/Target/Target.cpp lldb/source/Target/ThreadPlanStepOut.cpp lldb/source/Target/ThreadPlanTracer.cpp lldb/test/API/lang/cpp/template-arguments/main.cpp lldb/test/Shell/SymbolFile/DWARF/x86/simplified-template-names.cpp llvm/include/llvm/Analysis/CaptureTracking.h llvm/include/llvm/Analysis/DDG.h llvm/include/llvm/Analysis/DependenceAnalysis.h llvm/include/llvm/Analysis/LoopAccessAnalysis.h llvm/include/llvm/Analysis/SparsePropagation.h llvm/include/llvm/AsmParser/LLToken.h llvm/include/llvm/CodeGen/MachinePipeliner.h llvm/include/llvm/CodeGen/MachineScheduler.h llvm/include/llvm/CodeGen/SelectionDAGNodes.h llvm/include/llvm/CodeGen/TargetFrameLowering.h llvm/include/llvm/ExecutionEngine/Orc/Shared/OrcRTBridge.h llvm/include/llvm/ExecutionEngine/Orc/TargetProcess/UnwindInfoManager.h llvm/include/llvm/ExecutionEngine/Orc/UnwindInfoRegistrationPlugin.h llvm/include/llvm/IR/DIBuilder.h llvm/include/llvm/IR/IRBuilder.h llvm/include/llvm/InitializePasses.h llvm/include/llvm/MC/MCContext.h llvm/include/llvm/MC/MCELFStreamer.h llvm/include/llvm/MC/MCParser/MCTargetAsmParser.h llvm/include/llvm/Passes/CodeGenPassBuilder.h llvm/include/llvm/Passes/StandardInstrumentations.h llvm/include/llvm/Support/ModRef.h llvm/include/llvm/Transforms/Utils/SampleProfileLoaderBaseImpl.h llvm/include/llvm/Transforms/Vectorize/SandboxVectorizer/InstrMaps.h llvm/include/llvm/Transforms/Vectorize/SandboxVectorizer/Scheduler.h llvm/lib/Analysis/CaptureTracking.cpp llvm/lib/Analysis/DDG.cpp llvm/lib/Analysis/DependenceAnalysis.cpp llvm/lib/Analysis/DependenceGraphBuilder.cpp llvm/lib/Analysis/InstructionSimplify.cpp llvm/lib/Analysis/LoopAccessAnalysis.cpp llvm/lib/Analysis/LoopCacheAnalysis.cpp llvm/lib/Analysis/ValueTracking.cpp llvm/lib/AsmParser/LLLexer.cpp llvm/lib/AsmParser/LLParser.cpp llvm/lib/Bitcode/Reader/BitcodeReader.cpp llvm/lib/Bitcode/Writer/BitcodeWriter.cpp llvm/lib/CodeGen/CFIFixup.cpp llvm/lib/CodeGen/CodeGen.cpp llvm/lib/CodeGen/MachineFunctionPass.cpp llvm/lib/CodeGen/MachineScheduler.cpp llvm/lib/CodeGen/RegAllocBasic.cpp llvm/lib/CodeGen/RegAllocGreedy.cpp llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp llvm/lib/CodeGen/SelectionDAG/LegalizeTypes.h llvm/lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp llvm/lib/CodeGen/TargetFrameLoweringImpl.cpp llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp llvm/lib/ExecutionEngine/Orc/ExecutorProcessControl.cpp llvm/lib/ExecutionEngine/Orc/LLJIT.cpp llvm/lib/ExecutionEngine/Orc/Shared/OrcRTBridge.cpp llvm/lib/ExecutionEngine/Orc/TargetProcess/UnwindInfoManager.cpp llvm/lib/ExecutionEngine/Orc/UnwindInfoRegistrationPlugin.cpp llvm/lib/Frontend/OpenMP/OMPContext.cpp llvm/lib/Frontend/OpenMP/OMPIRBuilder.cpp llvm/lib/IR/Attributes.cpp llvm/lib/IR/AutoUpgrade.cpp llvm/lib/IR/Constants.cpp llvm/lib/IR/DIBuilder.cpp llvm/lib/IR/DebugInfo.cpp llvm/lib/MC/MCContext.cpp llvm/lib/MC/MCObjectFileInfo.cpp llvm/lib/MC/MCParser/WasmAsmParser.cpp llvm/lib/Object/GOFFObjectFile.cpp llvm/lib/Passes/PassBuilder.cpp llvm/lib/Passes/PassBuilderPipelines.cpp llvm/lib/Support/ModRef.cpp llvm/lib/Support/Unix/Process.inc llvm/lib/Target/AArch64/AArch64FrameLowering.cpp llvm/lib/Target/AArch64/AArch64FrameLowering.h llvm/lib/Target/AArch64/AArch64ISelLowering.cpp llvm/lib/Target/AArch64/AArch64TargetTransformInfo.cpp llvm/lib/Target/AMDGPU/AMDGPU.h llvm/lib/Target/AMDGPU/AMDGPUCallLowering.cpp llvm/lib/Target/AMDGPU/AMDGPULegalizerInfo.cpp llvm/lib/Target/AMDGPU/AMDGPULegalizerInfo.h llvm/lib/Target/AMDGPU/AMDGPULowerBufferFatPointers.cpp llvm/lib/Target/AMDGPU/AMDGPUMemoryUtils.cpp llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp llvm/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp llvm/lib/Target/AMDGPU/Disassembler/AMDGPUDisassembler.cpp llvm/lib/Target/AMDGPU/GCNDPPCombine.cpp llvm/lib/Target/AMDGPU/GCNHazardRecognizer.cpp llvm/lib/Target/AMDGPU/GCNRewritePartialRegUses.cpp llvm/lib/Target/AMDGPU/MCA/AMDGPUCustomBehaviour.cpp llvm/lib/Target/AMDGPU/MCA/AMDGPUCustomBehaviour.h llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUInstPrinter.cpp llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUMCCodeEmitter.cpp llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUMCTargetDesc.h llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUTargetStreamer.cpp llvm/lib/Target/AMDGPU/MCTargetDesc/R600MCTargetDesc.h llvm/lib/Target/AMDGPU/R600ExpandSpecialInstrs.cpp llvm/lib/Target/AMDGPU/R600InstrInfo.cpp llvm/lib/Target/AMDGPU/R600InstrInfo.h llvm/lib/Target/AMDGPU/R600Packetizer.cpp llvm/lib/Target/AMDGPU/SIFoldOperands.cpp llvm/lib/Target/AMDGPU/SIISelLowering.cpp llvm/lib/Target/AMDGPU/SIInsertWaitcnts.cpp llvm/lib/Target/AMDGPU/SIInstrInfo.cpp llvm/lib/Target/AMDGPU/SIInstrInfo.h llvm/lib/Target/AMDGPU/SILoadStoreOptimizer.cpp llvm/lib/Target/AMDGPU/SIOptimizeExecMasking.cpp llvm/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.h llvm/lib/Target/ARM/ARMCallingConv.cpp llvm/lib/Target/ARM/ARMISelLowering.cpp llvm/lib/Target/DirectX/DXILShaderFlags.cpp llvm/lib/Target/DirectX/DXILShaderFlags.h llvm/lib/Target/Hexagon/Disassembler/HexagonDisassembler.cpp llvm/lib/Target/Hexagon/HexagonLoopAlign.cpp llvm/lib/Target/Lanai/Disassembler/LanaiDisassembler.cpp llvm/lib/Target/Lanai/Disassembler/LanaiDisassembler.h llvm/lib/Target/NVPTX/NVPTXCtorDtorLowering.cpp llvm/lib/Target/NVPTX/NVPTXISelLowering.cpp llvm/lib/Target/NVPTX/NVPTXISelLowering.h llvm/lib/Target/NVPTX/NVPTXUtilities.cpp llvm/lib/Target/RISCV/RISCV.h llvm/lib/Target/RISCV/RISCVISelDAGToDAG.cpp llvm/lib/Target/RISCV/RISCVISelLowering.cpp llvm/lib/Target/RISCV/RISCVInstrInfo.h llvm/lib/Target/RISCV/RISCVTargetMachine.cpp llvm/lib/Target/RISCV/RISCVVectorPeephole.cpp llvm/lib/Target/SPIRV/SPIRVEmitIntrinsics.cpp llvm/lib/Target/SystemZ/SystemZAsmPrinter.cpp llvm/lib/Target/WebAssembly/AsmParser/WebAssemblyAsmParser.cpp llvm/lib/Target/WebAssembly/WebAssemblyInstrInfo.h llvm/lib/Target/X86/X86DomainReassignment.cpp llvm/lib/Target/X86/X86ISelLowering.cpp llvm/lib/Transforms/Coroutines/CoroFrame.cpp llvm/lib/Transforms/IPO/AttributorAttributes.cpp llvm/lib/Transforms/IPO/FunctionAttrs.cpp llvm/lib/Transforms/IPO/SCCP.cpp llvm/lib/Transforms/InstCombine/InstCombineCompares.cpp llvm/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp llvm/lib/Transforms/Instrumentation/HWAddressSanitizer.cpp llvm/lib/Transforms/Instrumentation/MemorySanitizer.cpp llvm/lib/Transforms/Scalar/LoopFuse.cpp llvm/lib/Transforms/Scalar/LoopInterchange.cpp llvm/lib/Transforms/Scalar/MemCpyOptimizer.cpp llvm/lib/Transforms/Scalar/SROA.cpp llvm/lib/Transforms/Utils/CodeMoverUtils.cpp llvm/lib/Transforms/Utils/Debugify.cpp llvm/lib/Transforms/Utils/Local.cpp llvm/lib/Transforms/Utils/LoopUnrollAndJam.cpp llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp llvm/lib/Transforms/Vectorize/LoopVectorize.cpp llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp llvm/lib/Transforms/Vectorize/SandboxVectorizer/DependencyGraph.cpp llvm/lib/Transforms/Vectorize/SandboxVectorizer/Legality.cpp llvm/lib/Transforms/Vectorize/SandboxVectorizer/Passes/BottomUpVec.cpp llvm/lib/Transforms/Vectorize/SandboxVectorizer/Scheduler.cpp llvm/lib/Transforms/Vectorize/VPlan.h llvm/lib/Transforms/Vectorize/VPlanRecipes.cpp llvm/test/Analysis/BasicAA/fallback-mayalias.ll llvm/test/Analysis/KernelInfo/launch-bounds/nvptx.ll llvm/test/Analysis/LoopAccessAnalysis/multiple-strides-rt-memory-checks.ll llvm/test/Analysis/LoopAccessAnalysis/non-constant-distance-backward.ll llvm/test/Assembler/memory-attribute-errors.ll llvm/test/Assembler/memory-attribute.ll llvm/test/CodeGen/AArch64/align-down.ll llvm/test/CodeGen/AArch64/fptosi-sat-vector.ll llvm/test/CodeGen/AArch64/fptoui-sat-vector.ll llvm/test/CodeGen/AMDGPU/llvm.amdgcn.mfma.gfx950.bf16.ll llvm/test/CodeGen/AMDGPU/llvm.amdgcn.mfma.gfx950.ll llvm/test/CodeGen/AMDGPU/llvm.amdgcn.mfma.scale.f32.16x16x128.f8f6f4.ll llvm/test/CodeGen/AMDGPU/llvm.amdgcn.mfma.scale.f32.32x32x64.f8f6f4.ll llvm/test/CodeGen/AMDGPU/llvm.amdgcn.smfmac.gfx950.ll llvm/test/CodeGen/AMDGPU/lower-buffer-fat-pointers-pointer-ops.ll llvm/test/CodeGen/AMDGPU/mad-mix-hi.ll llvm/test/CodeGen/AMDGPU/mad-mix-lo.ll llvm/test/CodeGen/AMDGPU/mad-mix.ll llvm/test/CodeGen/DirectX/llc-pipeline.ll llvm/test/CodeGen/NVPTX/addrspacecast.ll llvm/test/CodeGen/NVPTX/annotations.ll llvm/test/CodeGen/NVPTX/lower-ctor-dtor.ll llvm/test/CodeGen/NVPTX/maxclusterrank.ll llvm/test/CodeGen/NVPTX/upgrade-nvvm-annotations.ll llvm/test/CodeGen/RISCV/GlobalISel/add-imm.ll llvm/test/CodeGen/RISCV/GlobalISel/combine-neg-abs.ll llvm/test/CodeGen/RISCV/GlobalISel/double-arith.ll llvm/test/CodeGen/RISCV/GlobalISel/float-arith.ll llvm/test/CodeGen/RISCV/GlobalISel/freeze.ll llvm/test/CodeGen/RISCV/GlobalISel/rotl-rotr.ll llvm/test/CodeGen/RISCV/GlobalISel/rv64zbb.ll llvm/test/CodeGen/RISCV/GlobalISel/rv64zbkb.ll llvm/test/CodeGen/RISCV/GlobalISel/shifts.ll llvm/test/CodeGen/RISCV/GlobalISel/stacksave-stackrestore.ll llvm/test/CodeGen/RISCV/GlobalISel/vararg.ll llvm/test/CodeGen/RISCV/GlobalISel/wide-scalar-shift-by-byte-multiple-legalization.ll llvm/test/CodeGen/RISCV/O0-pipeline.ll llvm/test/CodeGen/RISCV/O3-pipeline.ll llvm/test/CodeGen/RISCV/abds-neg.ll llvm/test/CodeGen/RISCV/abds.ll llvm/test/CodeGen/RISCV/abdu-neg.ll llvm/test/CodeGen/RISCV/abdu.ll llvm/test/CodeGen/RISCV/add-before-shl.ll llvm/test/CodeGen/RISCV/add-imm.ll llvm/test/CodeGen/RISCV/alloca.ll llvm/test/CodeGen/RISCV/alu64.ll llvm/test/CodeGen/RISCV/atomic-rmw-discard.ll llvm/test/CodeGen/RISCV/atomic-rmw.ll llvm/test/CodeGen/RISCV/atomic-signext.ll llvm/test/CodeGen/RISCV/atomicrmw-cond-sub-clamp.ll llvm/test/CodeGen/RISCV/atomicrmw-uinc-udec-wrap.ll llvm/test/CodeGen/RISCV/bf16-promote.ll llvm/test/CodeGen/RISCV/bfloat-convert.ll llvm/test/CodeGen/RISCV/bfloat-mem.ll llvm/test/CodeGen/RISCV/bfloat.ll llvm/test/CodeGen/RISCV/bittest.ll llvm/test/CodeGen/RISCV/branch-on-zero.ll llvm/test/CodeGen/RISCV/callee-saved-fpr32s.ll llvm/test/CodeGen/RISCV/callee-saved-fpr64s.ll llvm/test/CodeGen/RISCV/callee-saved-gprs.ll llvm/test/CodeGen/RISCV/calling-conv-half.ll llvm/test/CodeGen/RISCV/calling-conv-ilp32-ilp32f-common.ll llvm/test/CodeGen/RISCV/calling-conv-ilp32-ilp32f-ilp32d-common.ll llvm/test/CodeGen/RISCV/calling-conv-ilp32.ll llvm/test/CodeGen/RISCV/calling-conv-ilp32d.ll llvm/test/CodeGen/RISCV/calling-conv-ilp32e.ll llvm/test/CodeGen/RISCV/calling-conv-ilp32f-ilp32d-common.ll llvm/test/CodeGen/RISCV/calling-conv-lp64-lp64f-lp64d-common.ll llvm/test/CodeGen/RISCV/calling-conv-lp64.ll llvm/test/CodeGen/RISCV/calling-conv-lp64e.ll llvm/test/CodeGen/RISCV/calling-conv-rv32f-ilp32.ll llvm/test/CodeGen/RISCV/calling-conv-rv32f-ilp32e.ll llvm/test/CodeGen/RISCV/calls.ll llvm/test/CodeGen/RISCV/codemodel-lowering.ll llvm/test/CodeGen/RISCV/condbinops.ll llvm/test/CodeGen/RISCV/condops.ll llvm/test/CodeGen/RISCV/copysign-casts.ll llvm/test/CodeGen/RISCV/ctlz-cttz-ctpop.ll llvm/test/CodeGen/RISCV/double-calling-conv.ll llvm/test/CodeGen/RISCV/double-convert.ll llvm/test/CodeGen/RISCV/double-fcmp-strict.ll llvm/test/CodeGen/RISCV/double-imm.ll llvm/test/CodeGen/RISCV/double-mem.ll llvm/test/CodeGen/RISCV/double-round-conv-sat.ll llvm/test/CodeGen/RISCV/double-select-fcmp.ll llvm/test/CodeGen/RISCV/double-stack-spill-restore.ll llvm/test/CodeGen/RISCV/fastcc-bf16.ll llvm/test/CodeGen/RISCV/fastcc-float.ll llvm/test/CodeGen/RISCV/fastcc-half.ll llvm/test/CodeGen/RISCV/fastcc-without-f-reg.ll llvm/test/CodeGen/RISCV/float-convert.ll llvm/test/CodeGen/RISCV/float-fcmp-strict.ll llvm/test/CodeGen/RISCV/float-select-fcmp.ll llvm/test/CodeGen/RISCV/fold-addi-loadstore.ll llvm/test/CodeGen/RISCV/forced-atomics.ll llvm/test/CodeGen/RISCV/fp-fcanonicalize.ll llvm/test/CodeGen/RISCV/fp128.ll llvm/test/CodeGen/RISCV/fpclamptosat.ll llvm/test/CodeGen/RISCV/get-setcc-result-type.ll llvm/test/CodeGen/RISCV/half-arith.ll llvm/test/CodeGen/RISCV/half-convert-strict.ll llvm/test/CodeGen/RISCV/half-convert.ll llvm/test/CodeGen/RISCV/half-fcmp-strict.ll llvm/test/CodeGen/RISCV/half-intrinsics.ll llvm/test/CodeGen/RISCV/half-mem.ll llvm/test/CodeGen/RISCV/half-select-fcmp.ll llvm/test/CodeGen/RISCV/iabs.ll llvm/test/CodeGen/RISCV/inline-asm-d-constraint-f.ll llvm/test/CodeGen/RISCV/inline-asm-d-modifier-N.ll llvm/test/CodeGen/RISCV/inline-asm-f-constraint-f.ll llvm/test/CodeGen/RISCV/inline-asm-f-modifier-N.ll llvm/test/CodeGen/RISCV/inline-asm-zfinx-constraint-r.ll llvm/test/CodeGen/RISCV/inline-asm-zhinx-constraint-r.ll llvm/test/CodeGen/RISCV/inline-asm.ll llvm/test/CodeGen/RISCV/intrinsic-cttz-elts-vscale.ll llvm/test/CodeGen/RISCV/legalize-fneg.ll llvm/test/CodeGen/RISCV/llvm.exp10.ll llvm/test/CodeGen/RISCV/llvm.frexp.ll llvm/test/CodeGen/RISCV/loop-strength-reduce-add-cheaper-than-mul.ll llvm/test/CodeGen/RISCV/machine-sink-load-immediate.ll llvm/test/CodeGen/RISCV/machinelicm-address-pseudos.ll llvm/test/CodeGen/RISCV/macro-fusion-lui-addi.ll llvm/test/CodeGen/RISCV/mem.ll llvm/test/CodeGen/RISCV/mem64.ll llvm/test/CodeGen/RISCV/memcmp-optsize.ll llvm/test/CodeGen/RISCV/memcmp.ll llvm/test/CodeGen/RISCV/memmove.ll llvm/test/CodeGen/RISCV/memset-pattern.ll llvm/test/CodeGen/RISCV/mul.ll llvm/test/CodeGen/RISCV/neg-abs.ll llvm/test/CodeGen/RISCV/orc-b-patterns.ll llvm/test/CodeGen/RISCV/overflow-intrinsics.ll llvm/test/CodeGen/RISCV/pr51206.ll llvm/test/CodeGen/RISCV/pr58511.ll llvm/test/CodeGen/RISCV/pr63816.ll llvm/test/CodeGen/RISCV/pr69586.ll llvm/test/CodeGen/RISCV/push-pop-popret.ll llvm/test/CodeGen/RISCV/riscv-codegenprepare-asm.ll llvm/test/CodeGen/RISCV/rotl-rotr.ll llvm/test/CodeGen/RISCV/rv32-inline-asm-pairs.ll llvm/test/CodeGen/RISCV/rv32zbb.ll llvm/test/CodeGen/RISCV/rv32zbs.ll llvm/test/CodeGen/RISCV/rv64-double-convert.ll llvm/test/CodeGen/RISCV/rv64-half-convert.ll llvm/test/CodeGen/RISCV/rv64-inline-asm-pairs.ll llvm/test/CodeGen/RISCV/rv64-trampoline.ll llvm/test/CodeGen/RISCV/rv64i-demanded-bits.ll llvm/test/CodeGen/RISCV/rv64zbkb.ll llvm/test/CodeGen/RISCV/rvv/active_lane_mask.ll llvm/test/CodeGen/RISCV/rvv/alloca-load-store-scalable-array.ll llvm/test/CodeGen/RISCV/rvv/alloca-load-store-scalable-struct.ll llvm/test/CodeGen/RISCV/rvv/bitreverse-sdnode.ll llvm/test/CodeGen/RISCV/rvv/bitreverse-vp.ll llvm/test/CodeGen/RISCV/rvv/bswap-sdnode.ll llvm/test/CodeGen/RISCV/rvv/bswap-vp.ll llvm/test/CodeGen/RISCV/rvv/calling-conv-fastcc.ll llvm/test/CodeGen/RISCV/rvv/calling-conv.ll llvm/test/CodeGen/RISCV/rvv/ceil-vp.ll llvm/test/CodeGen/RISCV/rvv/combine-store-extract-crash.ll llvm/test/CodeGen/RISCV/rvv/concat-vector-insert-elt.ll llvm/test/CodeGen/RISCV/rvv/constant-folding-crash.ll llvm/test/CodeGen/RISCV/rvv/ctlz-sdnode.ll llvm/test/CodeGen/RISCV/rvv/ctlz-vp.ll llvm/test/CodeGen/RISCV/rvv/cttz-sdnode.ll llvm/test/CodeGen/RISCV/rvv/cttz-vp.ll llvm/test/CodeGen/RISCV/rvv/dont-sink-splat-operands.ll llvm/test/CodeGen/RISCV/rvv/double-round-conv.ll llvm/test/CodeGen/RISCV/rvv/expandload.ll llvm/test/CodeGen/RISCV/rvv/extractelt-fp.ll llvm/test/CodeGen/RISCV/rvv/extractelt-i1.ll llvm/test/CodeGen/RISCV/rvv/extractelt-int-rv64.ll llvm/test/CodeGen/RISCV/rvv/fceil-constrained-sdnode.ll llvm/test/CodeGen/RISCV/rvv/fceil-sdnode.ll llvm/test/CodeGen/RISCV/rvv/ffloor-constrained-sdnode.ll llvm/test/CodeGen/RISCV/rvv/ffloor-sdnode.ll llvm/test/CodeGen/RISCV/rvv/fixed-vector-i8-index-cornercase.ll llvm/test/CodeGen/RISCV/rvv/fixed-vectors-abs-vp.ll llvm/test/CodeGen/RISCV/rvv/fixed-vectors-bitcast-large-vector.ll llvm/test/CodeGen/RISCV/rvv/fixed-vectors-bitreverse-vp.ll llvm/test/CodeGen/RISCV/rvv/fixed-vectors-bswap-vp.ll llvm/test/CodeGen/RISCV/rvv/fixed-vectors-buildvec-of-binop.ll llvm/test/CodeGen/RISCV/rvv/fixed-vectors-calling-conv-fastcc.ll llvm/test/CodeGen/RISCV/rvv/fixed-vectors-calling-conv.ll llvm/test/CodeGen/RISCV/rvv/fixed-vectors-ceil-vp.ll llvm/test/CodeGen/RISCV/rvv/fixed-vectors-ctlz-vp.ll llvm/test/CodeGen/RISCV/rvv/fixed-vectors-ctpop-vp.ll llvm/test/CodeGen/RISCV/rvv/fixed-vectors-ctpop.ll llvm/test/CodeGen/RISCV/rvv/fixed-vectors-cttz-vp.ll llvm/test/CodeGen/RISCV/rvv/fixed-vectors-cttz.ll llvm/test/CodeGen/RISCV/rvv/fixed-vectors-deinterleave-load.ll llvm/test/CodeGen/RISCV/rvv/fixed-vectors-elen.ll llvm/test/CodeGen/RISCV/rvv/fixed-vectors-extload-truncstore.ll llvm/test/CodeGen/RISCV/rvv/fixed-vectors-extract-i1.ll llvm/test/CodeGen/RISCV/rvv/fixed-vectors-extract-subvector.ll llvm/test/CodeGen/RISCV/rvv/fixed-vectors-extract.ll llvm/test/CodeGen/RISCV/rvv/fixed-vectors-fceil-constrained-sdnode.ll llvm/test/CodeGen/RISCV/rvv/fixed-vectors-ffloor-constrained-sdnode.ll llvm/test/CodeGen/RISCV/rvv/fixed-vectors-floor-vp.ll llvm/test/CodeGen/RISCV/rvv/fixed-vectors-fmaximum-vp.ll llvm/test/CodeGen/RISCV/rvv/fixed-vectors-fmaximum.ll llvm/test/CodeGen/RISCV/rvv/fixed-vectors-fminimum-vp.ll llvm/test/CodeGen/RISCV/rvv/fixed-vectors-fminimum.ll llvm/test/CodeGen/RISCV/rvv/fixed-vectors-fnearbyint-constrained-sdnode.ll llvm/test/CodeGen/RISCV/rvv/fixed-vectors-fp-buildvec.ll llvm/test/CodeGen/RISCV/rvv/fixed-vectors-fp-interleave.ll llvm/test/CodeGen/RISCV/rvv/fixed-vectors-fp-setcc.ll llvm/test/CodeGen/RISCV/rvv/fixed-vectors-fp-shuffles.ll llvm/test/CodeGen/RISCV/rvv/fixed-vectors-fp-vrgather.ll llvm/test/CodeGen/RISCV/rvv/fixed-vectors-fp.ll llvm/test/CodeGen/RISCV/rvv/fixed-vectors-fpext-vp.ll llvm/test/CodeGen/RISCV/rvv/fixed-vectors-fpowi.ll llvm/test/CodeGen/RISCV/rvv/fixed-vectors-fptosi-vp.ll llvm/test/CodeGen/RISCV/rvv/fixed-vectors-fptoui-vp.ll llvm/test/CodeGen/RISCV/rvv/fixed-vectors-fptrunc-vp.ll llvm/test/CodeGen/RISCV/rvv/fixed-vectors-fround-constrained-sdnode.ll llvm/test/CodeGen/RISCV/rvv/fixed-vectors-fround.ll llvm/test/CodeGen/RISCV/rvv/fixed-vectors-froundeven-constrained-sdnode.ll llvm/test/CodeGen/RISCV/rvv/fixed-vectors-froundeven.ll llvm/test/CodeGen/RISCV/rvv/fixed-vectors-insert-subvector.ll llvm/test/CodeGen/RISCV/rvv/fixed-vectors-insert.ll llvm/test/CodeGen/RISCV/rvv/fixed-vectors-int-buildvec.ll llvm/test/CodeGen/RISCV/rvv/fixed-vectors-int-interleave.ll llvm/test/CodeGen/RISCV/rvv/fixed-vectors-int-shuffles.ll llvm/test/CodeGen/RISCV/rvv/fixed-vectors-int-vrgather.ll llvm/test/CodeGen/RISCV/rvv/fixed-vectors-int.ll llvm/test/CodeGen/RISCV/rvv/fixed-vectors-interleaved-access-zve32x.ll llvm/test/CodeGen/RISCV/rvv/fixed-vectors-interleaved-access.ll llvm/test/CodeGen/RISCV/rvv/fixed-vectors-llrint.ll llvm/test/CodeGen/RISCV/rvv/fixed-vectors-lrint.ll llvm/test/CodeGen/RISCV/rvv/fixed-vectors-mask-buildvec.ll llvm/test/CodeGen/RISCV/rvv/fixed-vectors-mask-splat.ll llvm/test/CodeGen/RISCV/rvv/fixed-vectors-masked-gather.ll llvm/test/CodeGen/RISCV/rvv/fixed-vectors-masked-load-fp.ll llvm/test/CodeGen/RISCV/rvv/fixed-vectors-masked-load-int.ll llvm/test/CodeGen/RISCV/rvv/fixed-vectors-masked-scatter.ll llvm/test/CodeGen/RISCV/rvv/fixed-vectors-masked-store-fp.ll llvm/test/CodeGen/RISCV/rvv/fixed-vectors-masked-store-int.ll llvm/test/CodeGen/RISCV/rvv/fixed-vectors-nearbyint-vp.ll llvm/test/CodeGen/RISCV/rvv/fixed-vectors-reduction-formation.ll llvm/test/CodeGen/RISCV/rvv/fixed-vectors-reduction-fp-vp.ll llvm/test/CodeGen/RISCV/rvv/fixed-vectors-reduction-fp.ll llvm/test/CodeGen/RISCV/rvv/fixed-vectors-reduction-int-vp.ll llvm/test/CodeGen/RISCV/rvv/fixed-vectors-reduction-int.ll llvm/test/CodeGen/RISCV/rvv/fixed-vectors-rint-vp.ll llvm/test/CodeGen/RISCV/rvv/fixed-vectors-round-vp.ll llvm/test/CodeGen/RISCV/rvv/fixed-vectors-roundeven-vp.ll llvm/test/CodeGen/RISCV/rvv/fixed-vectors-roundtozero-vp.ll llvm/test/CodeGen/RISCV/rvv/fixed-vectors-select-addsub.ll llvm/test/CodeGen/RISCV/rvv/fixed-vectors-setcc-fp-vp.ll llvm/test/CodeGen/RISCV/rvv/fixed-vectors-setcc-int-vp.ll llvm/test/CodeGen/RISCV/rvv/fixed-vectors-sext-vp.ll llvm/test/CodeGen/RISCV/rvv/fixed-vectors-shuffle-changes-length.ll llvm/test/CodeGen/RISCV/rvv/fixed-vectors-shuffle-concat.ll llvm/test/CodeGen/RISCV/rvv/fixed-vectors-shuffle-deinterleave.ll llvm/test/CodeGen/RISCV/rvv/fixed-vectors-shuffle-exact-vlen.ll llvm/test/CodeGen/RISCV/rvv/fixed-vectors-shuffle-reverse.ll llvm/test/CodeGen/RISCV/rvv/fixed-vectors-shuffle-rotate.ll llvm/test/CodeGen/RISCV/rvv/fixed-vectors-shufflevector-vnsrl.ll llvm/test/CodeGen/RISCV/rvv/fixed-vectors-sitofp-vp.ll llvm/test/CodeGen/RISCV/rvv/fixed-vectors-store-merge-crash.ll llvm/test/CodeGen/RISCV/rvv/fixed-vectors-strided-load-store-asm.ll llvm/test/CodeGen/RISCV/rvv/fixed-vectors-strided-vpload.ll llvm/test/CodeGen/RISCV/rvv/fixed-vectors-strided-vpstore.ll llvm/test/CodeGen/RISCV/rvv/fixed-vectors-trunc-vp.ll llvm/test/CodeGen/RISCV/rvv/fixed-vectors-uitofp-vp.ll llvm/test/CodeGen/RISCV/rvv/fixed-vectors-unaligned.ll llvm/test/CodeGen/RISCV/rvv/fixed-vectors-vadd-vp.ll llvm/test/CodeGen/RISCV/rvv/fixed-vectors-vcopysign-vp.ll llvm/test/CodeGen/RISCV/rvv/fixed-vectors-vfabs-vp.ll llvm/test/CodeGen/RISCV/rvv/fixed-vectors-vfma-vp.ll llvm/test/CodeGen/RISCV/rvv/fixed-vectors-vfmax-vp.ll llvm/test/CodeGen/RISCV/rvv/fixed-vectors-vfmin-vp.ll llvm/test/CodeGen/RISCV/rvv/fixed-vectors-vfmuladd-vp.ll llvm/test/CodeGen/RISCV/rvv/fixed-vectors-vfneg-vp.ll llvm/test/CodeGen/RISCV/rvv/fixed-vectors-vfsqrt-vp.ll llvm/test/CodeGen/RISCV/rvv/fixed-vectors-vmax-vp.ll llvm/test/CodeGen/RISCV/rvv/fixed-vectors-vmaxu-vp.ll llvm/test/CodeGen/RISCV/rvv/fixed-vectors-vmin-vp.ll llvm/test/CodeGen/RISCV/rvv/fixed-vectors-vminu-vp.ll llvm/test/CodeGen/RISCV/rvv/fixed-vectors-vpgather.ll llvm/test/CodeGen/RISCV/rvv/fixed-vectors-vpload.ll llvm/test/CodeGen/RISCV/rvv/fixed-vectors-vpmerge.ll llvm/test/CodeGen/RISCV/rvv/fixed-vectors-vpscatter.ll llvm/test/CodeGen/RISCV/rvv/fixed-vectors-vpstore.ll llvm/test/CodeGen/RISCV/rvv/fixed-vectors-vsadd-vp.ll llvm/test/CodeGen/RISCV/rvv/fixed-vectors-vsaddu-vp.ll llvm/test/CodeGen/RISCV/rvv/fixed-vectors-vscale-range.ll llvm/test/CodeGen/RISCV/rvv/fixed-vectors-vselect-vp.ll llvm/test/CodeGen/RISCV/rvv/fixed-vectors-vselect.ll llvm/test/CodeGen/RISCV/rvv/fixed-vectors-vssub-vp.ll llvm/test/CodeGen/RISCV/rvv/fixed-vectors-vssubu-vp.ll llvm/test/CodeGen/RISCV/rvv/fixed-vectors-vwadd-mask.ll llvm/test/CodeGen/RISCV/rvv/fixed-vectors-vwadd.ll llvm/test/CodeGen/RISCV/rvv/fixed-vectors-vwaddu.ll llvm/test/CodeGen/RISCV/rvv/fixed-vectors-vwmul.ll llvm/test/CodeGen/RISCV/rvv/fixed-vectors-vwmulsu.ll llvm/test/CodeGen/RISCV/rvv/fixed-vectors-vwmulu.ll llvm/test/CodeGen/RISCV/rvv/fixed-vectors-vwsub-mask.ll llvm/test/CodeGen/RISCV/rvv/fixed-vectors-vwsub.ll llvm/test/CodeGen/RISCV/rvv/fixed-vectors-vwsubu.ll llvm/test/CodeGen/RISCV/rvv/fixed-vectors-zext-vp.ll llvm/test/CodeGen/RISCV/rvv/float-round-conv.ll llvm/test/CodeGen/RISCV/rvv/floor-vp.ll llvm/test/CodeGen/RISCV/rvv/fmaximum-sdnode.ll llvm/test/CodeGen/RISCV/rvv/fmaximum-vp.ll llvm/test/CodeGen/RISCV/rvv/fminimum-sdnode.ll llvm/test/CodeGen/RISCV/rvv/fminimum-vp.ll llvm/test/CodeGen/RISCV/rvv/fnearbyint-constrained-sdnode.ll llvm/test/CodeGen/RISCV/rvv/fnearbyint-sdnode.ll llvm/test/CodeGen/RISCV/rvv/fold-scalar-load-crash.ll llvm/test/CodeGen/RISCV/rvv/fold-vector-cmp.ll llvm/test/CodeGen/RISCV/rvv/fpclamptosat_vec.ll llvm/test/CodeGen/RISCV/rvv/frm-insert.ll llvm/test/CodeGen/RISCV/rvv/fround-constrained-sdnode.ll llvm/test/CodeGen/RISCV/rvv/fround-sdnode.ll llvm/test/CodeGen/RISCV/rvv/froundeven-constrained-sdnode.ll llvm/test/CodeGen/RISCV/rvv/froundeven-sdnode.ll llvm/test/CodeGen/RISCV/rvv/fshr-fshl-vp.ll llvm/test/CodeGen/RISCV/rvv/half-round-conv.ll llvm/test/CodeGen/RISCV/rvv/implicit-def-copy.ll llvm/test/CodeGen/RISCV/rvv/localvar.ll llvm/test/CodeGen/RISCV/rvv/memcpy-inline.ll llvm/test/CodeGen/RISCV/rvv/memory-args.ll llvm/test/CodeGen/RISCV/rvv/mgather-sdnode.ll llvm/test/CodeGen/RISCV/rvv/mscatter-sdnode.ll llvm/test/CodeGen/RISCV/rvv/mutate-prior-vsetvli-avl.ll llvm/test/CodeGen/RISCV/rvv/named-vector-shuffle-reverse.ll llvm/test/CodeGen/RISCV/rvv/nearbyint-vp.ll llvm/test/CodeGen/RISCV/rvv/no-reserved-frame.ll llvm/test/CodeGen/RISCV/rvv/pass-fast-math-flags-sdnode.ll llvm/test/CodeGen/RISCV/rvv/pr125306.ll llvm/test/CodeGen/RISCV/rvv/pr63596.ll llvm/test/CodeGen/RISCV/rvv/pr95865.ll llvm/test/CodeGen/RISCV/rvv/reg-alloc-reserve-bp.ll llvm/test/CodeGen/RISCV/rvv/round-vp.ll llvm/test/CodeGen/RISCV/rvv/roundeven-vp.ll llvm/test/CodeGen/RISCV/rvv/roundtozero-vp.ll llvm/test/CodeGen/RISCV/rvv/rvv-args-by-mem.ll llvm/test/CodeGen/RISCV/rvv/rvv-peephole-vmerge-vops-mir.ll llvm/test/CodeGen/RISCV/rvv/rvv-peephole-vmerge-vops.ll llvm/test/CodeGen/RISCV/rvv/setcc-fp-vp.ll llvm/test/CodeGen/RISCV/rvv/setcc-int-vp.ll llvm/test/CodeGen/RISCV/rvv/shrinkwrap.ll llvm/test/CodeGen/RISCV/rvv/sink-splat-operands.ll llvm/test/CodeGen/RISCV/rvv/stepvector.ll llvm/test/CodeGen/RISCV/rvv/strided-vpload-vpstore-output.ll llvm/test/CodeGen/RISCV/rvv/strided-vpload.ll llvm/test/CodeGen/RISCV/rvv/strided-vpstore.ll llvm/test/CodeGen/RISCV/rvv/umulo-sdnode.ll llvm/test/CodeGen/RISCV/rvv/urem-seteq-vec.ll llvm/test/CodeGen/RISCV/rvv/vadd-vp.ll llvm/test/CodeGen/RISCV/rvv/vector-deinterleave-fixed.ll llvm/test/CodeGen/RISCV/rvv/vector-deinterleave-load.ll llvm/test/CodeGen/RISCV/rvv/vector-deinterleave.ll llvm/test/CodeGen/RISCV/rvv/vector-extract-last-active.ll llvm/test/CodeGen/RISCV/rvv/vector-interleave-fixed.ll llvm/test/CodeGen/RISCV/rvv/vector-interleave.ll llvm/test/CodeGen/RISCV/rvv/vfma-vp-combine.ll llvm/test/CodeGen/RISCV/rvv/vfma-vp.ll llvm/test/CodeGen/RISCV/rvv/vfmuladd-vp.ll llvm/test/CodeGen/RISCV/rvv/vfptrunc-vp.ll llvm/test/CodeGen/RISCV/rvv/vfsqrt-vp.ll llvm/test/CodeGen/RISCV/rvv/vl-opt-instrs.ll llvm/test/CodeGen/RISCV/rvv/vleff-vlseg2ff-output.ll llvm/test/CodeGen/RISCV/rvv/vmax-vp.ll llvm/test/CodeGen/RISCV/rvv/vmaxu-vp.ll llvm/test/CodeGen/RISCV/rvv/vmin-vp.ll llvm/test/CodeGen/RISCV/rvv/vminu-vp.ll llvm/test/CodeGen/RISCV/rvv/vmseq.ll llvm/test/CodeGen/RISCV/rvv/vmsge.ll llvm/test/CodeGen/RISCV/rvv/vmsgeu.ll llvm/test/CodeGen/RISCV/rvv/vmsgt.ll llvm/test/CodeGen/RISCV/rvv/vmsgtu.ll llvm/test/CodeGen/RISCV/rvv/vmsle.ll llvm/test/CodeGen/RISCV/rvv/vmsleu.ll llvm/test/CodeGen/RISCV/rvv/vmslt.ll llvm/test/CodeGen/RISCV/rvv/vmsltu.ll llvm/test/CodeGen/RISCV/rvv/vmsne.ll llvm/test/CodeGen/RISCV/rvv/vmv.s.x.ll llvm/test/CodeGen/RISCV/rvv/vp-combine-store-reverse.ll llvm/test/CodeGen/RISCV/rvv/vp-cttz-elts.ll llvm/test/CodeGen/RISCV/rvv/vp-vector-interleaved-access.ll llvm/test/CodeGen/RISCV/rvv/vpgather-sdnode.ll llvm/test/CodeGen/RISCV/rvv/vpload.ll llvm/test/CodeGen/RISCV/rvv/vpmerge-sdnode.ll llvm/test/CodeGen/RISCV/rvv/vpscatter-sdnode.ll llvm/test/CodeGen/RISCV/rvv/vpstore.ll llvm/test/CodeGen/RISCV/rvv/vreductions-fp-sdnode.ll llvm/test/CodeGen/RISCV/rvv/vrgatherei16-subreg-liveness.ll llvm/test/CodeGen/RISCV/rvv/vscale-vw-web-simplification.ll llvm/test/CodeGen/RISCV/rvv/vselect-fp.ll llvm/test/CodeGen/RISCV/rvv/vselect-vp.ll llvm/test/CodeGen/RISCV/rvv/vsetvli-insert-crossbb.ll llvm/test/CodeGen/RISCV/rvv/vsetvli-insert.ll llvm/test/CodeGen/RISCV/rvv/vsetvli-regression.ll llvm/test/CodeGen/RISCV/rvv/vtrunc-vp.ll llvm/test/CodeGen/RISCV/rvv/vwadd-mask-sdnode.ll llvm/test/CodeGen/RISCV/rvv/vwadd-sdnode.ll llvm/test/CodeGen/RISCV/rvv/vwsub-mask-sdnode.ll llvm/test/CodeGen/RISCV/rvv/vxrm-insert-out-of-loop.ll llvm/test/CodeGen/RISCV/rvv/vxrm-insert.ll llvm/test/CodeGen/RISCV/rvv/wrong-chain-fixed-load.ll llvm/test/CodeGen/RISCV/scmp.ll llvm/test/CodeGen/RISCV/select-and.ll llvm/test/CodeGen/RISCV/select-bare.ll llvm/test/CodeGen/RISCV/select-cc.ll llvm/test/CodeGen/RISCV/select-constant-xor.ll llvm/test/CodeGen/RISCV/select-optimize-multiple.ll llvm/test/CodeGen/RISCV/select-or.ll llvm/test/CodeGen/RISCV/sextw-removal.ll llvm/test/CodeGen/RISCV/shift-amount-mod.ll llvm/test/CodeGen/RISCV/shifts.ll llvm/test/CodeGen/RISCV/shl-cttz.ll llvm/test/CodeGen/RISCV/split-offsets.ll llvm/test/CodeGen/RISCV/srem-seteq-illegal-types.ll llvm/test/CodeGen/RISCV/srem-vector-lkk.ll llvm/test/CodeGen/RISCV/stack-slot-size.ll llvm/test/CodeGen/RISCV/stack-store-check.ll llvm/test/CodeGen/RISCV/tail-calls.ll llvm/test/CodeGen/RISCV/ucmp.ll llvm/test/CodeGen/RISCV/unaligned-load-store.ll llvm/test/CodeGen/RISCV/urem-seteq-illegal-types.ll llvm/test/CodeGen/RISCV/urem-vector-lkk.ll llvm/test/CodeGen/RISCV/vararg.ll llvm/test/CodeGen/RISCV/wide-scalar-shift-by-byte-multiple-legalization.ll llvm/test/CodeGen/RISCV/wide-scalar-shift-legalization.ll llvm/test/CodeGen/RISCV/xaluo.ll llvm/test/CodeGen/RISCV/xtheadmemidx.ll llvm/test/CodeGen/RISCV/xtheadmempair.ll llvm/test/CodeGen/RISCV/zbb-logic-neg-imm.ll llvm/test/CodeGen/RISCV/zdinx-asm-constraint.ll llvm/test/CodeGen/RISCV/zdinx-boundary-check.ll llvm/test/CodeGen/X86/2011-10-27-tstore.ll llvm/test/CodeGen/X86/align-down.ll llvm/test/CodeGen/X86/any_extend_vector_inreg_of_broadcast.ll llvm/test/CodeGen/X86/any_extend_vector_inreg_of_broadcast_from_memory.ll llvm/test/CodeGen/X86/avx512fp16-mov.ll llvm/test/CodeGen/X86/coalescer-subreg.ll llvm/test/CodeGen/X86/code_placement_eh.ll llvm/test/CodeGen/X86/codegen-prepare-cast.ll llvm/test/CodeGen/X86/copy-low-subvec-elt-to-high-subvec-elt.ll llvm/test/CodeGen/X86/discontiguous-loops.ll llvm/test/CodeGen/X86/early-ifcvt-crash.ll llvm/test/CodeGen/X86/expand-vp-cast-intrinsics.ll llvm/test/CodeGen/X86/fast-isel-stackcheck.ll llvm/test/CodeGen/X86/fp-fold.ll llvm/test/CodeGen/X86/fp-stack-O0-crash.ll llvm/test/CodeGen/X86/fp-stack.ll llvm/test/CodeGen/X86/insert-positions.ll llvm/test/CodeGen/X86/legalize-sub-zero-2.ll llvm/test/CodeGen/X86/licm-symbol.ll llvm/test/CodeGen/X86/liveness-local-regalloc.ll llvm/test/CodeGen/X86/lsr-overflow.ll llvm/test/CodeGen/X86/matrix-multiply.ll llvm/test/CodeGen/X86/not-of-dec.ll llvm/test/CodeGen/X86/pr51615.ll llvm/test/CodeGen/X86/vec-strict-cmp-128-fp16.ll llvm/test/CodeGen/X86/vec-strict-cmp-512-skx.ll llvm/test/CodeGen/X86/vec-strict-fptoint-128.ll llvm/test/CodeGen/X86/vec-strict-fptoint-256.ll llvm/test/CodeGen/X86/vec-strict-fptoint-512.ll llvm/test/CodeGen/X86/vector-half-conversions.ll llvm/test/CodeGen/X86/vector-interleaved-load-i32-stride-6.ll llvm/test/CodeGen/X86/vector-shuffle-128-v4.ll llvm/test/CodeGen/X86/vector-shuffle-256-v16.ll llvm/test/CodeGen/X86/vector-shuffle-combining-avx.ll llvm/test/CodeGen/X86/vselect-avx.ll llvm/test/CodeGen/X86/zero_extend_vector_inreg_of_broadcast.ll llvm/test/CodeGen/X86/zero_extend_vector_inreg_of_broadcast_from_memory.ll llvm/test/CodeGen/XCore/2010-02-25-LSR-Crash.ll llvm/test/Instrumentation/HWAddressSanitizer/pgo-opt-out.ll llvm/test/Instrumentation/MemorySanitizer/AArch64/arm64-cvt.ll llvm/test/Instrumentation/MemorySanitizer/AArch64/arm64-vadd.ll llvm/test/Instrumentation/MemorySanitizer/AArch64/arm64-vcvt.ll llvm/test/Instrumentation/MemorySanitizer/AArch64/arm64-vmovn.ll llvm/test/Instrumentation/MemorySanitizer/AArch64/arm64-vshift.ll llvm/test/Instrumentation/MemorySanitizer/AArch64/qshrn.ll llvm/test/Instrumentation/MemorySanitizer/scmp.ll llvm/test/Instrumentation/MemorySanitizer/ucmp.ll llvm/test/Other/new-pm-O0-defaults.ll llvm/test/Other/new-pm-lto-defaults.ll llvm/test/Transforms/FunctionAttrs/2009-01-02-LocalStores.ll llvm/test/Transforms/FunctionAttrs/arg_returned.ll llvm/test/Transforms/FunctionAttrs/nocapture.ll llvm/test/Transforms/FunctionAttrs/nonnull.ll llvm/test/Transforms/FunctionAttrs/noundef.ll llvm/test/Transforms/FunctionAttrs/readattrs.ll llvm/test/Transforms/FunctionAttrs/stats.ll llvm/test/Transforms/InstCombine/add2.ll llvm/test/Transforms/InstCombine/ashr-lshr.ll llvm/test/Transforms/InstCombine/icmp-dom.ll llvm/test/Transforms/InstCombine/known-bits.ll llvm/test/Transforms/LoopVectorize/AArch64/partial-reduce-chained.ll llvm/test/Transforms/NewGVN/2009-11-12-MemDepMallocBitCast.ll llvm/test/Transforms/PhaseOrdering/AArch64/block_scaling_decompr_8bit.ll llvm/test/Transforms/PhaseOrdering/bitcast-store-branch.ll llvm/test/Transforms/PhaseOrdering/dce-after-argument-promotion-loads.ll llvm/test/Transforms/PhaseOrdering/enable-loop-header-duplication-oz.ll llvm/test/Transforms/SandboxVectorizer/bottomup_basic.ll llvm/test/Transforms/SandboxVectorizer/bottomup_seed_slice_pow2.ll llvm/test/Transforms/SandboxVectorizer/repeated_instrs.ll llvm/test/Transforms/SandboxVectorizer/scheduler.ll llvm/tools/llvm-jitlink/llvm-jitlink-executor/llvm-jitlink-executor.cpp llvm/tools/llvm-jitlink/llvm-jitlink.cpp llvm/unittests/Analysis/CaptureTrackingTest.cpp llvm/unittests/IR/IRBuilderTest.cpp llvm/unittests/Support/ModRefTest.cpp llvm/unittests/Transforms/Utils/CloningTest.cpp llvm/unittests/Transforms/Vectorize/SandboxVectorizer/DependencyGraphTest.cpp llvm/unittests/Transforms/Vectorize/SandboxVectorizer/InstrMapsTest.cpp llvm/unittests/Transforms/Vectorize/SandboxVectorizer/SchedulerTest.cpp llvm/utils/TableGen/InstrInfoEmitter.cpp llvm/utils/TableGen/RegisterInfoEmitter.cpp mlir/include/mlir-c/IR.h mlir/include/mlir/Dialect/Affine/Passes.h mlir/include/mlir/Dialect/Bufferization/Transforms/Passes.h mlir/include/mlir/Dialect/DLTI/DLTI.h mlir/include/mlir/Dialect/Mesh/IR/MeshOps.h mlir/include/mlir/Dialect/Mesh/Interfaces/ShardingInterface.h mlir/include/mlir/Dialect/Tensor/IR/Tensor.h mlir/include/mlir/InitAllDialects.h mlir/lib/Analysis/DataFlow/IntegerRangeAnalysis.cpp mlir/lib/Bindings/Python/IRCore.cpp mlir/lib/Bytecode/Writer/BytecodeWriter.cpp mlir/lib/CAPI/IR/IR.cpp mlir/lib/Conversion/ArithToLLVM/ArithToLLVM.cpp mlir/lib/Conversion/TosaToLinalg/TosaToLinalg.cpp mlir/lib/Dialect/Affine/Transforms/LoopFusion.cpp mlir/lib/Dialect/Affine/Transforms/LoopUnroll.cpp mlir/lib/Dialect/DLTI/DLTI.cpp mlir/lib/Dialect/Linalg/Transforms/DataLayoutPropagation.cpp mlir/lib/Dialect/Mesh/IR/MeshOps.cpp mlir/lib/Dialect/Mesh/Interfaces/ShardingInterface.cpp mlir/lib/Dialect/Mesh/Transforms/ShardingPropagation.cpp mlir/lib/Dialect/Mesh/Transforms/Spmdization.cpp mlir/lib/Dialect/Tensor/Extensions/MeshShardingExtensions.cpp mlir/lib/Dialect/Tensor/IR/TensorOps.cpp mlir/lib/Dialect/Tosa/IR/TosaCanonicalizations.cpp mlir/lib/Dialect/Tosa/IR/TosaOps.cpp mlir/lib/Dialect/Tosa/Transforms/TosaReduceTransposes.cpp mlir/lib/Dialect/Vector/IR/VectorOps.cpp mlir/lib/IR/AsmPrinter.cpp mlir/lib/Target/LLVMIR/Dialect/NVVM/NVVMToLLVMIRTranslation.cpp mlir/lib/Target/LLVMIR/ModuleTranslation.cpp mlir/tools/mlir-tblgen/OpDocGen.cpp mlir/tools/mlir-tblgen/OpInterfacesGen.cpp mlir/tools/mlir-tblgen/PassDocGen.cpp mlir/unittests/Bytecode/BytecodeTest.cpp offload/include/Shared/Environment.h offload/plugins-nextgen/common/include/GlobalHandler.h offload/plugins-nextgen/common/include/RPC.h offload/plugins-nextgen/common/src/GlobalHandler.cpp offload/plugins-nextgen/common/src/PluginInterface.cpp offload/plugins-nextgen/common/src/RPC.cpp offload/test/offloading/pgo1.c utils/bazel/llvm-project-overlay/llvm/include/llvm/Config/config.h llvm/include/llvm/IR/DroppedVariableStats.h llvm/include/llvm/IR/DroppedVariableStatsIR.h llvm/lib/IR/DroppedVariableStatsIR.cpp

The following files introduce new uses of undef:

  • llvm/test/CodeGen/RISCV/rvv/fixed-vectors-shuffle-rotate.ll

Undef is now deprecated and should only be used in the rare cases where no replacement is possible. For example, a load of uninitialized memory yields undef. You should use poison values for placeholders instead.

In tests, avoid using undef and having tests that trigger undefined behavior. If you need an operand with some unimportant value, you can add a new argument to the function and use that instead.

For example, this is considered a bad practice:

define void @fn() {
  ...
  br i1 undef, ...
}

Please use the following instead:

define void @fn(i1 %cond) {
  ...
  br i1 %cond, ...
}

Please refer to the Undefined Behavior Manual for more information.

@flovent
Copy link
Contributor Author

flovent commented Feb 13, 2025

new PR: #127049

@flovent flovent deleted the blockInCriticalSectionFP branch February 18, 2025 13:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
clang:static analyzer clang Clang issues not falling into any other category
Projects
None yet
Development

Successfully merging this pull request may close these issues.

clang-tidy problem on read non-blocking file descriptor