WithHelperKey
breaks on clang with asserts on
#26500
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
WithHelperKey
is a templated class that has an inline field that it uses to produce a memory address that is used as a data key. This PR is not concerned with the underlying causes for this unconventional design. Rather, this change aims to fix a clang crash that happens nearly daily whenever it is necessary building brave with a clang binary that has asserts on. In particular, it looks like some combination of the key address and the usestd::addressof
cause clang to assert and crash.This change works around this crash by returning the address of the inline variable using
&
. For a repro of the crash, see:https://godbolt.org/z/M6oq6b3sz
An issue has been created for this issue as well
llvm/llvm-project#111188
Resolves
Submitter Checklist:
QA/Yes
orQA/No
;release-notes/include
orrelease-notes/exclude
;OS/...
) to the associated issuenpm run test -- brave_browser_tests
,npm run test -- brave_unit_tests
wikinpm run presubmit
wiki,npm run gn_check
,npm run tslint
git rebase master
(if needed)Reviewer Checklist:
gn
After-merge Checklist:
changes has landed on
Test Plan: