rjmccall added inline comments.

================
Comment at: tools/clang/lib/CodeGen/CGDecl.cpp:979
+  if (CGM.getCodeGenOpts().OptimizationLevel == 0)
+    return false;
+  if (GlobalSize <= SizeLimit)
----------------
glider wrote:
> jfb wrote:
> > The general 64-byte heuristic is fine with me. It's just a bit weird to 
> > special-case `-O0`, but we do it elsewhere too (and it keeps the current 
> > status-quo of letting the backend decide what to do). From that perspective 
> > I'm fine with it.
> > 
> > @rjmccall do you have a strong preference either way?
> > 
> > One small nit: can you use `ByteSize` instead of just `Size`? Makes it 
> > easier to figure out what's going on in code IMO.
> I don't have a strong opinion on variable naming, but this:
> ```
>  974 static bool shouldSplitStructStore(CodeGenModule &CGM,
>  975                                    uint64_t GlobalByteSize) {
>  976   // Don't break structures that occupy more than one cacheline.
>  977   uint64_t ByteSizeLimit = 64;
>  978   if (CGM.getCodeGenOpts().OptimizationLevel == 0)
>  979     return false;
>  980   if (GlobalByteSize <= ByteSizeLimit)
>  981     return true;
>  982   return false;
> ```
> looks a bit more heavyweight than the previous function, in which we also 
> have `GlobalSize` and `SizeLimit`.
What are the cases we actually want to make sure we emit as separate stores?  
Basically just really small types that happen to be wrapped up in several 
layers of struct for abstraction purposes, right?  Maybe this heuristic should 
primarily consider element counts (and types) and use overall sizes at the top 
level.


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

https://reviews.llvm.org/D57898



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

Reply via email to