theraven marked 3 inline comments as done.
theraven added inline comments.

================
Comment at: lib/CodeGen/CGObjCGNU.cpp:439
+                             ArrayRef<llvm::Constant *> IvarOffsets,
+                             ArrayRef<llvm::Constant *> IvarAlign,
+                             ArrayRef<Qualifiers::ObjCLifetime> IvarOwnership);
----------------
rjmccall wrote:
> theraven wrote:
> > DHowett-MSFT wrote:
> > > While we're here, is there value in storing the ivar size in layout as 
> > > well, so that the runtime doesn't need to calculate it from the distance 
> > > to the next ivar/end of the instance?
> > Normally the runtime calculates it from the type encoding, if it's 
> > required.  I agree that it might be nice to have though.  Do you have 
> > strong feelings about needing it in the 2.0 ABI?  The looser coupling means 
> > that it would be easy to add in the 2.1 ABI if we want it later.  Are you 
> > seeing cases where the runtime is calculating it incorrectly because of 
> > insufficient information in the type encoding, or where calculating it is 
> > causing performance problems?
> The distance between ivar offsets wouldn't be correct anyway because of 
> alignment padding.  A set-ivar function might be able to get away with 
> copying too many bytes from an input buffer (although I wouldn't recommend 
> it!), but a get-ivar function definitely should not copy too many bytes into 
> an output buffer.
> 
> And all that's assuming that the runtime promises not to reorder ivars 
> dynamically.  I don't know what the GNU runtime says about that.  (Static 
> reordering is fine, since the runtime can reasonably demand that the compiler 
> emit ivars in layout order.)
The runtime was calculating the size from the type encoding (which can also be 
wrong in a few cases, such as packed structures).  I agree it makes sense to 
add the size though, and have done..


================
Comment at: lib/CodeGen/CGObjCGNU.cpp:1172
+    if (isWeak) {
+      // Placeholder for the real symbol.
+      ClassSymbol->setInitializer(new llvm::GlobalVariable(TheModule,
----------------
rjmccall wrote:
> I would suggest clarifying in what sense this is a placeholder.  Does the 
> runtime recognize it specially?  If so, how?  Is it replaced statically by a 
> later pass in IRGen?
This comment was inherited from the old version and is actually nonsense now.  
I have replaced it with one that actually makes sense.


Repository:
  rC Clang

https://reviews.llvm.org/D46052



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

Reply via email to