[flang] Fix new assertion failure
authorPeter Klausler <pklausler@nvidia.com>
Wed, 8 Feb 2023 18:25:44 +0000 (10:25 -0800)
committerPeter Klausler <pklausler@nvidia.com>
Mon, 13 Feb 2023 15:34:55 +0000 (07:34 -0800)
Don't compute the address of  element [0] of a vector when the vector
is empty, even if the address is not used.

Differential Revision: https://reviews.llvm.org/D143824

flang/lib/Parser/token-sequence.cpp

index 55217a9..a3b97d3 100644 (file)
@@ -264,8 +264,10 @@ TokenSequence &TokenSequence::ClipComment(bool skipFirst) {
 }
 
 void TokenSequence::Emit(CookedSource &cooked) const {
-  cooked.Put(&char_[0], char_.size());
-  cooked.PutProvenanceMappings(provenances_);
+  if (auto n{char_.size()}) {
+    cooked.Put(&char_[0], n);
+    cooked.PutProvenanceMappings(provenances_);
+  }
 }
 
 llvm::raw_ostream &TokenSequence::Dump(llvm::raw_ostream &o) const {