On 03/24/16 07:28, Ard Biesheuvel wrote:
> This aligns the GCC definitions for 4.6 and up to align with the ARM and
> AARCH64 definitions, which is to ignore unused but set variables only on
> RELEASE builds. This allows us to find instances of unused variables that
> are left behind after refactoring. It also allows us to find bad new code,
> which, due to the EDK2 coding style which disallows initialized automatic
> variables, may contain such variables without having been noticed by other
> toolchains.
> 
> Contributed-under: TianoCore Contribution Agreement 1.0
> Signed-off-by: Ard Biesheuvel <ard.biesheu...@linaro.org>
> ---
>  BaseTools/Conf/tools_def.template | 36 ++++++++++++++------
>  1 file changed, 26 insertions(+), 10 deletions(-)
> 
> diff --git a/BaseTools/Conf/tools_def.template 
> b/BaseTools/Conf/tools_def.template
> index b1577af8c897..fc06ffa6e6be 100644
> --- a/BaseTools/Conf/tools_def.template
> +++ b/BaseTools/Conf/tools_def.template
> @@ -4371,8 +4371,8 @@ DEFINE GCC45_X64_DLINK_FLAGS         = 
> DEF(GCC44_X64_DLINK_FLAGS)
>  DEFINE GCC45_X64_DLINK2_FLAGS        = DEF(GCC44_X64_DLINK2_FLAGS)
>  DEFINE GCC45_ASM_FLAGS               = DEF(GCC44_ASM_FLAGS)
>  
> -DEFINE GCC46_IA32_CC_FLAGS           = DEF(GCC45_IA32_CC_FLAGS) -Wno-address 
> -Wno-unused-but-set-variable
> -DEFINE GCC46_X64_CC_FLAGS            = DEF(GCC45_X64_CC_FLAGS) -Wno-address 
> -Wno-unused-but-set-variable
> +DEFINE GCC46_IA32_CC_FLAGS           = DEF(GCC45_IA32_CC_FLAGS) -Wno-address
> +DEFINE GCC46_X64_CC_FLAGS            = DEF(GCC45_X64_CC_FLAGS) -Wno-address
>  DEFINE GCC46_IA32_X64_DLINK_COMMON   = DEF(GCC45_IA32_X64_DLINK_COMMON)
>  DEFINE GCC46_IA32_X64_ASLDLINK_FLAGS = DEF(GCC45_IA32_X64_ASLDLINK_FLAGS)
>  DEFINE GCC46_IA32_X64_DLINK_FLAGS    = DEF(GCC45_IA32_X64_DLINK_FLAGS)
> @@ -4715,13 +4715,15 @@ DEFINE GCC49_AARCH64_ASLDLINK_FLAGS  = 
> DEF(GCC48_AARCH64_ASLDLINK_FLAGS)
>  *_GCC46_IA32_ASLCC_FLAGS          = DEF(GCC_ASLCC_FLAGS) -m32
>  *_GCC46_IA32_ASLDLINK_FLAGS       = DEF(GCC46_IA32_X64_ASLDLINK_FLAGS) -m 
> elf_i386
>  *_GCC46_IA32_ASM_FLAGS            = DEF(GCC46_ASM_FLAGS) -m32 -march=i386
> -*_GCC46_IA32_CC_FLAGS             = DEF(GCC46_IA32_CC_FLAGS) -Os
>  *_GCC46_IA32_DLINK_FLAGS          = DEF(GCC46_IA32_X64_DLINK_FLAGS) -m 
> elf_i386 --oformat=elf32-i386
>  *_GCC46_IA32_DLINK2_FLAGS         = DEF(GCC46_IA32_DLINK2_FLAGS)
>  *_GCC46_IA32_RC_FLAGS             = DEF(GCC_IA32_RC_FLAGS)
>  *_GCC46_IA32_OBJCOPY_FLAGS        = 
>  *_GCC46_IA32_NASM_FLAGS           = -f elf32
>  
> +  DEBUG_GCC46_IA32_CC_FLAGS       = DEF(GCC46_IA32_CC_FLAGS) -Os
> +RELEASE_GCC46_IA32_CC_FLAGS       = DEF(GCC46_IA32_CC_FLAGS) -Os 
> -Wno-unused-but-set-variable
> +
>  ##################
>  # GCC46 X64 definitions
>  ##################
> @@ -4740,13 +4742,15 @@ DEFINE GCC49_AARCH64_ASLDLINK_FLAGS  = 
> DEF(GCC48_AARCH64_ASLDLINK_FLAGS)
>  *_GCC46_X64_ASLCC_FLAGS          = DEF(GCC_ASLCC_FLAGS) -m64
>  *_GCC46_X64_ASLDLINK_FLAGS       = DEF(GCC46_IA32_X64_ASLDLINK_FLAGS) -m 
> elf_x86_64
>  *_GCC46_X64_ASM_FLAGS            = DEF(GCC46_ASM_FLAGS) -m64 -melf_x86_64
> -*_GCC46_X64_CC_FLAGS             = DEF(GCC46_X64_CC_FLAGS)
>  *_GCC46_X64_DLINK_FLAGS          = DEF(GCC46_X64_DLINK_FLAGS)
>  *_GCC46_X64_DLINK2_FLAGS         = DEF(GCC46_X64_DLINK2_FLAGS)
>  *_GCC46_X64_RC_FLAGS             = DEF(GCC_X64_RC_FLAGS)
>  *_GCC46_X64_OBJCOPY_FLAGS        = 
>  *_GCC46_X64_NASM_FLAGS           = -f elf64
>  
> +  DEBUG_GCC46_X64_CC_FLAGS       = DEF(GCC46_X64_CC_FLAGS)
> +RELEASE_GCC46_X64_CC_FLAGS       = DEF(GCC46_X64_CC_FLAGS) 
> -Wno-unused-but-set-variable
> +
>  ##################
>  # GCC46 ARM definitions
>  ##################
> @@ -4816,13 +4820,15 @@ RELEASE_GCC46_ARM_CC_FLAGS       = 
> DEF(GCC46_ARM_CC_FLAGS) -D__ARM_FEATURE_UNALI
>  *_GCC47_IA32_ASLCC_FLAGS          = DEF(GCC_ASLCC_FLAGS) -m32
>  *_GCC47_IA32_ASLDLINK_FLAGS       = DEF(GCC47_IA32_X64_ASLDLINK_FLAGS) -m 
> elf_i386
>  *_GCC47_IA32_ASM_FLAGS            = DEF(GCC47_ASM_FLAGS) -m32 -march=i386
> -*_GCC47_IA32_CC_FLAGS             = DEF(GCC47_IA32_CC_FLAGS) -Os
>  *_GCC47_IA32_DLINK_FLAGS          = DEF(GCC47_IA32_X64_DLINK_FLAGS) -m 
> elf_i386 --oformat=elf32-i386
>  *_GCC47_IA32_DLINK2_FLAGS         = DEF(GCC47_IA32_DLINK2_FLAGS)
>  *_GCC47_IA32_RC_FLAGS             = DEF(GCC_IA32_RC_FLAGS)
>  *_GCC47_IA32_OBJCOPY_FLAGS        = 
>  *_GCC47_IA32_NASM_FLAGS           = -f elf32
>  
> +  DEBUG_GCC47_IA32_CC_FLAGS       = DEF(GCC47_IA32_CC_FLAGS) -Os
> +RELEASE_GCC47_IA32_CC_FLAGS       = DEF(GCC47_IA32_CC_FLAGS) -Os 
> -Wno-unused-but-set-variable
> +
>  ##################
>  # GCC47 X64 definitions
>  ##################
> @@ -4841,13 +4847,15 @@ RELEASE_GCC46_ARM_CC_FLAGS       = 
> DEF(GCC46_ARM_CC_FLAGS) -D__ARM_FEATURE_UNALI
>  *_GCC47_X64_ASLCC_FLAGS          = DEF(GCC_ASLCC_FLAGS) -m64
>  *_GCC47_X64_ASLDLINK_FLAGS       = DEF(GCC47_IA32_X64_ASLDLINK_FLAGS) -m 
> elf_x86_64
>  *_GCC47_X64_ASM_FLAGS            = DEF(GCC47_ASM_FLAGS) -m64
> -*_GCC47_X64_CC_FLAGS             = DEF(GCC47_X64_CC_FLAGS)
>  *_GCC47_X64_DLINK_FLAGS          = DEF(GCC47_X64_DLINK_FLAGS)
>  *_GCC47_X64_DLINK2_FLAGS         = DEF(GCC47_X64_DLINK2_FLAGS)
>  *_GCC47_X64_RC_FLAGS             = DEF(GCC_X64_RC_FLAGS)
>  *_GCC47_X64_OBJCOPY_FLAGS        = 
>  *_GCC47_X64_NASM_FLAGS           = -f elf64
>  
> +  DEBUG_GCC47_X64_CC_FLAGS       = DEF(GCC47_X64_CC_FLAGS)
> +RELEASE_GCC47_X64_CC_FLAGS       = DEF(GCC47_X64_CC_FLAGS) 
> -Wno-unused-but-set-variable
> +
>  ##################
>  # GCC47 ARM definitions
>  ##################
> @@ -4944,13 +4952,15 @@ RELEASE_GCC47_AARCH64_CC_FLAGS   = 
> DEF(GCC47_AARCH64_CC_FLAGS) -Wno-unused-but-s
>  *_GCC48_IA32_ASLCC_FLAGS          = DEF(GCC_ASLCC_FLAGS) -m32
>  *_GCC48_IA32_ASLDLINK_FLAGS       = DEF(GCC48_IA32_X64_ASLDLINK_FLAGS) -m 
> elf_i386
>  *_GCC48_IA32_ASM_FLAGS            = DEF(GCC48_ASM_FLAGS) -m32 -march=i386
> -*_GCC48_IA32_CC_FLAGS             = DEF(GCC48_IA32_CC_FLAGS) -Os
>  *_GCC48_IA32_DLINK_FLAGS          = DEF(GCC48_IA32_X64_DLINK_FLAGS) -m 
> elf_i386 --oformat=elf32-i386
>  *_GCC48_IA32_DLINK2_FLAGS         = DEF(GCC48_IA32_DLINK2_FLAGS)
>  *_GCC48_IA32_RC_FLAGS             = DEF(GCC_IA32_RC_FLAGS)
>  *_GCC48_IA32_OBJCOPY_FLAGS        = 
>  *_GCC48_IA32_NASM_FLAGS           = -f elf32
>  
> +  DEBUG_GCC48_IA32_CC_FLAGS       = DEF(GCC48_IA32_CC_FLAGS) -Os
> +RELEASE_GCC48_IA32_CC_FLAGS       = DEF(GCC48_IA32_CC_FLAGS) -Os 
> -Wno-unused-but-set-variable
> +
>  ##################
>  # GCC48 X64 definitions
>  ##################
> @@ -4969,13 +4979,15 @@ RELEASE_GCC47_AARCH64_CC_FLAGS   = 
> DEF(GCC47_AARCH64_CC_FLAGS) -Wno-unused-but-s
>  *_GCC48_X64_ASLCC_FLAGS          = DEF(GCC_ASLCC_FLAGS) -m64
>  *_GCC48_X64_ASLDLINK_FLAGS       = DEF(GCC48_IA32_X64_ASLDLINK_FLAGS) -m 
> elf_x86_64
>  *_GCC48_X64_ASM_FLAGS            = DEF(GCC48_ASM_FLAGS) -m64
> -*_GCC48_X64_CC_FLAGS             = DEF(GCC48_X64_CC_FLAGS)
>  *_GCC48_X64_DLINK_FLAGS          = DEF(GCC48_X64_DLINK_FLAGS)
>  *_GCC48_X64_DLINK2_FLAGS         = DEF(GCC48_X64_DLINK2_FLAGS)
>  *_GCC48_X64_RC_FLAGS             = DEF(GCC_X64_RC_FLAGS)
>  *_GCC48_X64_OBJCOPY_FLAGS        = 
>  *_GCC48_X64_NASM_FLAGS           = -f elf64
>  
> +  DEBUG_GCC48_X64_CC_FLAGS       = DEF(GCC48_X64_CC_FLAGS)
> +RELEASE_GCC48_X64_CC_FLAGS       = DEF(GCC48_X64_CC_FLAGS) 
> -Wno-unused-but-set-variable
> +
>  ##################
>  # GCC48 ARM definitions
>  ##################
> @@ -5072,13 +5084,15 @@ RELEASE_GCC48_AARCH64_CC_FLAGS   = 
> DEF(GCC48_AARCH64_CC_FLAGS) -Wno-unused-but-s
>  *_GCC49_IA32_ASLCC_FLAGS          = DEF(GCC_ASLCC_FLAGS) -m32
>  *_GCC49_IA32_ASLDLINK_FLAGS       = DEF(GCC49_IA32_X64_ASLDLINK_FLAGS) -m 
> elf_i386
>  *_GCC49_IA32_ASM_FLAGS            = DEF(GCC49_ASM_FLAGS) -m32 -march=i386
> -*_GCC49_IA32_CC_FLAGS             = DEF(GCC49_IA32_CC_FLAGS) -Os
>  *_GCC49_IA32_DLINK_FLAGS          = DEF(GCC49_IA32_X64_DLINK_FLAGS) -m 
> elf_i386 --oformat=elf32-i386
>  *_GCC49_IA32_DLINK2_FLAGS         = DEF(GCC49_IA32_DLINK2_FLAGS)
>  *_GCC49_IA32_RC_FLAGS             = DEF(GCC_IA32_RC_FLAGS)
>  *_GCC49_IA32_OBJCOPY_FLAGS        = 
>  *_GCC49_IA32_NASM_FLAGS           = -f elf32
>  
> +  DEBUG_GCC49_IA32_CC_FLAGS       = DEF(GCC49_IA32_CC_FLAGS) -Os
> +RELEASE_GCC49_IA32_CC_FLAGS       = DEF(GCC49_IA32_CC_FLAGS) -Os 
> -Wno-unused-but-set-variable
> +
>  ##################
>  # GCC49 X64 definitions
>  ##################
> @@ -5097,13 +5111,15 @@ RELEASE_GCC48_AARCH64_CC_FLAGS   = 
> DEF(GCC48_AARCH64_CC_FLAGS) -Wno-unused-but-s
>  *_GCC49_X64_ASLCC_FLAGS          = DEF(GCC_ASLCC_FLAGS) -m64
>  *_GCC49_X64_ASLDLINK_FLAGS       = DEF(GCC49_IA32_X64_ASLDLINK_FLAGS) -m 
> elf_x86_64
>  *_GCC49_X64_ASM_FLAGS            = DEF(GCC49_ASM_FLAGS) -m64
> -*_GCC49_X64_CC_FLAGS             = DEF(GCC49_X64_CC_FLAGS)
>  *_GCC49_X64_DLINK_FLAGS          = DEF(GCC49_X64_DLINK_FLAGS)
>  *_GCC49_X64_DLINK2_FLAGS         = DEF(GCC49_X64_DLINK2_FLAGS)
>  *_GCC49_X64_RC_FLAGS             = DEF(GCC_X64_RC_FLAGS)
>  *_GCC49_X64_OBJCOPY_FLAGS        = 
>  *_GCC49_X64_NASM_FLAGS           = -f elf64
>  
> +  DEBUG_GCC49_X64_CC_FLAGS       = DEF(GCC49_X64_CC_FLAGS)
> +RELEASE_GCC49_X64_CC_FLAGS       = DEF(GCC49_X64_CC_FLAGS) 
> -Wno-unused-but-set-variable
> +
>  ##################
>  # GCC49 ARM definitions
>  ##################
> 

Very nice!

Reviewed-by: Laszlo Ersek <ler...@redhat.com>
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to