================
@@ -16599,6 +16599,108 @@ bool IntExprEvaluator::VisitBuiltinCallExpr(const 
CallExpr *E,
     return Success(Val.byteSwap(), E);
   }
 
+  case Builtin::BIstdc_load8_leu8:
+  case Builtin::BIstdc_load8_leu16:
+  case Builtin::BIstdc_load8_leu32:
+  case Builtin::BIstdc_load8_leu64:
+  case Builtin::BIstdc_load8_les8:
+  case Builtin::BIstdc_load8_les16:
+  case Builtin::BIstdc_load8_les32:
+  case Builtin::BIstdc_load8_les64:
+  case Builtin::BIstdc_load8_aligned_leu8:
+  case Builtin::BIstdc_load8_aligned_leu16:
+  case Builtin::BIstdc_load8_aligned_leu32:
+  case Builtin::BIstdc_load8_aligned_leu64:
+  case Builtin::BIstdc_load8_aligned_les8:
+  case Builtin::BIstdc_load8_aligned_les16:
+  case Builtin::BIstdc_load8_aligned_les32:
+  case Builtin::BIstdc_load8_aligned_les64:
+  case Builtin::BIstdc_load8_beu8:
+  case Builtin::BIstdc_load8_beu16:
+  case Builtin::BIstdc_load8_beu32:
+  case Builtin::BIstdc_load8_beu64:
+  case Builtin::BIstdc_load8_bes8:
+  case Builtin::BIstdc_load8_bes16:
+  case Builtin::BIstdc_load8_bes32:
+  case Builtin::BIstdc_load8_bes64:
+  case Builtin::BIstdc_load8_aligned_beu8:
+  case Builtin::BIstdc_load8_aligned_beu16:
+  case Builtin::BIstdc_load8_aligned_beu32:
+  case Builtin::BIstdc_load8_aligned_beu64:
+  case Builtin::BIstdc_load8_aligned_bes8:
+  case Builtin::BIstdc_load8_aligned_bes16:
+  case Builtin::BIstdc_load8_aligned_bes32:
+  case Builtin::BIstdc_load8_aligned_bes64: {
+    bool IsBE = BuiltinOp == Builtin::BIstdc_load8_beu8 ||
+                BuiltinOp == Builtin::BIstdc_load8_beu16 ||
+                BuiltinOp == Builtin::BIstdc_load8_beu32 ||
+                BuiltinOp == Builtin::BIstdc_load8_beu64 ||
+                BuiltinOp == Builtin::BIstdc_load8_bes8 ||
+                BuiltinOp == Builtin::BIstdc_load8_bes16 ||
+                BuiltinOp == Builtin::BIstdc_load8_bes32 ||
+                BuiltinOp == Builtin::BIstdc_load8_bes64 ||
+                BuiltinOp == Builtin::BIstdc_load8_aligned_beu8 ||
+                BuiltinOp == Builtin::BIstdc_load8_aligned_beu16 ||
+                BuiltinOp == Builtin::BIstdc_load8_aligned_beu32 ||
+                BuiltinOp == Builtin::BIstdc_load8_aligned_beu64 ||
+                BuiltinOp == Builtin::BIstdc_load8_aligned_bes8 ||
+                BuiltinOp == Builtin::BIstdc_load8_aligned_bes16 ||
+                BuiltinOp == Builtin::BIstdc_load8_aligned_bes32 ||
+                BuiltinOp == Builtin::BIstdc_load8_aligned_bes64;
+
+    LValue Ptr;
+    if (!EvaluatePointer(E->getArg(0), Ptr, Info))
+      return false;
+
+    if (!Ptr.checkNullPointerForFoldAccess(Info, E, AK_Read) ||
+        Ptr.Designator.Invalid)
+      return false;
+
+    QualType CharTy = Ptr.Designator.getType(Info.Ctx);
+    if (!isOneByteCharacterType(CharTy)) {
+      Info.FFDiag(E, diag::note_constexpr_memchr_unsupported)
+          << Info.Ctx.BuiltinInfo.getQuotedName(E->getBuiltinCallee())
+          << CharTy;
+      return false;
+    }
+
+    unsigned ByteWidth = Info.Ctx.getTypeSize(E->getType()) / 8;
----------------
chaitanyav wrote:

modified to use the check in Sema for CHAR_BIT to be 8 (which we added for 
stdc_memreverse8).

https://github.com/llvm/llvm-project/pull/203666
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to