File tree Expand file tree Collapse file tree 3 files changed +127
-44
lines changed
lib/Transforms/Instrumentation
test/Instrumentation/MemorySanitizer/AArch64 Expand file tree Collapse file tree 3 files changed +127
-44
lines changed Original file line number Diff line number Diff line change @@ -347,12 +347,10 @@ template <> struct MappingTraits<ModuleSummaryIndex> {
347347 index.WithGlobalValueDeadStripping );
348348
349349 if (io.outputting ()) {
350- std::vector<StringRef> CfiFunctionDefs (index.CfiFunctionDefs .begin (),
351- index.CfiFunctionDefs .end ());
350+ auto CfiFunctionDefs = index.CfiFunctionDefs .symbols ();
352351 llvm::sort (CfiFunctionDefs);
353352 io.mapOptional (" CfiFunctionDefs" , CfiFunctionDefs);
354- std::vector<StringRef> CfiFunctionDecls (index.CfiFunctionDecls .begin (),
355- index.CfiFunctionDecls .end ());
353+ auto CfiFunctionDecls (index.CfiFunctionDecls .symbols ());
356354 llvm::sort (CfiFunctionDecls);
357355 io.mapOptional (" CfiFunctionDecls" , CfiFunctionDecls);
358356 } else {
Original file line number Diff line number Diff line change @@ -3129,6 +3129,9 @@ struct MemorySanitizerVisitor : public InstVisitor<MemorySanitizerVisitor> {
31293129 // / fine).
31303130 // /
31313131 // / Caller guarantees that this intrinsic does not access memory.
3132+ // /
3133+ // / TODO: "horizontal"/"pairwise" intrinsics are often incorrectly matched by
3134+ // / by this handler.
31323135 [[maybe_unused]] bool
31333136 maybeHandleSimpleNomemIntrinsic (IntrinsicInst &I,
31343137 unsigned int trailingFlags) {
@@ -4871,6 +4874,18 @@ struct MemorySanitizerVisitor : public InstVisitor<MemorySanitizerVisitor> {
48714874 setOrigin (&I, getCleanOrigin ());
48724875 break ;
48734876
4877+ // TODO: handling max/min similarly to AND/OR may be more precise
4878+ // Floating-Point Maximum/Minimum Pairwise
4879+ case Intrinsic::aarch64_neon_fmaxp:
4880+ case Intrinsic::aarch64_neon_fminp:
4881+ // Floating-Point Maximum/Minimum Number Pairwise
4882+ case Intrinsic::aarch64_neon_fmaxnmp:
4883+ case Intrinsic::aarch64_neon_fminnmp:
4884+ // Signed/Unsigned Maximum/Minimum Pairwise
4885+ case Intrinsic::aarch64_neon_smaxp:
4886+ case Intrinsic::aarch64_neon_sminp:
4887+ case Intrinsic::aarch64_neon_umaxp:
4888+ case Intrinsic::aarch64_neon_uminp:
48744889 // Add Pairwise
48754890 case Intrinsic::aarch64_neon_addp:
48764891 // Floating-point Add Pairwise
You can’t perform that action at this time.
0 commit comments