aaron.ballman added inline comments.

================
Comment at: clang/lib/AST/Interp/ByteCodeExprGen.cpp:1133-1134
+  } else if (const auto *SL = dyn_cast<StringLiteral>(Initializer)) {
+    const ArrayType *AT = SL->getType()->getAsArrayTypeUnsafe();
+    const auto *CAT = cast<ConstantArrayType>(AT);
+    size_t NumElems = CAT->getSize().getZExtValue();
----------------



================
Comment at: clang/lib/AST/Interp/ByteCodeExprGen.cpp:1139
+    //   and Porgram::createGlobalString().
+    const size_t CharWidth = SL->getCharByteWidth();
+    PrimType CharType;
----------------



================
Comment at: clang/lib/AST/Interp/ByteCodeExprGen.cpp:1143
+    case 1:
+      CharType = PT_Sint8;
+      break;
----------------
Should we be looking at the sign of `char` to decide whether to use a uint8 or 
an sint8?


================
Comment at: clang/lib/AST/Interp/ByteCodeExprGen.cpp:1157
+    for (size_t I = 0; I != NumElems; ++I) {
+      const uint32_t CodePoint = I < N ? SL->getCodeUnit(I) : 0;
+      // TODO(Perf): 0 is implicit; we can just stop iterating at that point.
----------------



================
Comment at: clang/test/AST/Interp/literals.cpp:354-359
+  constexpr char foo[12] = "abc";
+  static_assert(foo[0] == 'a', "");
+  static_assert(foo[1] == 'b', "");
+  static_assert(foo[2] == 'c', "");
+  static_assert(foo[3] == 0, "");
+  static_assert(foo[11] == 0, "");
----------------
I'd like to see some tests for the other encodings, as well as a test with 
embedded null characters in the literal.

Testing a string literal that's longer than the array is something we should 
think about. That code is ill-formed in C++, so I don't think we can add a test 
for it yet, but it's only a warning in C.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D137488/new/

https://reviews.llvm.org/D137488

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to