liberty expression lexer check if characters are found and use size if not for pin()
#4876
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.
What are the reasons/motivation for this change?
When the clocked_on expression contains an expression like:
D&!SE+SE&SI
the lexer segfaults when processing the SI pin becausefind_first_of
returnsstd::string::npos
causing the calls tostrsub
to throw an exception.Explain how this is achieved.
Check the return value and use the size of the string if those characters are not found.
If applicable, please suggest to reviewers how they can test the change.
I have a liberty file which was modified from one of the yosys testcases I can add, but I might need to guidance on how to integrate that as a test.
See attached (added the sdff cell for testing): normal_scan_ff.zip