Changes
Summary
- Revert r359520
- [TargetLowering] findOptimalMemOpLowering. NFCI. This was a local static funtion in SelectionDAG, which I've promoted to TargetLowering so that I can reuse it to estimate the cost of a memory operation in D59787. Differential Revision: https://reviews.llvm.org/D59766
- [ARM GlobalISel] Widen small shift operands The legalizer was already widening the shift amount. Add tests for that behaviour, and also support widening the shifted value.
- [AsmPrinter] Make AsmPrinter::HandlerInfo::Handler a unique_ptr Handlers.clear() in AsmPrinter::doFinalization() will destroy these handlers. A unique_ptr makes the ownership clearer.
- [ARM GlobalISel] Be more careful about bailing out Bail out on function arguments/returns with types aggregating an unsupported type. This fixes cases where we would happily and incorrectly lower functions taking e.g. [1 x i64] parameters, when we don't even support plain i64 yet.
Change Type | Path in Repository | Path in Workspace |
---|---|---|
![]() | /llvm/trunk/tools/llvm-pdbutil/PrettyFunctionDumper.cpp | trunk/tools/llvm-pdbutil/PrettyFunctionDumper.cpp |
Change Type | Path in Repository | Path in Workspace |
![]() | /llvm/trunk/include/llvm/CodeGen/TargetLowering.h | trunk/include/llvm/CodeGen/TargetLowering.h |
![]() | /llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAG.cpp | trunk/lib/CodeGen/SelectionDAG/SelectionDAG.cpp |
![]() | /llvm/trunk/lib/CodeGen/SelectionDAG/TargetLowering.cpp | trunk/lib/CodeGen/SelectionDAG/TargetLowering.cpp |
Change Type | Path in Repository | Path in Workspace |
![]() | /llvm/trunk/lib/Target/ARM/ARMLegalizerInfo.cpp | trunk/lib/Target/ARM/ARMLegalizerInfo.cpp |
![]() | /llvm/trunk/test/CodeGen/ARM/GlobalISel/arm-legalize-binops.mir | trunk/test/CodeGen/ARM/GlobalISel/arm-legalize-binops.mir |
Change Type | Path in Repository | Path in Workspace |
![]() | /llvm/trunk/include/llvm/CodeGen/AsmPrinter.h | trunk/include/llvm/CodeGen/AsmPrinter.h |
![]() | /llvm/trunk/lib/CodeGen/AsmPrinter/AsmPrinter.cpp | trunk/lib/CodeGen/AsmPrinter/AsmPrinter.cpp |
![]() | /llvm/trunk/lib/Target/BPF/BPFAsmPrinter.cpp | trunk/lib/Target/BPF/BPFAsmPrinter.cpp |
Change Type | Path in Repository | Path in Workspace |
![]() | /llvm/trunk/lib/Target/ARM/ARMCallLowering.cpp | trunk/lib/Target/ARM/ARMCallLowering.cpp |
![]() | /llvm/trunk/test/CodeGen/ARM/GlobalISel/arm-unsupported.ll | trunk/test/CodeGen/ARM/GlobalISel/arm-unsupported.ll |
Summary
- [analyzer][UninitializedObjectChecker] PR41611: Regard vector types as primitive https://bugs.llvm.org/show_bug.cgi?id=41611 Similarly to D61106, the checker ran over an llvm_unreachable for vector types: struct VectorSizeLong { VectorSizeLong() {} __attribute__((__vector_size__(16))) long x; }; void __vector_size__LongTest() { VectorSizeLong v; } Since, according to my short research, "The vector_size attribute is only applicable to integral and float scalars, although arrays, pointers, and function return values are allowed in conjunction with this construct." [src: https://gcc.gnu.org/onlinedocs/gcc-4.6.1/gcc/Vector-Extensions.html#Vector-Extensions] vector types are safe to regard as primitive. Differential Revision: https://reviews.llvm.org/D61246
Change Type | Path in Repository | Path in Workspace |
---|---|---|
![]() | /cfe/trunk/lib/StaticAnalyzer/Checkers/UninitializedObject/UninitializedObject.h | trunk/lib/StaticAnalyzer/Checkers/UninitializedObject/UninitializedObject.h |
![]() | /cfe/trunk/test/Analysis/cxx-uninitialized-object-ptr-ref.cpp | trunk/test/Analysis/cxx-uninitialized-object-ptr-ref.cpp |
![]() | /cfe/trunk/test/Analysis/cxx-uninitialized-object.cpp | trunk/test/Analysis/cxx-uninitialized-object.cpp |