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

John Brawn via llvm-commits llvm-commits at lists.llvm.org
Fri Aug 7 03:56:57 PDT 2015


> 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


More information about the llvm-commits mailing list