================
@@ -4022,8 +4169,36 @@ LValue CodeGenFunction::EmitArraySubscriptExpr(const 
ArraySubscriptExpr *E,
       ArrayLV = EmitArraySubscriptExpr(ASE, /*Accessed*/ true);
     else
       ArrayLV = EmitLValue(Array);
+
     auto *Idx = EmitIdxAfterBase(/*Promote*/true);
 
+    if (SanOpts.has(SanitizerKind::ArrayBounds)) {
----------------
bwendling wrote:

It started with a couple of bugs reported by someone testing the feature on 
Linux. I created a fix, but it wasn't super great and relied upon some 
assumptions about how the FAM expressions were formatted. Plus it could reload 
the expressions, which isn't good, especially if they have side effects. 
@nickdesaulniers had the good idea to generate the GEPs in a similar way to 
this. (That's where this code comes from.) Then several different cases were 
mentioned that needed to be handled at least gracefully...and the yak kept 
growing hair.

I don't necessarily think that this is adding "new" features more than just 
taking care of case after case after case ..., which is legion in C. For 
instance, the code was meant to handle FAMs in substructures, but because it's 
potentially very messy, maybe I should remove that feature. That would 
hopefully simplify this patch.

I'll update this patch removing the substructure FAM support and using your 
"offset" idea to get the count. Thanks for your feedback!

https://github.com/llvm/llvm-project/pull/73730
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to