FailedChanges

Summary

  1. [Clang Interpreter] Fixed Bug 43362, build failure on GCC (details)
  2. [X86] Add test case to show failure to fold load with getmantss due to (details)
  3. [X86] Use sse_load_f32/f64 and timm in patterns for memory form of (details)
  4. Stop tracking atexit/__cxa_atexit/pthread_atfork allocations in (details)
  5. Avoid memory leak in ASan test (details)
  6. Add __lsan::ScopedInterceptorDisabler for strerror(3) (details)
  7. Attempt to fix a windows buildbot failure (details)
  8. [MachinePipeliner] Improve the TargetInstrInfo API (details)
  9. Revert "[SampleFDO] Expose an interface to return the size of a section (details)
  10. [AArch64][GlobalISel] Make <4 x s32> G_ASHR and G_LSHR legal. (details)
  11. [AArch64][GlobalISel] Selection support for G_ASHR of <2 x s64> (details)
  12. [AArch64][GlobalISel] Implement selection for G_SHL of <2 x i64> (details)
Commit 10793e791f5b149cbdc4a836cace1552b04fb332 by n
[Clang Interpreter] Fixed Bug 43362, build failure on GCC
free() was not directly included in InterpStack.cpp, added include now.
llvm-svn: 372455
The file was modifiedclang/lib/AST/Interp/InterpStack.cpp (diff)
Commit 4fa12ac92ced6dafdaf1e7c7e7a4b86d774e0b83 by craig.topper
[X86] Add test case to show failure to fold load with getmantss due to
isel pattern looking for Constant instead of TargetConstant
The intrinsic has an immarg so its gets created with a TargetConstant
instead of a Constant after r372338. The isel pattern was only updated
for the register form, but not the memory form.
llvm-svn: 372457
The file was modifiedllvm/test/CodeGen/X86/avx512-intrinsics.ll (diff)
Commit 04682939eb7e5ff06ec7e50cbe205b5c0069285f by craig.topper
[X86] Use sse_load_f32/f64 and timm in patterns for memory form of
vgetmantss/sd.
Previously we only matched scalar_to_vector and scalar load, but we
should be able to narrow a vector load or match vzload.
Also need to match TargetConstant instead of Constant. The register
patterns were previously updated, but not the memory patterns.
llvm-svn: 372458
The file was modifiedllvm/test/CodeGen/X86/avx512-intrinsics.ll (diff)
The file was modifiedllvm/lib/Target/X86/X86InstrAVX512.td (diff)
Commit 8827047551570b7ed7088765c3de2a8cce6823b8 by n54
Stop tracking atexit/__cxa_atexit/pthread_atfork allocations in
LSan/NetBSD
Summary: The atexit(3) and __cxa_atexit() calls allocate internally
memory and free on exit, after executing all callback. This causes false
positives as DoLeakCheck() is called from the atexit handler. In the
LSan/ASan tests there are strict checks triggering false positives here.
Intercept all atexit(3) and __cxa_atexit() calls and disable LSan when
calling the real functions.
Stop tracing allocations in pthread_atfork(3) funtions, as there are
performed internal allocations that are not freed for the time of
running StopTheWorld() code. This avoids false-positives.
The same changes have to be replicated in the ASan and LSan runtime.
Non-NetBSD OSs are not tested and this code is restricted to NetBSD
only.
Reviewers: dvyukov, joerg, mgorny, vitalybuka, eugenis
Reviewed By: vitalybuka
Subscribers: jfb, llvm-commits, #sanitizers
Tags: #sanitizers, #llvm
Differential Revision: https://reviews.llvm.org/D67331
llvm-svn: 372459
The file was modifiedcompiler-rt/lib/asan/asan_interceptors.h (diff)
The file was modifiedcompiler-rt/lib/lsan/lsan_interceptors.cpp (diff)
The file was modifiedcompiler-rt/lib/sanitizer_common/sanitizer_platform_interceptors.h (diff)
The file was modifiedcompiler-rt/lib/asan/asan_interceptors.cpp (diff)
Commit 5fe1e55d35413b1904cfcf16ec15495398921fe5 by n54
Avoid memory leak in ASan test
Summary: Add missing free(3) for the malloc(3) call.
Detected on NetBSD with LSan.
Reviewers: joerg, mgorny, vitalybuka, dvyukov
Reviewed By: vitalybuka
Subscribers: llvm-commits, #sanitizers
Tags: #sanitizers, #llvm
Differential Revision: https://reviews.llvm.org/D67330
llvm-svn: 372460
The file was modifiedcompiler-rt/test/asan/TestCases/inline.cpp (diff)
Commit 1b58389428ed07a7322ba9c2bcaeec99807f9457 by n54
Add __lsan::ScopedInterceptorDisabler for strerror(3)
Summary: strerror(3) on NetBSD uses internally TSD with a destructor
that is never fired for exit(3). It's correctly called for
pthread_exit(3) scenarios.
This is a case when a leak on exit(3) is expected, unavoidable and
harmless.
Reviewers: joerg, vitalybuka, dvyukov, mgorny
Reviewed By: vitalybuka
Subscribers: dmgreen, kristof.beyls, jfb, llvm-commits, #sanitizers
Tags: #sanitizers, #llvm
Differential Revision: https://reviews.llvm.org/D67337
llvm-svn: 372461
The file was modifiedcompiler-rt/lib/asan/asan_interceptors.cpp (diff)
The file was modifiedcompiler-rt/lib/lsan/lsan_interceptors.cpp (diff)
The file was modifiedcompiler-rt/lib/sanitizer_common/sanitizer_common_interceptors.inc (diff)
Commit c90fda6abe84127a99a8fe4341b6ed7c8abee47e by kristof.umann
Attempt to fix a windows buildbot failure
llvm-svn: 372462
The file was modifiedclang/lib/StaticAnalyzer/Checkers/MallocChecker.cpp (diff)
Commit 8a74eca398a012a9b3b18b10c2b5aedef203d04b by jmolloy
[MachinePipeliner] Improve the TargetInstrInfo API
analyzeLoop/reduceLoopCount
Recommit: fix asan errors.
The way MachinePipeliner uses these target hooks is stateful - we reduce
trip count by one per call to reduceLoopCount. It's a little overfit for
hardware loops, where we don't have to worry about stitching a loop
induction variable across prologs and epilogs (the induction variable is
implicit).
This patch introduces a new API:
  /// Analyze loop L, which must be a single-basic-block loop, and if
the
/// conditions can be understood enough produce a PipelinerLoopInfo
object.
virtual std::unique_ptr<PipelinerLoopInfo>
analyzeLoopForPipelining(MachineBasicBlock *LoopBB) const;
The return value is expected to be an implementation of the abstract
class:
  /// Object returned by analyzeLoopForPipelining. Allows software
pipelining
/// implementations to query attributes of the loop being pipelined.
class PipelinerLoopInfo {
public:
   virtual ~PipelinerLoopInfo();
   /// Return true if the given instruction should not be pipelined and
should
   /// be ignored. An example could be a loop comparison, or induction
variable
   /// update with no users being pipelined.
   virtual bool shouldIgnoreForPipelining(const MachineInstr *MI) const
= 0;
    /// Create a condition to determine if the trip count of the loop is
greater
   /// than TC.
   ///
   /// If the trip count is statically known to be greater than TC,
return
   /// true. If the trip count is statically known to be not greater
than TC,
   /// return false. Otherwise return nullopt and fill out Cond with the
test
   /// condition.
   virtual Optional<bool>
   createTripCountGreaterCondition(int TC, MachineBasicBlock &MBB,
                                SmallVectorImpl<MachineOperand> &Cond) =
0;
    /// Modify the loop such that the trip count is
   /// OriginalTC + TripCountAdjust.
   virtual void adjustTripCount(int TripCountAdjust) = 0;
    /// Called when the loop's preheader has been modified to
NewPreheader.
   virtual void setPreheader(MachineBasicBlock *NewPreheader) = 0;
    /// Called when the loop is being removed.
   virtual void disposed() = 0;
};
The Pipeliner (ModuloSchedule.cpp) can use this object to modify the
loop while allowing the target to hold its own state across all calls.
This API, in particular the disjunction of creating a trip count check
condition and adjusting the loop, improves the code quality in
ModuloSchedule.cpp.
llvm-svn: 372463
The file was modifiedllvm/lib/CodeGen/ModuloSchedule.cpp (diff)
The file was modifiedllvm/include/llvm/CodeGen/ModuloSchedule.h (diff)
The file was modifiedllvm/test/CodeGen/Hexagon/swp-epilog-phi7.ll (diff)
The file was modifiedllvm/lib/CodeGen/MachinePipeliner.cpp (diff)
The file was modifiedllvm/lib/CodeGen/TargetInstrInfo.cpp (diff)
The file was modifiedllvm/lib/Target/PowerPC/PPCInstrInfo.h (diff)
The file was modifiedllvm/lib/Target/Hexagon/HexagonInstrInfo.cpp (diff)
The file was modifiedllvm/include/llvm/CodeGen/TargetInstrInfo.h (diff)
The file was modifiedllvm/lib/Target/Hexagon/HexagonInstrInfo.h (diff)
The file was modifiedllvm/lib/Target/PowerPC/PPCInstrInfo.cpp (diff)
Commit 3bb56fa4789095631074d42dc61e1c1536342f8c by Amara Emerson
Revert "[SampleFDO] Expose an interface to return the size of a section
or the size"
This reverts commit f118852046a1d255ed8c65c6b5db320e8cea53a0.
Broke the macOS build/greendragon bots.
llvm-svn: 372464
The file was modifiedllvm/include/llvm/ProfileData/SampleProfReader.h (diff)
The file was modifiedllvm/include/llvm/ProfileData/SampleProf.h (diff)
The file was modifiedllvm/lib/ProfileData/SampleProfReader.cpp (diff)
The file was modifiedllvm/tools/llvm-profdata/llvm-profdata.cpp (diff)
The file was removedllvm/test/tools/llvm-profdata/show-prof-size.test
Commit fae979bc682bdb21a9bdf2e4170ee54afabee5c7 by Amara Emerson
[AArch64][GlobalISel] Make <4 x s32> G_ASHR and G_LSHR legal.
llvm-svn: 372465
The file was addedllvm/test/CodeGen/AArch64/GlobalISel/legalize-vector-shift.mir
The file was modifiedllvm/lib/Target/AArch64/AArch64LegalizerInfo.cpp (diff)
Commit a59a886832bd223127f5c7edf2cf729ba6857fe7 by Amara Emerson
[AArch64][GlobalISel] Selection support for G_ASHR of <2 x s64>
Just add an extra case to the existing selection logic.
llvm-svn: 372466
The file was modifiedllvm/test/CodeGen/AArch64/GlobalISel/select-vector-shift.mir (diff)
The file was modifiedllvm/lib/Target/AArch64/AArch64InstructionSelector.cpp (diff)
Commit 9c7d599dec9c9b028dc56ac65e8154452fc2c77a by Amara Emerson
[AArch64][GlobalISel] Implement selection for G_SHL of <2 x i64>
Simple continuation of existing selection support.
llvm-svn: 372467
The file was modifiedllvm/test/CodeGen/AArch64/GlobalISel/select-vector-shift.mir (diff)
The file was modifiedllvm/lib/Target/AArch64/AArch64InstructionSelector.cpp (diff)