[llvm-commits] Patch to add flag in llvm-extract for including aliases in the extraction.

Jan Sjodin jan_sjodin at yahoo.com
Fri Sep 28 15:08:36 PDT 2012


Ok, The example is this (I just grabbed it from the test case):

If I have the following functions and aliases:

@a0foo = alias void ()* @foo

define linkonce_odr void @foo() {
  ret void
}

@a0a0bar = alias void ()* @a0bar
@a0bar = alias void ()* @bar

define void @bar() {
  call void @foo()
  ret void
}


With llvm-extract -func bar we get:

@a0foo = alias void ()* @foo
@a0a0bar = alias void ()* @a0bar
@a0bar = alias void ()* @bar

define void @bar() {
  call void @foo()
  ret void
}


With llvm-extract -with-aliases -func bar we get:
@a0a0bar = alias void ()* @a0bar
@a0bar = alias void ()* @bar

define void @bar() {
  call void @foo()
  ret void
}

There is no a0foo since it is not an alias of something we want to extract.

- Jan


----- Original Message -----
> From: Eric Christopher <echristo at gmail.com>
> To: Jan Sjodin <jan_sjodin at yahoo.com>
> Cc: Chandler Carruth <chandlerc at google.com>; "llvm-commits at cs.uiuc.edu" <llvm-commits at cs.uiuc.edu>
> Sent: Friday, September 28, 2012 5:33 PM
> Subject: Re: [llvm-commits] Patch to add flag in llvm-extract for including aliases in the extraction.
> 
>T his is what I was doing.
> 
> So by documentation I mean in the llvm-extract documentation. If you
> could describe what you're trying to accomplish with the option by
> showing an example it'd be good.
> 
> Thanks!
> 
> -eric
> 
> On Fri, Sep 28, 2012 at 2:22 PM, Jan Sjodin <jan_sjodin at yahoo.com> wrote:
>>  Since you diligently scan the mailing list, could you please review? :)
>> 
>>  - Jan
>> 
>> 
>>  ________________________________
>>  From: Chandler Carruth <chandlerc at google.com>
>>  To: Jan Sjodin <jan_sjodin at yahoo.com>
>>  Cc: "Villmow, Micah" <Micah.Villmow at amd.com>; Duncan Sands
>>  <baldrick at free.fr>; "llvm-commits at cs.uiuc.edu" 
> <llvm-commits at cs.uiuc.edu>
>>  Sent: Friday, September 28, 2012 5:07 PM
>> 
>>  Subject: Re: [llvm-commits] Patch to add flag in llvm-extract for including
>>  aliases in the extraction.
>> 
>>  On Fri, Sep 28, 2012 at 2:04 PM, Jan Sjodin <jan_sjodin at yahoo.com> 
> wrote:
>> 
>>  I don't see any complaints from anyone, so I will go ahead and commit 
> this
>>  by the end of today, or tomorrow.
>> 
>> 
>>  That is *not* how commit-after-approval works. You need to get an actual
>>  review and explicit OK for your patches. Please don't abuse our 
> development
>>  process...
>> 
>> 
>> 
>>  - Jan
>> 
>>  ________________________________
>>  From: Jan Sjodin <jan_sjodin at yahoo.com>
>>  To: "Villmow, Micah" <Micah.Villmow at amd.com>; Duncan Sands
>>  <baldrick at free.fr>; "llvm-commits at cs.uiuc.edu" 
> <llvm-commits at cs.uiuc.edu>
>>  Sent: Tuesday, September 25, 2012 1:48 PM
>> 
>>  Subject: Re: [llvm-commits] Patch to add flag in llvm-extract for including
>>  aliases in the extraction.
>> 
>>  I tried that, but eraseFromParent makes the alias_iterator fail, since the
>>  underlying data structure is modified.
>> 
>> 
>>  - Jan
>> 
>> 
>> 
>>  ----- Original Message -----
>>>  From: "Villmow, Micah" <Micah.Villmow at amd.com>
>>>  To: Jan Sjodin <jan_sjodin at yahoo.com>; Duncan Sands 
> <baldrick at free.fr>;
>>>  "llvm-commits at cs.uiuc.edu" <llvm-commits at cs.uiuc.edu>
>>>  Cc:
>>>  Sent: Tuesday, September 25, 2012 11:34 AM
>>>  Subject: RE: [llvm-commits] Patch to add flag in llvm-extract for
>>>  including aliases in the extraction.
>>> 
>>>  So, the patch itself looks fine in its current form, however is there 
> not
>>>  a way
>>>  to delete the alias's without requiring to store them first?
>>>  Maybe something like this would work?
>>>  +static void extractAliases(Module* M,
>>>  +                           SetVector<GlobalValue *> &GVs) {+
>>>  +  // Find aliases to be erased
>>>  +  for (Module::alias_iterator I = M->alias_begin(), E = 
> M->alias_end();
>>>  +       I != E; ) {
>>>  +    GlobalAlias *GA = I++;
>>>  +    GlobalValue *GV =
>>>  +      
> const_cast<GlobalValue*>((GA).resolveAliasedGlobal(false));
>>>  +    if ((GVs.count(GV) != 0) == DeleteFn)
>>>  +      GA->eraseFromParent();
>>>  +  }
>>>  +}
>>> 
>>>>   -----Original Message-----
>>>>   From: llvm-commits-bounces at cs.uiuc.edu [mailto:llvm-commits-
>>>>   bounces at cs.uiuc.edu] On Behalf Of Jan Sjodin
>>>>   Sent: Tuesday, September 25, 2012 6:23 AM
>>>>   To: Duncan Sands; llvm-commits at cs.uiuc.edu
>>>>   Subject: Re: [llvm-commits] Patch to add flag in llvm-extract for
>>>>   including aliases in the extraction.
>>>> 
>>>>   Ok. Re-ping-ping with patch!
>>>> 
>>>>   - Jan
>>>> 
>>>>   >________________________________
>>>>   > From: Duncan Sands <baldrick at free.fr>
>>>>   >To: llvm-commits at cs.uiuc.edu
>>>>   >Sent: Saturday, September 22, 2012 6:06 AM
>>>>   >Subject: Re: [llvm-commits] Patch to add flag in llvm-extract 
> for
>>>>   including aliases in the extraction.
>>>>   >
>>>>   >On 21/09/12 17:36, Jan Sjodin wrote:
>>>>   >>
>>>>   >> Ping! Ping!
>>>>   >
>>>>   >Please supply the patch when you ping.
>>>>   >
>>>>   >Ciao, Duncan.
>>>>   >_______________________________________________
>>>>   >llvm-commits mailing list
>>>>   >llvm-commits at cs.uiuc.edu
>>>>   >http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>>>>   >
>>>>   >
>>>>   >
>>> 
>> 
>>  _______________________________________________
>>  llvm-commits mailing list
>>  llvm-commits at cs.uiuc.edu
>>  http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>> 
>> 
>> 
>>  _______________________________________________
>>  llvm-commits mailing list
>>  llvm-commits at cs.uiuc.edu
>>  http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>> 
>> 
>> 
>> 
>> 
>>  _______________________________________________
>>  llvm-commits mailing list
>>  llvm-commits at cs.uiuc.edu
>>  http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>> 
> 




More information about the llvm-commits mailing list