================
@@ -31,27 +35,34 @@
 #define FIXABLE_GADGET(name) GADGET(name)
 #endif
 
+/// A subset of the safe gadgets that may return multiple results.
+#ifndef FIXABLE_GADGET_MULTY_RES
+#define FIXABLE_GADGET_MULTY_RES(name) GADGET(name)
+#endif
+
 WARNING_GADGET(Increment)
 WARNING_GADGET(Decrement)
-WARNING_GADGET(ArraySubscript)
 WARNING_GADGET(PointerArithmetic)
 WARNING_GADGET(UnsafeBufferUsageAttr)
-WARNING_GADGET(UnsafeBufferUsageCtorAttr)
 WARNING_GADGET(DataInvocation)
-WARNING_OPTIONAL_GADGET(UnsafeLibcFunctionCall)
-WARNING_OPTIONAL_GADGET(SpanTwoParamConstructor) // Uses of `std::span(arg0, 
arg1)`
+WARNING_OPTIONAL_GADGET_CTX(ArraySubscript)
+WARNING_OPTIONAL_GADGET_CTX(UnsafeBufferUsageCtorAttr)
+WARNING_OPTIONAL_GADGET_HANDLER(UnsafeLibcFunctionCall)
+WARNING_OPTIONAL_GADGET_HANDLER(SpanTwoParamConstructor) // Uses of 
`std::span(arg0, arg1)`
 FIXABLE_GADGET(ULCArraySubscript)          // `DRE[any]` in an Unspecified 
Lvalue Context
 FIXABLE_GADGET(DerefSimplePtrArithFixable)
 FIXABLE_GADGET(PointerDereference)
-FIXABLE_GADGET(UPCAddressofArraySubscript) // '&DRE[any]' in an Unspecified 
Pointer Context
-FIXABLE_GADGET(UPCStandalonePointer)
-FIXABLE_GADGET(UPCPreIncrement)            // '++Ptr' in an Unspecified 
Pointer Context
-FIXABLE_GADGET(UUCAddAssign)            // 'Ptr += n' in an Unspecified 
Untyped Context
-FIXABLE_GADGET(PtrToPtrAssignment)
-FIXABLE_GADGET(CArrayToPtrAssignment)
+FIXABLE_GADGET_MULTY_RES(UPCAddressofArraySubscript) // '&DRE[any]' in an 
Unspecified Pointer Context
----------------
ilya-biryukov wrote:

Why not treat all gadgets as returning multiple results?

This would make the code simpler and I would not expect any noticeable 
performance costs if are careful (e.g. using `llvm::SmallVector` for results, 
etc.

Or is that not correct, e.g. is the code becoming more complicated with this 
approach?

https://github.com/llvm/llvm-project/pull/124554
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to