Express ownership transfer in PassManager API through std::unique_ptr (NFC)
authorMehdi Amini <aminim@google.com>
Tue, 13 Aug 2019 02:12:42 +0000 (19:12 -0700)
committerA. Unique TensorFlower <gardener@tensorflow.org>
Tue, 13 Aug 2019 02:13:12 +0000 (19:13 -0700)
commit926fb685deadfed2042163145ac52311914bf5c2
tree6af2d1fc60691dbd3e216fd38180795470c07654
parent532c652d6c5490f9d5380fc7d40837e6414c2ef8
Express ownership transfer in PassManager API through std::unique_ptr (NFC)

Since raw pointers are always passed around for IR construct without
implying any ownership transfer, it can be error prone to have implicit
ownership transferred the same way.
For example this code can seem harmless:

  Pass *pass = ....
  pm.addPass(pass);
  pm.addPass(pass);
  pm.run(module);

PiperOrigin-RevId: 263053082
66 files changed:
mlir/examples/Linalg/Linalg3/include/linalg3/Transforms.h
mlir/examples/Linalg/Linalg3/lib/Transforms.cpp
mlir/examples/toy/Ch4/include/toy/Passes.h
mlir/examples/toy/Ch4/mlir/ShapeInferencePass.cpp
mlir/examples/toy/Ch4/toyc.cpp
mlir/examples/toy/Ch5/include/toy/Lowering.h
mlir/examples/toy/Ch5/include/toy/Passes.h
mlir/examples/toy/Ch5/mlir/EarlyLowering.cpp
mlir/examples/toy/Ch5/mlir/LateLowering.cpp
mlir/examples/toy/Ch5/mlir/ShapeInferencePass.cpp
mlir/examples/toy/Ch5/toyc.cpp
mlir/include/mlir/Conversion/GPUToCUDA/GPUToCUDAPass.h
mlir/include/mlir/Conversion/GPUToNVVM/GPUToNVVMPass.h
mlir/include/mlir/Conversion/LoopsToGPU/LoopsToGPUPass.h
mlir/include/mlir/Conversion/StandardToLLVM/ConvertStandardToLLVMPass.h
mlir/include/mlir/Dialect/GPU/Passes.h
mlir/include/mlir/Dialect/QuantOps/Passes.h
mlir/include/mlir/Dialect/SPIRV/Passes.h
mlir/include/mlir/Linalg/Passes.h
mlir/include/mlir/Pass/Pass.h
mlir/include/mlir/Pass/PassManager.h
mlir/include/mlir/Pass/PassRegistry.h
mlir/include/mlir/Quantizer/Transforms/Passes.h
mlir/include/mlir/Transforms/Passes.h
mlir/lib/Conversion/GPUToCUDA/ConvertKernelFuncToCubin.cpp
mlir/lib/Conversion/GPUToCUDA/ConvertLaunchFuncToCudaCalls.cpp
mlir/lib/Conversion/GPUToCUDA/GenerateCubinAccessors.cpp
mlir/lib/Conversion/GPUToNVVM/LowerGpuOpsToNVVMOps.cpp
mlir/lib/Conversion/LoopsToGPU/LoopsToGPUPass.cpp
mlir/lib/Conversion/StandardToLLVM/ConvertStandardToLLVM.cpp
mlir/lib/Conversion/StandardToSPIRV/ConvertStandardToSPIRVPass.cpp
mlir/lib/Dialect/GPU/Transforms/KernelOutlining.cpp
mlir/lib/Dialect/QuantOps/Transforms/ConvertConst.cpp
mlir/lib/Dialect/QuantOps/Transforms/ConvertSimQuant.cpp
mlir/lib/Linalg/Transforms/Fusion.cpp
mlir/lib/Linalg/Transforms/LowerToLLVMDialect.cpp
mlir/lib/Linalg/Transforms/LowerToLoops.cpp
mlir/lib/Linalg/Transforms/Tiling.cpp
mlir/lib/Pass/Pass.cpp
mlir/lib/Pass/PassDetail.h
mlir/lib/Quantizer/Transforms/AddDefaultStatsTestPass.cpp
mlir/lib/Quantizer/Transforms/InferQuantizedTypesPass.cpp
mlir/lib/Quantizer/Transforms/RemoveInstrumentationPass.cpp
mlir/lib/Transforms/AffineDataCopyGeneration.cpp
mlir/lib/Transforms/CSE.cpp
mlir/lib/Transforms/Canonicalizer.cpp
mlir/lib/Transforms/LoopCoalescing.cpp
mlir/lib/Transforms/LoopFusion.cpp
mlir/lib/Transforms/LoopInvariantCodeMotion.cpp
mlir/lib/Transforms/LoopTiling.cpp
mlir/lib/Transforms/LoopUnroll.cpp
mlir/lib/Transforms/LoopUnrollAndJam.cpp
mlir/lib/Transforms/LowerAffine.cpp
mlir/lib/Transforms/LowerVectorTransfers.cpp
mlir/lib/Transforms/MaterializeVectors.cpp
mlir/lib/Transforms/MemRefDataFlowOpt.cpp
mlir/lib/Transforms/PipelineDataTransfer.cpp
mlir/lib/Transforms/SimplifyAffineStructures.cpp
mlir/lib/Transforms/StripDebugInfo.cpp
mlir/lib/Transforms/Vectorize.cpp
mlir/test/lib/TestDialect/TestPatterns.cpp
mlir/test/lib/Transforms/TestConstantFold.cpp
mlir/test/lib/Transforms/TestLoopFusion.cpp
mlir/test/lib/Transforms/TestLoopMapping.cpp
mlir/test/lib/Transforms/TestLoopParametricTiling.cpp
mlir/test/lib/Transforms/TestVectorizationUtils.cpp