[NFC] Fix evaluation order dependency in call arguments #141366
+2
−3
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.
The code in
ARMAsmParser::parseDirectiveReq
passes bothparseRegister(Reg, SRegLoc, ERegLoc)
andSRegLoc
as arguments tocheck()
. Since function arguments are indeterminately sequenced per C++17 [expr.call]/5, a compiler can evaluateSRegLoc
beforeparseRegister()
executes. This meanscheck()
receives a null location instead of the actual parsed source location for error reporting.The fix separates the calls to establish explicit sequencing, ensuring
check()
receives the correct source location.This issue was detected by the CFamily analyzer for SonarQube. I'm happy to provide any additional information or clarification as needed.