[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