Skip to content

Invalid nullptr diagnostic #47878

Closed
Closed
@tlemo

Description

Bugzilla Link 48534
Version unspecified
OS All
CC @devincoughlin,@haoNoQ

Extended Description

// https://godbolt.org/z/1oze6v

struct IrBuilder;
struct Kernel;

class Passkey {
friend struct IrBuilder;
explicit Passkey(Kernel* kernel) : kernel(kernel) {}

public:
Kernel* const kernel = nullptr;
};

struct Kernel {
void foo() const;
};

struct Node {
// incorrect note: Called C++ object pointer is null
explicit Node(Passkey passkey) { passkey.kernel->foo(); }
};

// enabling the following piece of code (normally in a different translation unit)
// demonstrates that the diagnostic is incorrect
#if 0
struct IrBuilder {
Node* create() {
const Passkey passkey(kernel_);
return new Node(passkey);
}

Kernel* kernel_ = nullptr;

};

Node* test(IrBuilder* ir_builder) {
return ir_builder->create();
}
#endif

:19:38: warning: Called C++ object pointer is null [clang-analyzer-core.CallAndMessage] explicit Node(Passkey passkey) { passkey.kernel->foo(); } ^ :19:38: note: Called C++ object pointer is null 1 warning generated.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions