[llvm] r233024 - [AArch64, ARM] Enable GlobalMerge with -O3 rather than -O1.
Eric Christopher
echristo at gmail.com
Mon Mar 23 16:05:15 PDT 2015
Looks good. Thanks Ahmed!
-eric
On Mon, Mar 23, 2015 at 2:25 PM Ahmed Bougacha <ahmed.bougacha at gmail.com>
wrote:
> Author: ab
> Date: Mon Mar 23 16:17:36 2015
> New Revision: 233024
>
> URL: http://llvm.org/viewvc/llvm-project?rev=233024&view=rev
> Log:
> [AArch64, ARM] Enable GlobalMerge with -O3 rather than -O1.
>
> The pass used to be enabled by default with CodeGenOpt::Less (-O1).
> This is too aggressive, considering the pass indiscriminately merges
> all globals together.
>
> Currently, performance doesn't always improve, and, on code that uses
> few globals (e.g., the odd file- or function- static), more often than
> not is degraded by the optimization. Lengthy discussion can be found
> on llvmdev (AArch64-focused; ARM has similar problems):
> http://lists.cs.uiuc.edu/pipermail/llvmdev/2015-February/082800.html
> Also, it makes tooling and debuggers less useful when dealing with
> globals and data sections.
>
> GlobalMerge needs to better identify those cases that benefit, and this
> will be done separately. In the meantime, move the pass to run with
> -O3 rather than -O1, on both ARM and AArch64.
>
> Modified:
> llvm/trunk/lib/Target/AArch64/AArch64TargetMachine.cpp
> llvm/trunk/lib/Target/ARM/ARMTargetMachine.cpp
> llvm/trunk/test/CodeGen/AArch64/global-merge-1.ll
> llvm/trunk/test/CodeGen/AArch64/global-merge-2.ll
> llvm/trunk/test/CodeGen/AArch64/global-merge-3.ll
> llvm/trunk/test/CodeGen/AArch64/global-merge-4.ll
> llvm/trunk/test/CodeGen/ARM/2010-12-15-elf-lcomm.ll
> llvm/trunk/test/CodeGen/ARM/2011-01-19-MergedGlobalDbg.ll
> llvm/trunk/test/CodeGen/ARM/2011-06-29-MergeGlobalsAlign.ll
> llvm/trunk/test/CodeGen/ARM/2011-08-02-MergedGlobalDbg.ll
> llvm/trunk/test/CodeGen/ARM/global-merge-1.ll
> llvm/trunk/test/CodeGen/ARM/global-merge-addrspace.ll
> llvm/trunk/test/CodeGen/ARM/global-merge.ll
>
> Modified: llvm/trunk/lib/Target/AArch64/AArch64TargetMachine.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/
> AArch64/AArch64TargetMachine.cpp?rev=233024&r1=233023&r2=233024&view=diff
> ============================================================
> ==================
> --- llvm/trunk/lib/Target/AArch64/AArch64TargetMachine.cpp (original)
> +++ llvm/trunk/lib/Target/AArch64/AArch64TargetMachine.cpp Mon Mar 23
> 16:17:36 2015
> @@ -245,7 +245,7 @@ bool AArch64PassConfig::addPreISel() {
> // FIXME: On AArch64, this depends on the type.
> // Basically, the addressable offsets are up to 4095 *
> Ty.getSizeInBytes().
> // and the offset has to be a multiple of the related size in bytes.
> - if (TM->getOptLevel() != CodeGenOpt::None)
> + if (TM->getOptLevel() == CodeGenOpt::Aggressive)
> addPass(createGlobalMergePass(TM, 4095));
> if (TM->getOptLevel() != CodeGenOpt::None)
> addPass(createAArch64AddressTypePromotionPass());
>
> Modified: llvm/trunk/lib/Target/ARM/ARMTargetMachine.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/
> ARM/ARMTargetMachine.cpp?rev=233024&r1=233023&r2=233024&view=diff
> ============================================================
> ==================
> --- llvm/trunk/lib/Target/ARM/ARMTargetMachine.cpp (original)
> +++ llvm/trunk/lib/Target/ARM/ARMTargetMachine.cpp Mon Mar 23 16:17:36
> 2015
> @@ -327,7 +327,7 @@ void ARMPassConfig::addIRPasses() {
> }
>
> bool ARMPassConfig::addPreISel() {
> - if (TM->getOptLevel() != CodeGenOpt::None)
> + if (TM->getOptLevel() == CodeGenOpt::Aggressive)
> // FIXME: This is using the thumb1 only constant value for
> // maximal global offset for merging globals. We may want
> // to look into using the old value for non-thumb1 code of
>
> Modified: llvm/trunk/test/CodeGen/AArch64/global-merge-1.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/
> CodeGen/AArch64/global-merge-1.ll?rev=233024&r1=233023&r2=233024&view=diff
> ============================================================
> ==================
> --- llvm/trunk/test/CodeGen/AArch64/global-merge-1.ll (original)
> +++ llvm/trunk/test/CodeGen/AArch64/global-merge-1.ll Mon Mar 23 16:17:36
> 2015
> @@ -1,11 +1,11 @@
> -; RUN: llc %s -mtriple=aarch64-none-linux-gnu -enable-global-merge -o -
> | FileCheck %s
> -; RUN: llc %s -mtriple=aarch64-none-linux-gnu -enable-global-merge
> -global-merge-on-external -o - | FileCheck %s
> +; RUN: llc %s -mtriple=aarch64-none-linux-gnu -O3 -enable-global-merge
> -o - | FileCheck %s
> +; RUN: llc %s -mtriple=aarch64-none-linux-gnu -O3 -enable-global-merge
> -global-merge-on-external -o - | FileCheck %s
>
> -; RUN: llc %s -mtriple=aarch64-linux-gnuabi -enable-global-merge -o - |
> FileCheck %s
> -; RUN: llc %s -mtriple=aarch64-linux-gnuabi -enable-global-merge
> -global-merge-on-external -o - | FileCheck %s
> +; RUN: llc %s -mtriple=aarch64-linux-gnuabi -O3 -enable-global-merge -o -
> | FileCheck %s
> +; RUN: llc %s -mtriple=aarch64-linux-gnuabi -O3 -enable-global-merge
> -global-merge-on-external -o - | FileCheck %s
>
> -; RUN: llc %s -mtriple=aarch64-apple-ios -enable-global-merge -o - |
> FileCheck %s --check-prefix=CHECK-APPLE-IOS
> -; RUN: llc %s -mtriple=aarch64-apple-ios -enable-global-merge
> -global-merge-on-external -o - | FileCheck %s --check-prefix=CHECK-APPLE-IOS
> +; RUN: llc %s -mtriple=aarch64-apple-ios -O3 -enable-global-merge -o - |
> FileCheck %s --check-prefix=CHECK-APPLE-IOS
> +; RUN: llc %s -mtriple=aarch64-apple-ios -O3 -enable-global-merge
> -global-merge-on-external -o - | FileCheck %s --check-prefix=CHECK-APPLE-IOS
>
> @m = internal global i32 0, align 4
> @n = internal global i32 0, align 4
>
> 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=233024&r1=233023&r2=233024&view=diff
> ============================================================
> ==================
> --- llvm/trunk/test/CodeGen/AArch64/global-merge-2.ll (original)
> +++ llvm/trunk/test/CodeGen/AArch64/global-merge-2.ll Mon Mar 23 16:17:36
> 2015
> @@ -1,6 +1,6 @@
> -; RUN: llc %s -mtriple=aarch64-none-linux-gnu -enable-global-merge
> -global-merge-on-external -o - | FileCheck %s
> -; RUN: llc %s -mtriple=aarch64-linux-gnuabi -enable-global-merge
> -global-merge-on-external -o - | FileCheck %s
> -; RUN: llc %s -mtriple=aarch64-apple-ios -enable-global-merge
> -global-merge-on-external -o - | FileCheck %s --check-prefix=CHECK-APPLE-IOS
> +; RUN: llc %s -mtriple=aarch64-none-linux-gnu -O3 -enable-global-merge
> -global-merge-on-external -o - | FileCheck %s
> +; RUN: llc %s -mtriple=aarch64-linux-gnuabi -O3 -enable-global-merge
> -global-merge-on-external -o - | FileCheck %s
> +; RUN: llc %s -mtriple=aarch64-apple-ios -O3 -enable-global-merge
> -global-merge-on-external -o - | FileCheck %s --check-prefix=CHECK-APPLE-IOS
>
> @x = global i32 0, align 4
> @y = global i32 0, align 4
>
> 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=233024&r1=233023&r2=233024&view=diff
> ============================================================
> ==================
> --- llvm/trunk/test/CodeGen/AArch64/global-merge-3.ll (original)
> +++ llvm/trunk/test/CodeGen/AArch64/global-merge-3.ll Mon Mar 23 16:17:36
> 2015
> @@ -1,6 +1,6 @@
> -; RUN: llc %s -mtriple=aarch64-none-linux-gnu -enable-global-merge
> -global-merge-on-external -o - | FileCheck %s
> -; RUN: llc %s -mtriple=aarch64-linux-gnuabi -enable-global-merge
> -global-merge-on-external -o - | FileCheck %s
> -; RUN: llc %s -mtriple=aarch64-apple-ios -enable-global-merge
> -global-merge-on-external -o - | FileCheck %s --check-prefix=CHECK-APPLE-IOS
> +; RUN: llc %s -mtriple=aarch64-none-linux-gnu -O3 -enable-global-merge
> -global-merge-on-external -o - | FileCheck %s
> +; RUN: llc %s -mtriple=aarch64-linux-gnuabi -O3 -enable-global-merge
> -global-merge-on-external -o - | FileCheck %s
> +; RUN: llc %s -mtriple=aarch64-apple-ios -O3 -enable-global-merge
> -global-merge-on-external -o - | FileCheck %s --check-prefix=CHECK-APPLE-IOS
>
> @x = global [1000 x i32] zeroinitializer, align 1
> @y = global [1000 x i32] zeroinitializer, align 1
>
> Modified: llvm/trunk/test/CodeGen/AArch64/global-merge-4.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/
> CodeGen/AArch64/global-merge-4.ll?rev=233024&r1=233023&r2=233024&view=diff
> ============================================================
> ==================
> --- llvm/trunk/test/CodeGen/AArch64/global-merge-4.ll (original)
> +++ llvm/trunk/test/CodeGen/AArch64/global-merge-4.ll Mon Mar 23 16:17:36
> 2015
> @@ -1,4 +1,4 @@
> -; RUN: llc %s -mtriple=aarch64-linux-gnuabi -enable-global-merge -o - |
> FileCheck %s
> +; RUN: llc %s -mtriple=aarch64-linux-gnuabi -O3 -enable-global-merge -o -
> | FileCheck %s
>
> target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-
> i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-
> v128:128:128-a0:0:64-n32:64-S128"
> target triple = "arm64-apple-ios7.0.0"
>
> Modified: llvm/trunk/test/CodeGen/ARM/2010-12-15-elf-lcomm.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/
> CodeGen/ARM/2010-12-15-elf-lcomm.ll?rev=233024&r1=233023&
> r2=233024&view=diff
> ============================================================
> ==================
> --- llvm/trunk/test/CodeGen/ARM/2010-12-15-elf-lcomm.ll (original)
> +++ llvm/trunk/test/CodeGen/ARM/2010-12-15-elf-lcomm.ll Mon Mar 23
> 16:17:36 2015
> @@ -1,6 +1,6 @@
> -; RUN: llc %s -mtriple=armv7-linux-gnueabi -filetype=obj -o - | \
> +; RUN: llc %s -mtriple=armv7-linux-gnueabi -O3 -filetype=obj -o - | \
> ; RUN: llvm-readobj -s -t | FileCheck -check-prefix=OBJ %s
> -; RUN: llc %s -mtriple=armv7-linux-gnueabi -o - | \
> +; RUN: llc %s -mtriple=armv7-linux-gnueabi -O3 -o - | \
> ; RUN: FileCheck -check-prefix=ASM %s
>
>
>
> Modified: llvm/trunk/test/CodeGen/ARM/2011-01-19-MergedGlobalDbg.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/
> CodeGen/ARM/2011-01-19-MergedGlobalDbg.ll?rev=233024&
> r1=233023&r2=233024&view=diff
> ============================================================
> ==================
> --- llvm/trunk/test/CodeGen/ARM/2011-01-19-MergedGlobalDbg.ll (original)
> +++ llvm/trunk/test/CodeGen/ARM/2011-01-19-MergedGlobalDbg.ll Mon Mar 23
> 16:17:36 2015
> @@ -1,4 +1,4 @@
> -; RUN: llc -filetype=obj < %s | llvm-dwarfdump -debug-dump=info - |
> FileCheck %s
> +; RUN: llc -O3 -filetype=obj < %s | llvm-dwarfdump -debug-dump=info - |
> FileCheck %s
>
> target datalayout = "e-p:32:32:32-i1:8:32-i8:8:32-
> i16:16:32-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:32:64-
> v128:32:128-a0:0:32-n32"
> target triple = "thumbv7-apple-darwin10"
>
> Modified: llvm/trunk/test/CodeGen/ARM/2011-06-29-MergeGlobalsAlign.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/
> CodeGen/ARM/2011-06-29-MergeGlobalsAlign.ll?rev=
> 233024&r1=233023&r2=233024&view=diff
> ============================================================
> ==================
> --- llvm/trunk/test/CodeGen/ARM/2011-06-29-MergeGlobalsAlign.ll (original)
> +++ llvm/trunk/test/CodeGen/ARM/2011-06-29-MergeGlobalsAlign.ll Mon Mar
> 23 16:17:36 2015
> @@ -1,4 +1,4 @@
> -; RUN: llc < %s -mtriple=thumbv7-apple-darwin10 | FileCheck %s
> +; RUN: llc < %s -mtriple=thumbv7-apple-darwin10 -O3 | FileCheck %s
> ; CHECK: .zerofill __DATA,__bss,__MergedGlobals,16,2
>
> @prev = external global [0 x i16]
>
> Modified: llvm/trunk/test/CodeGen/ARM/2011-08-02-MergedGlobalDbg.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/
> CodeGen/ARM/2011-08-02-MergedGlobalDbg.ll?rev=233024&
> r1=233023&r2=233024&view=diff
> ============================================================
> ==================
> --- llvm/trunk/test/CodeGen/ARM/2011-08-02-MergedGlobalDbg.ll (original)
> +++ llvm/trunk/test/CodeGen/ARM/2011-08-02-MergedGlobalDbg.ll Mon Mar 23
> 16:17:36 2015
> @@ -1,4 +1,4 @@
> -; RUN: llc -filetype=obj < %s | llvm-dwarfdump -debug-dump=info - |
> FileCheck %s
> +; RUN: llc -O3 -filetype=obj < %s | llvm-dwarfdump -debug-dump=info - |
> FileCheck %s
>
> ; Check debug info output for merged global.
> ; DW_AT_location
>
> Modified: llvm/trunk/test/CodeGen/ARM/global-merge-1.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/
> CodeGen/ARM/global-merge-1.ll?rev=233024&r1=233023&r2=233024&view=diff
> ============================================================
> ==================
> --- llvm/trunk/test/CodeGen/ARM/global-merge-1.ll (original)
> +++ llvm/trunk/test/CodeGen/ARM/global-merge-1.ll Mon Mar 23 16:17:36 2015
> @@ -1,9 +1,10 @@
> ; RUN: llc %s -O0 -o - | FileCheck -check-prefix=NO-MERGE %s
> -; RUN: llc %s -O0 -o - -enable-global-merge=false | FileCheck
> -check-prefix=NO-MERGE %s
> -; RUN: llc %s -O0 -o - -enable-global-merge=true | FileCheck
> -check-prefix=NO-MERGE %s
> -; RUN: llc %s -O1 -o - | FileCheck -check-prefix=MERGE %s
> +; RUN: llc %s -O1 -o - | FileCheck -check-prefix=NO-MERGE %s
> ; RUN: llc %s -O1 -o - -enable-global-merge=false | FileCheck
> -check-prefix=NO-MERGE %s
> -; RUN: llc %s -O1 -o - -enable-global-merge=true | FileCheck
> -check-prefix=MERGE %s
> +; RUN: llc %s -O1 -o - -enable-global-merge=true | FileCheck
> -check-prefix=NO-MERGE %s
> +; RUN: llc %s -O3 -o - | FileCheck -check-prefix=MERGE %s
> +; RUN: llc %s -O3 -o - -enable-global-merge=false | FileCheck
> -check-prefix=NO-MERGE %s
> +; RUN: llc %s -O3 -o - -enable-global-merge=true | FileCheck
> -check-prefix=MERGE %s
>
> ; MERGE-NOT: .zerofill __DATA,__bss,_bar,20,2
> ; MERGE-NOT: .zerofill __DATA,__bss,_baz,20,2
>
> Modified: llvm/trunk/test/CodeGen/ARM/global-merge-addrspace.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/
> CodeGen/ARM/global-merge-addrspace.ll?rev=233024&r1=
> 233023&r2=233024&view=diff
> ============================================================
> ==================
> --- llvm/trunk/test/CodeGen/ARM/global-merge-addrspace.ll (original)
> +++ llvm/trunk/test/CodeGen/ARM/global-merge-addrspace.ll Mon Mar 23
> 16:17:36 2015
> @@ -1,4 +1,4 @@
> -; RUN: llc < %s -mtriple=thumb-apple-darwin | FileCheck %s
> +; RUN: llc < %s -mtriple=thumb-apple-darwin -O3 | FileCheck %s
> ; Test the GlobalMerge pass. Check that the pass does not crash when using
> ; multiple address spaces.
>
>
> Modified: llvm/trunk/test/CodeGen/ARM/global-merge.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/
> CodeGen/ARM/global-merge.ll?rev=233024&r1=233023&r2=233024&view=diff
> ============================================================
> ==================
> --- llvm/trunk/test/CodeGen/ARM/global-merge.ll (original)
> +++ llvm/trunk/test/CodeGen/ARM/global-merge.ll Mon Mar 23 16:17:36 2015
> @@ -1,4 +1,4 @@
> -; RUN: llc < %s -mtriple=thumb-apple-darwin -global-merge-on-const=true |
> FileCheck %s
> +; RUN: llc < %s -mtriple=thumb-apple-darwin -O3
> -global-merge-on-const=true | FileCheck %s
> ; Test the ARMGlobalMerge pass. Use -march=thumb because it has a small
> ; value for the maximum offset (127).
>
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20150323/1d24dc13/attachment.html>
More information about the llvm-commits
mailing list