-
Notifications
You must be signed in to change notification settings - Fork 13.4k
[alpha.webkit.UncountedCallArgsChecker] Add the support for trivial CXXInheritedCtorInitExpr. #111198
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[alpha.webkit.UncountedCallArgsChecker] Add the support for trivial CXXInheritedCtorInitExpr. #111198
Conversation
…XXInheritedCtorInitExpr.
@llvm/pr-subscribers-clang Author: Ryosuke Niwa (rniwa) ChangesFull diff: https://github.com/llvm/llvm-project/pull/111198.diff 2 Files Affected:
diff --git a/clang/lib/StaticAnalyzer/Checkers/WebKit/PtrTypesSemantics.cpp b/clang/lib/StaticAnalyzer/Checkers/WebKit/PtrTypesSemantics.cpp
index 4d145be808f6d8..317642c5b9ca20 100644
--- a/clang/lib/StaticAnalyzer/Checkers/WebKit/PtrTypesSemantics.cpp
+++ b/clang/lib/StaticAnalyzer/Checkers/WebKit/PtrTypesSemantics.cpp
@@ -508,6 +508,10 @@ class TrivialFunctionAnalysisVisitor
return IsFunctionTrivial(CE->getConstructor());
}
+ bool VisitCXXInheritedCtorInitExpr(const CXXInheritedCtorInitExpr *E) {
+ return IsFunctionTrivial(E->getConstructor());
+ }
+
bool VisitCXXNewExpr(const CXXNewExpr *NE) { return VisitChildren(NE); }
bool VisitImplicitCastExpr(const ImplicitCastExpr *ICE) {
diff --git a/clang/test/Analysis/Checkers/WebKit/uncounted-obj-arg.cpp b/clang/test/Analysis/Checkers/WebKit/uncounted-obj-arg.cpp
index 97efb354f0371d..75efc397abcc12 100644
--- a/clang/test/Analysis/Checkers/WebKit/uncounted-obj-arg.cpp
+++ b/clang/test/Analysis/Checkers/WebKit/uncounted-obj-arg.cpp
@@ -224,6 +224,20 @@ class ObjectWithMutatingDestructor {
Number n;
};
+class BaseType {
+public:
+ BaseType() : n(0) { }
+ BaseType(int v) : n(v) { }
+ BaseType(const char*);
+private:
+ Number n;
+};
+
+class SomeType : public BaseType {
+public:
+ using BaseType::BaseType;
+};
+
class RefCounted {
public:
void ref() const;
@@ -336,6 +350,8 @@ class RefCounted {
unsigned trivial60() { return ObjectWithNonTrivialDestructor { 5 }.value(); }
unsigned trivial61() { return DerivedNumber('7').value(); }
void trivial62() { WTFReportBacktrace(); }
+ SomeType trivial63() { return SomeType(0); }
+ SomeType trivial64() { return SomeType(); }
static RefCounted& singleton() {
static RefCounted s_RefCounted;
@@ -425,6 +441,7 @@ class RefCounted {
unsigned nonTrivial21() { return Number("123").value(); }
unsigned nonTrivial22() { return ComplexNumber(123, "456").real().value(); }
unsigned nonTrivial23() { return DerivedNumber("123").value(); }
+ SomeType nonTrivial24() { return SomeType("123"); }
static unsigned s_v;
unsigned v { 0 };
@@ -515,6 +532,8 @@ class UnrelatedClass {
getFieldTrivial().trivial60(); // no-warning
getFieldTrivial().trivial61(); // no-warning
getFieldTrivial().trivial62(); // no-warning
+ getFieldTrivial().trivial63(); // no-warning
+ getFieldTrivial().trivial64(); // no-warning
RefCounted::singleton().trivial18(); // no-warning
RefCounted::singleton().someFunction(); // no-warning
@@ -587,6 +606,8 @@ class UnrelatedClass {
// expected-warning@-1{{Call argument for 'this' parameter is uncounted and unsafe}}
getFieldTrivial().nonTrivial23();
// expected-warning@-1{{Call argument for 'this' parameter is uncounted and unsafe}}
+ getFieldTrivial().nonTrivial24();
+ // expected-warning@-1{{Call argument for 'this' parameter is uncounted and unsafe}}
}
};
|
@llvm/pr-subscribers-clang-static-analyzer-1 Author: Ryosuke Niwa (rniwa) ChangesFull diff: https://github.com/llvm/llvm-project/pull/111198.diff 2 Files Affected:
diff --git a/clang/lib/StaticAnalyzer/Checkers/WebKit/PtrTypesSemantics.cpp b/clang/lib/StaticAnalyzer/Checkers/WebKit/PtrTypesSemantics.cpp
index 4d145be808f6d8..317642c5b9ca20 100644
--- a/clang/lib/StaticAnalyzer/Checkers/WebKit/PtrTypesSemantics.cpp
+++ b/clang/lib/StaticAnalyzer/Checkers/WebKit/PtrTypesSemantics.cpp
@@ -508,6 +508,10 @@ class TrivialFunctionAnalysisVisitor
return IsFunctionTrivial(CE->getConstructor());
}
+ bool VisitCXXInheritedCtorInitExpr(const CXXInheritedCtorInitExpr *E) {
+ return IsFunctionTrivial(E->getConstructor());
+ }
+
bool VisitCXXNewExpr(const CXXNewExpr *NE) { return VisitChildren(NE); }
bool VisitImplicitCastExpr(const ImplicitCastExpr *ICE) {
diff --git a/clang/test/Analysis/Checkers/WebKit/uncounted-obj-arg.cpp b/clang/test/Analysis/Checkers/WebKit/uncounted-obj-arg.cpp
index 97efb354f0371d..75efc397abcc12 100644
--- a/clang/test/Analysis/Checkers/WebKit/uncounted-obj-arg.cpp
+++ b/clang/test/Analysis/Checkers/WebKit/uncounted-obj-arg.cpp
@@ -224,6 +224,20 @@ class ObjectWithMutatingDestructor {
Number n;
};
+class BaseType {
+public:
+ BaseType() : n(0) { }
+ BaseType(int v) : n(v) { }
+ BaseType(const char*);
+private:
+ Number n;
+};
+
+class SomeType : public BaseType {
+public:
+ using BaseType::BaseType;
+};
+
class RefCounted {
public:
void ref() const;
@@ -336,6 +350,8 @@ class RefCounted {
unsigned trivial60() { return ObjectWithNonTrivialDestructor { 5 }.value(); }
unsigned trivial61() { return DerivedNumber('7').value(); }
void trivial62() { WTFReportBacktrace(); }
+ SomeType trivial63() { return SomeType(0); }
+ SomeType trivial64() { return SomeType(); }
static RefCounted& singleton() {
static RefCounted s_RefCounted;
@@ -425,6 +441,7 @@ class RefCounted {
unsigned nonTrivial21() { return Number("123").value(); }
unsigned nonTrivial22() { return ComplexNumber(123, "456").real().value(); }
unsigned nonTrivial23() { return DerivedNumber("123").value(); }
+ SomeType nonTrivial24() { return SomeType("123"); }
static unsigned s_v;
unsigned v { 0 };
@@ -515,6 +532,8 @@ class UnrelatedClass {
getFieldTrivial().trivial60(); // no-warning
getFieldTrivial().trivial61(); // no-warning
getFieldTrivial().trivial62(); // no-warning
+ getFieldTrivial().trivial63(); // no-warning
+ getFieldTrivial().trivial64(); // no-warning
RefCounted::singleton().trivial18(); // no-warning
RefCounted::singleton().someFunction(); // no-warning
@@ -587,6 +606,8 @@ class UnrelatedClass {
// expected-warning@-1{{Call argument for 'this' parameter is uncounted and unsafe}}
getFieldTrivial().nonTrivial23();
// expected-warning@-1{{Call argument for 'this' parameter is uncounted and unsafe}}
+ getFieldTrivial().nonTrivial24();
+ // expected-warning@-1{{Call argument for 'this' parameter is uncounted and unsafe}}
}
};
|
https://bugs.webkit.org/show_bug.cgi?id=280906 rdar://137304761 Reviewed by NOBODY (OOPS!). Suppress false positives until they're fixed by llvm/llvm-project#111198. * Source/WebKit/GPUProcess/graphics/WebGPU/RemoteAdapter.h: * Source/WebKit/GPUProcess/graphics/WebGPU/RemoteBindGroup.h: * Source/WebKit/GPUProcess/graphics/WebGPU/RemoteBindGroupLayout.h: * Source/WebKit/GPUProcess/graphics/WebGPU/RemoteBuffer.h: * Source/WebKit/GPUProcess/graphics/WebGPU/RemoteCommandBuffer.h: * Source/WebKit/GPUProcess/graphics/WebGPU/RemoteCommandEncoder.h: * Source/WebKit/GPUProcess/graphics/WebGPU/RemoteCompositorIntegration.h: * Source/WebKit/GPUProcess/graphics/WebGPU/RemoteComputePassEncoder.h: * Source/WebKit/GPUProcess/graphics/WebGPU/RemoteComputePipeline.h: * Source/WebKit/GPUProcess/graphics/WebGPU/RemoteDevice.h: * Source/WebKit/GPUProcess/graphics/WebGPU/RemoteExternalTexture.h: * Source/WebKit/GPUProcess/graphics/WebGPU/RemotePipelineLayout.h: * Source/WebKit/GPUProcess/graphics/WebGPU/RemotePresentationContext.h: * Source/WebKit/GPUProcess/graphics/WebGPU/RemoteQuerySet.h: * Source/WebKit/GPUProcess/graphics/WebGPU/RemoteQueue.h: * Source/WebKit/GPUProcess/graphics/WebGPU/RemoteRenderBundle.h: * Source/WebKit/GPUProcess/graphics/WebGPU/RemoteRenderBundleEncoder.h: * Source/WebKit/GPUProcess/graphics/WebGPU/RemoteRenderPassEncoder.h: * Source/WebKit/GPUProcess/graphics/WebGPU/RemoteRenderPipeline.h: * Source/WebKit/GPUProcess/graphics/WebGPU/RemoteSampler.h: * Source/WebKit/GPUProcess/graphics/WebGPU/RemoteShaderModule.h: * Source/WebKit/GPUProcess/graphics/WebGPU/RemoteTexture.h: * Source/WebKit/GPUProcess/graphics/WebGPU/RemoteTextureView.h: * Source/WebKit/GPUProcess/graphics/WebGPU/RemoteXRBinding.h: * Source/WebKit/GPUProcess/graphics/WebGPU/RemoteXRProjectionLayer.h: * Source/WebKit/GPUProcess/graphics/WebGPU/RemoteXRSubImage.h: * Source/WebKit/GPUProcess/graphics/WebGPU/RemoteXRView.h: * Source/WebKit/GPUProcess/media/RemoteCDMInstanceProxy.cpp: (WebKit::RemoteCDMInstanceProxy::sharedPreferencesForWebProcess const): * Source/WebKit/GPUProcess/media/RemoteCDMInstanceSessionProxy.cpp: (WebKit::RemoteCDMInstanceSessionProxy::sharedPreferencesForWebProcess const): * Source/WebKit/GPUProcess/media/RemoteCDMProxy.cpp: (WebKit::RemoteCDMProxy::sharedPreferencesForWebProcess const): * Source/WebKit/GPUProcess/media/RemoteLegacyCDMProxy.cpp: (WebKit::RemoteLegacyCDMProxy::sharedPreferencesForWebProcess const): * Source/WebKit/GPUProcess/media/RemoteLegacyCDMSessionProxy.cpp: (WebKit::RemoteLegacyCDMSessionProxy::sharedPreferencesForWebProcess const): * Source/WebKit/UIProcess/Cocoa/PlaybackSessionManagerProxy.mm: (WebKit::PlaybackSessionManagerProxy::sharedPreferencesForWebProcess const): * Source/WebKit/UIProcess/Cocoa/VideoPresentationManagerProxy.mm: (WebKit::VideoPresentationManagerProxy::sharedPreferencesForWebProcess const): * Source/WebKit/UIProcess/Media/RemoteMediaSessionCoordinatorProxy.cpp: (WebKit::RemoteMediaSessionCoordinatorProxy::sharedPreferencesForWebProcess const): * Source/WebKit/UIProcess/SpeechRecognitionRemoteRealtimeMediaSourceManager.cpp: (WebKit::SpeechRecognitionRemoteRealtimeMediaSourceManager::sharedPreferencesForWebProcess const): * Source/WebKit/UIProcess/SpeechRecognitionServer.cpp: (WebKit::SpeechRecognitionServer::sharedPreferencesForWebProcess const): * Source/WebKit/UIProcess/WebLockRegistryProxy.h: * Source/WebKit/UIProcess/WebProcessPool.cpp: (WebKit::WebProcessPool::sharedPreferencesForWebProcess const): * Source/WebKit/UIProcess/WebScreenOrientationManagerProxy.cpp: (WebKit::WebScreenOrientationManagerProxy::sharedPreferencesForWebProcess const):
https://bugs.webkit.org/show_bug.cgi?id=280906 rdar://137304761 Reviewed by Ryosuke Niwa and Mike Wyrzykowski. Suppress false positives until they're fixed by llvm/llvm-project#111198. * Source/WebKit/GPUProcess/graphics/WebGPU/RemoteAdapter.h: * Source/WebKit/GPUProcess/graphics/WebGPU/RemoteBindGroup.h: * Source/WebKit/GPUProcess/graphics/WebGPU/RemoteBindGroupLayout.h: * Source/WebKit/GPUProcess/graphics/WebGPU/RemoteBuffer.h: * Source/WebKit/GPUProcess/graphics/WebGPU/RemoteCommandBuffer.h: * Source/WebKit/GPUProcess/graphics/WebGPU/RemoteCommandEncoder.h: * Source/WebKit/GPUProcess/graphics/WebGPU/RemoteCompositorIntegration.h: * Source/WebKit/GPUProcess/graphics/WebGPU/RemoteComputePassEncoder.h: * Source/WebKit/GPUProcess/graphics/WebGPU/RemoteComputePipeline.h: * Source/WebKit/GPUProcess/graphics/WebGPU/RemoteDevice.h: * Source/WebKit/GPUProcess/graphics/WebGPU/RemoteExternalTexture.h: * Source/WebKit/GPUProcess/graphics/WebGPU/RemotePipelineLayout.h: * Source/WebKit/GPUProcess/graphics/WebGPU/RemotePresentationContext.h: * Source/WebKit/GPUProcess/graphics/WebGPU/RemoteQuerySet.h: * Source/WebKit/GPUProcess/graphics/WebGPU/RemoteQueue.h: * Source/WebKit/GPUProcess/graphics/WebGPU/RemoteRenderBundle.h: * Source/WebKit/GPUProcess/graphics/WebGPU/RemoteRenderBundleEncoder.h: * Source/WebKit/GPUProcess/graphics/WebGPU/RemoteRenderPassEncoder.h: * Source/WebKit/GPUProcess/graphics/WebGPU/RemoteRenderPipeline.h: * Source/WebKit/GPUProcess/graphics/WebGPU/RemoteSampler.h: * Source/WebKit/GPUProcess/graphics/WebGPU/RemoteShaderModule.h: * Source/WebKit/GPUProcess/graphics/WebGPU/RemoteTexture.h: * Source/WebKit/GPUProcess/graphics/WebGPU/RemoteTextureView.h: * Source/WebKit/GPUProcess/graphics/WebGPU/RemoteXRBinding.h: * Source/WebKit/GPUProcess/graphics/WebGPU/RemoteXRProjectionLayer.h: * Source/WebKit/GPUProcess/graphics/WebGPU/RemoteXRSubImage.h: * Source/WebKit/GPUProcess/graphics/WebGPU/RemoteXRView.h: * Source/WebKit/GPUProcess/media/RemoteCDMInstanceProxy.cpp: (WebKit::RemoteCDMInstanceProxy::sharedPreferencesForWebProcess const): * Source/WebKit/GPUProcess/media/RemoteCDMInstanceSessionProxy.cpp: (WebKit::RemoteCDMInstanceSessionProxy::sharedPreferencesForWebProcess const): * Source/WebKit/GPUProcess/media/RemoteCDMProxy.cpp: (WebKit::RemoteCDMProxy::sharedPreferencesForWebProcess const): * Source/WebKit/GPUProcess/media/RemoteLegacyCDMProxy.cpp: (WebKit::RemoteLegacyCDMProxy::sharedPreferencesForWebProcess const): * Source/WebKit/GPUProcess/media/RemoteLegacyCDMSessionProxy.cpp: (WebKit::RemoteLegacyCDMSessionProxy::sharedPreferencesForWebProcess const): * Source/WebKit/UIProcess/Cocoa/PlaybackSessionManagerProxy.mm: (WebKit::PlaybackSessionManagerProxy::sharedPreferencesForWebProcess const): * Source/WebKit/UIProcess/Cocoa/VideoPresentationManagerProxy.mm: (WebKit::VideoPresentationManagerProxy::sharedPreferencesForWebProcess const): * Source/WebKit/UIProcess/Media/RemoteMediaSessionCoordinatorProxy.cpp: (WebKit::RemoteMediaSessionCoordinatorProxy::sharedPreferencesForWebProcess const): * Source/WebKit/UIProcess/SpeechRecognitionRemoteRealtimeMediaSourceManager.cpp: (WebKit::SpeechRecognitionRemoteRealtimeMediaSourceManager::sharedPreferencesForWebProcess const): * Source/WebKit/UIProcess/SpeechRecognitionServer.cpp: (WebKit::SpeechRecognitionServer::sharedPreferencesForWebProcess const): * Source/WebKit/UIProcess/WebLockRegistryProxy.h: * Source/WebKit/UIProcess/WebProcessPool.cpp: (WebKit::WebProcessPool::sharedPreferencesForWebProcess const): * Source/WebKit/UIProcess/WebScreenOrientationManagerProxy.cpp: (WebKit::WebScreenOrientationManagerProxy::sharedPreferencesForWebProcess const): Canonical link: https://commits.webkit.org/284709@main
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes makes sense! I've no idea why this is a special case anyway.
…XXInheritedCtorInitExpr. (llvm#111198)
…XXInheritedCtorInitExpr. (llvm#111198)
…XXInheritedCtorInitExpr. (llvm#111198)
…XXInheritedCtorInitExpr. (llvm#111198)
No description provided.