[llvm] r242520 - Make global aliases have symbol size equal to their type

Rafael EspĂ­ndola via llvm-commits llvm-commits at lists.llvm.org
Fri Aug 7 05:16:07 PDT 2015


Thanks!
On Aug 7, 2015 7:00 AM, "John Brawn" <John.Brawn at arm.com> wrote:

> > I think we should revert it form trunk and 3.7 for now.
>
> Reverted from trunk, I've checked and it's not present on 3.7.
>
> John
>
> > -----Original Message-----
> > From: Rafael EspĂ­ndola [mailto:rafael.espindola at gmail.com]
> > Sent: 06 August 2015 20:24
> > To: John Brawn
> > Cc: Hans Wennborg; llvm-commits at lists.llvm.org
> > Subject: Re: [llvm] r242520 - Make global aliases have symbol size equal
> to their type
> >
> > This caused pr24379.
> >
> > I think we should revert it form trunk and 3.7 for now.
> >
> > On 17 July 2015 at 08:12, John Brawn <john.brawn at arm.com> wrote:
> > > Author: john.brawn
> > > Date: Fri Jul 17 07:12:03 2015
> > > New Revision: 242520
> > >
> > > URL: http://llvm.org/viewvc/llvm-project?rev=242520&view=rev
> > > Log:
> > > Make global aliases have symbol size equal to their type
> > >
> > > This is mainly for the benefit of GlobalMerge, so that an alias into a
> > > MergedGlobals variable has the same size as the original non-merged
> > > variable.
> > >
> > > Differential Revision: http://reviews.llvm.org/D10837
> > >
> > > Modified:
> > >     llvm/trunk/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
> > >     llvm/trunk/test/CodeGen/AArch64/global-merge-2.ll
> > >     llvm/trunk/test/CodeGen/AArch64/global-merge-3.ll
> > >     llvm/trunk/test/CodeGen/ARM/aliases.ll
> > >
> > > Modified: llvm/trunk/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
> > > URL: http://llvm.org/viewvc/llvm-
> >
> project/llvm/trunk/lib/CodeGen/AsmPrinter/AsmPrinter.cpp?rev=242520&r1=242519&r2=242520&vi
> > ew=diff
> > >
> ==============================================================================
> > > --- llvm/trunk/lib/CodeGen/AsmPrinter/AsmPrinter.cpp (original)
> > > +++ llvm/trunk/lib/CodeGen/AsmPrinter/AsmPrinter.cpp Fri Jul 17
> 07:12:03 2015
> > > @@ -1111,6 +1111,16 @@ bool AsmPrinter::doFinalization(Module &
> > >
> > >      // Emit the directives as assignments aka .set:
> > >      OutStreamer->EmitAssignment(Name,
> lowerConstant(Alias.getAliasee()));
> > > +
> > > +    // Set the size of the alias symbol if we can, as otherwise the
> alias gets
> > > +    // the size of the aliasee which may not be correct e.g. if the
> alias is of
> > > +    // a member of a struct.
> > > +    if (MAI->hasDotTypeDotSizeDirective() &&
> Alias.getValueType()->isSized()) {
> > > +      const DataLayout &DL = M.getDataLayout();
> > > +      uint64_t Size = DL.getTypeAllocSize(Alias.getValueType());
> > > +      OutStreamer->emitELFSize(cast<MCSymbolELF>(Name),
> > > +                               MCConstantExpr::create(Size,
> OutContext));
> > > +    }
> > >    }
> > >
> > >    GCModuleInfo *MI = getAnalysisIfAvailable<GCModuleInfo>();
> > >
> > > Modified: llvm/trunk/test/CodeGen/AArch64/global-merge-2.ll
> > > URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/AArch64/global-merge-
> > 2.ll?rev=242520&r1=242519&r2=242520&view=diff
> > >
> ==============================================================================
> > > --- llvm/trunk/test/CodeGen/AArch64/global-merge-2.ll (original)
> > > +++ llvm/trunk/test/CodeGen/AArch64/global-merge-2.ll Fri Jul 17
> 07:12:03 2015
> > > @@ -35,10 +35,13 @@ define void @g1(i32 %a1, i32 %a2) {
> > >
> > >  ;CHECK:        .globl  x
> > >  ;CHECK: x = _MergedGlobals_x
> > > +;CHECK: .size x, 4
> > >  ;CHECK:        .globl  y
> > >  ;CHECK: y = _MergedGlobals_x+4
> > > +;CHECK: .size y, 4
> > >  ;CHECK:        .globl  z
> > >  ;CHECK: z = _MergedGlobals_x+8
> > > +;CHECK: .size z, 4
> > >
> > >  ;CHECK-APPLE-IOS: .globl       __MergedGlobals_x       ;
> @_MergedGlobals_x
> > >  ;CHECK-APPLE-IOS: .zerofill __DATA,__common,__MergedGlobals_x,12,3
> > >
> > > Modified: llvm/trunk/test/CodeGen/AArch64/global-merge-3.ll
> > > URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/AArch64/global-merge-
> > 3.ll?rev=242520&r1=242519&r2=242520&view=diff
> > >
> ==============================================================================
> > > --- llvm/trunk/test/CodeGen/AArch64/global-merge-3.ll (original)
> > > +++ llvm/trunk/test/CodeGen/AArch64/global-merge-3.ll Fri Jul 17
> 07:12:03 2015
> > > @@ -42,8 +42,10 @@ define void @f1(i32 %a1, i32 %a2, i32 %a
> > >
> > >  ;CHECK:        .globl  x
> > >  ;CHECK: x = _MergedGlobals_x+4
> > > +;CHECK: .size x, 4000
> > >  ;CHECK:        .globl  y
> > >  ;CHECK: y = _MergedGlobals_y
> > > +;CHECK: .size y, 4000
> > >
> > >  ;CHECK-APPLE-IOS:.globl        _x
> > >  ;CHECK-APPLE-IOS: _x = __MergedGlobals_x+4
> > >
> > > Modified: llvm/trunk/test/CodeGen/ARM/aliases.ll
> > > URL: http://llvm.org/viewvc/llvm-
> >
> project/llvm/trunk/test/CodeGen/ARM/aliases.ll?rev=242520&r1=242519&r2=242520&view=diff
> > >
> ==============================================================================
> > > --- llvm/trunk/test/CodeGen/ARM/aliases.ll (original)
> > > +++ llvm/trunk/test/CodeGen/ARM/aliases.ll Fri Jul 17 07:12:03 2015
> > > @@ -2,19 +2,34 @@
> > >
> > >  ; CHECK: .globl        test
> > >
> > > +; CHECK: .globl structvar
> > > +; CHECK: .size structvar, 8
> > > +
> > >  ; CHECK: .globl        foo1
> > >  ; CHECK: foo1 = bar
> > > +; CHECK: .size foo1, 4
> > >
> > >  ; CHECK: .globl        foo2
> > >  ; CHECK: foo2 = bar
> > > +; CHECK: .size foo2, 4
> > >
> > >  ; CHECK: .weak bar_f
> > >  ; CHECK: bar_f = foo_f
> > >
> > >  ; CHECK: bar_i = bar
> > > +; CHECK: .size bar_i, 4
> > >
> > >  ; CHECK: .globl        A
> > >  ; CHECK: A = bar
> > > +; CHECK: .size A, 8
> > > +
> > > +; CHECK: .globl elem0
> > > +; CHECK: elem0 = structvar
> > > +; CHECK: .size elem0, 4
> > > +
> > > +; CHECK: .globl elem1
> > > +; CHECK: elem1 = structvar+4
> > > +; CHECK: .size elem1, 4
> > >
> > >  @bar = global i32 42
> > >  @foo1 = alias i32* @bar
> > > @@ -31,6 +46,10 @@ define i32 @foo_f() {
> > >
> > >  @A = alias bitcast (i32* @bar to i64*)
> > >
> > > + at structvar = global {i32, i32} {i32 1, i32 2}
> > > + at elem0 = alias getelementptr({i32, i32}, {i32, i32}*  @structvar, i32
> 0, i32 0)
> > > + at elem1 = alias getelementptr({i32, i32}, {i32, i32}*  @structvar, i32
> 0, i32 1)
> > > +
> > >  define i32 @test() {
> > >  entry:
> > >     %tmp = load i32, i32* @foo1
> > >
> > >
> > > _______________________________________________
> > > llvm-commits mailing list
> > > llvm-commits at cs.uiuc.edu
> > > http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>
>
> -- IMPORTANT NOTICE: The contents of this email and any attachments are
> confidential and may also be privileged. If you are not the intended
> recipient, please notify the sender immediately and do not disclose the
> contents to any other person, use it for any purpose, or store or copy the
> information in any medium.  Thank you.
>
> ARM Limited, Registered office 110 Fulbourn Road, Cambridge CB1 9NJ,
> Registered in England & Wales, Company No:  2557590
> ARM Holdings plc, Registered office 110 Fulbourn Road, Cambridge CB1 9NJ,
> Registered in England & Wales, Company No:  2548782
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20150807/51e75e13/attachment.html>


More information about the llvm-commits mailing list