[cfe-commits] [llvm-commits] [Patch] Move TargetData from Target to Support/VMCore

Villmow, Micah Micah.Villmow at amd.com
Thu Oct 4 16:03:05 PDT 2012

From: Chandler Carruth [mailto:chandlerc at google.com]
Sent: Thursday, October 04, 2012 3:56 PM
To: Villmow, Micah
Cc: Kim Gräsman; Evan Cheng; llvm-commits at cs.uiuc.edu LLVM; Nadav Rotem; cfe-commits at cs.uiuc.edu 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 <Micah.Villmow at amd.com<mailto:Micah.Villmow at amd.com>> 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?



From: Kim Gräsman [mailto:kim.grasman at gmail.com<mailto:kim.grasman at gmail.com>]
Sent: Thursday, October 04, 2012 1:33 PM
To: Villmow, Micah
Cc: Chris Lattner; Evan Cheng; llvm-commits at cs.uiuc.edu<mailto:llvm-commits at cs.uiuc.edu> LLVM; cfe-commits at cs.uiuc.edu<mailto:cfe-commits at cs.uiuc.edu> 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.

- Kim

cfe-commits mailing list
cfe-commits at cs.uiuc.edu<mailto:cfe-commits at cs.uiuc.edu>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20121004/832407d8/attachment.html>

More information about the cfe-commits mailing list