From: Chandler Carruth [mailto:[email protected]] Sent: Thursday, October 04, 2012 3:56 PM To: Villmow, Micah Cc: Kim Gräsman; Evan Cheng; [email protected] LLVM; Nadav Rotem; [email protected] cfe Subject: Re: [cfe-commits] [llvm-commits] [Patch] Move TargetData from Target to Support/VMCore
On Thu, Oct 4, 2012 at 3:51 PM, Villmow, Micah <[email protected]<mailto:[email protected]>> wrote: I'm curious how this could work. I have two classes. TargetData and DataLayout. I want to point all uses of TargetData at DataLayout. typedef won't work not just because of forward declarations, but also because of static functions. So, I could define DataLayout as a subclass of TargetData, but once I want to move to DataLayout, how do I define TargetData in a way that won't require changes to many many locations. I think you need to reverse the suggestion and instead use: class TargetData { // existing code }; class DataLayout : public TargetData { // some forwarding boilerplate } Then you can change everyone to refer to DataLayout, and then lift the implementation of TargetData up into DataLayout. You'll have to change folks to refer to DataLayout in o "top-down" way -- producers first. [Villmow, Micah] This is a good suggestion, but I was actually thinking of doing it in the reverse. Turn TargetData into the forwarding boilerplate, but I just wanted to make sure this was the intention instead of moving forward and having to redo some work. What subprojects do I need to modify? Clang/LLVM/compiler-RT I know Others would be LLDB, dragonegg, vmkit? What about libc++/polly/klee/safecode, etc...? Basically what is the line that separates which projects need to be updated by myself and what needs to be updated by their owners? Thanks, Micah Micah From: Kim Gräsman [mailto:[email protected]<mailto:[email protected]>] Sent: Thursday, October 04, 2012 1:33 PM To: Villmow, Micah Cc: Chris Lattner; Evan Cheng; [email protected]<mailto:[email protected]> LLVM; [email protected]<mailto:[email protected]> cfe; Nadav Rotem Subject: Re: [cfe-commits] [llvm-commits] [Patch] Move TargetData from Target to Support/VMCore HI Micah, On Thursday, October 4, 2012, Villmow, Micah wrote: Chris, the problem with steps #2/#3 is that plenty of clients have forward declarations of TargetData and the typedef won't work in this case, so I need to update the clients anyways. One trick I've used as an alternative to typedefs is to just derive from the old class, e.g. class NewName : public TargetData {}; This is forward-declarable just as well as TargetData itself. FWIW, - Kim _______________________________________________ cfe-commits mailing list [email protected]<mailto:[email protected]> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
_______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
