On 8 July 2015 at 16:59, Olivier Martin <olivier.mar...@arm.com> wrote:
> For ARM architectures, I only disable this flag for RELEASE build:
>

OK, I hadn't noticed that. This means my patch would be only for the
convenience of the Intel engineers (and my peace of mind as operator
of a Jenkins job that gets broken all the time :-)) since the other
use case I described is already covered by these.

So please disregard my patch then.


> $ grep -r unused-but-set-variable Conf/tools_def.txt
> 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
> RELEASE_GCC46_ARM_CC_FLAGS       = DEF(GCC46_ARM_CC_FLAGS) 
> -Wno-unused-but-set-variable
> RELEASE_GCC47_ARM_CC_FLAGS       = DEF(GCC47_ARM_CC_FLAGS) 
> -Wno-unused-but-set-variable
> RELEASE_GCC47_AARCH64_CC_FLAGS   = DEF(GCC47_AARCH64_CC_FLAGS) 
> -Wno-unused-but-set-variable
> RELEASE_GCC48_ARM_CC_FLAGS       = DEF(GCC48_ARM_CC_FLAGS) 
> -Wno-unused-but-set-variable
> RELEASE_GCC48_AARCH64_CC_FLAGS   = DEF(GCC48_AARCH64_CC_FLAGS) 
> -Wno-unused-but-set-variable
> RELEASE_GCC49_ARM_CC_FLAGS       = DEF(GCC49_ARM_CC_FLAGS) 
> -Wno-unused-but-set-variable
> RELEASE_GCC49_AARCH64_CC_FLAGS   = DEF(GCC49_AARCH64_CC_FLAGS) 
> -Wno-unused-but-set-variable
>
>
> -----Original Message-----
> From: Ard Biesheuvel [mailto:ard.biesheu...@linaro.org]
> Sent: 08 July 2015 14:24
> To: edk2-devel@lists.sourceforge.net; ler...@redhat.com; Olivier Martin; 
> leif.lindh...@linaro.org; jordan.l.jus...@intel.com
> Cc: roy.fr...@linaro.org; Ard Biesheuvel
> Subject: [PATCH] BaseTools/GCC: allow unused but set variables
>
> This fixes a recurring problem where patches that have only been tested on MS 
> toolchains break the build on GCC because they use variables that are only 
> written but never read.
>
> However, there is a valid pattern where this may happen as well.
> For instance,
>
>   Status = SomeFunc (&OutVar);
>   ASSERT_EFI_ERROR (Status);
>   if (Outvar == ... ) { ... }
>   // Status never referenced again
>
> may never access Status again at all in RELEASE builds, since the 
> ASSERT_EFI_ERROR () macro evaluates to nothing in that case.
>
> So let's allow this pattern, by passing the appropriate GCC command line 
> option.
>
> Contributed-under: TianoCore Contribution Agreement 1.0
> Signed-off-by: Ard Biesheuvel <ard.biesheu...@linaro.org>
> ---
>  BaseTools/Conf/tools_def.template | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/BaseTools/Conf/tools_def.template 
> b/BaseTools/Conf/tools_def.template
> index 7edd7590956b..15d8db04232f 100644
> --- a/BaseTools/Conf/tools_def.template
> +++ b/BaseTools/Conf/tools_def.template
> @@ -3813,7 +3813,7 @@ NOOPT_DDK3790xASL_IPF_DLINK_FLAGS    = /NOLOGO 
> /NODEFAULTLIB /LTCG /DLL /OPT:REF
>  DEBUG_*_*_OBJCOPY_ADDDEBUGFLAG     = 
> --add-gnu-debuglink=$(DEBUG_DIR)/$(MODULE_NAME).debug
>  RELEASE_*_*_OBJCOPY_ADDDEBUGFLAG   =
>
> -DEFINE GCC_ALL_CC_FLAGS            = -g -Os -fshort-wchar 
> -fno-strict-aliasing -Wall -Werror -Wno-array-bounds -c -include AutoGen.h
> +DEFINE GCC_ALL_CC_FLAGS            = -g -Os -fshort-wchar 
> -fno-strict-aliasing -Wall -Werror -Wno-array-bounds -c -include AutoGen.h 
> -Wno-error=unused-but-set-variable
>  DEFINE GCC_IA32_CC_FLAGS           = DEF(GCC_ALL_CC_FLAGS) -m32 
> -malign-double -freorder-blocks -freorder-blocks-and-partition -O2 
> -mno-stack-arg-probe
>  DEFINE GCC_X64_CC_FLAGS            = DEF(GCC_ALL_CC_FLAGS) -mno-red-zone 
> -Wno-address -mno-stack-arg-probe
>  DEFINE GCC_IPF_CC_FLAGS            = DEF(GCC_ALL_CC_FLAGS) 
> -minline-int-divide-min-latency
> --
> 1.9.1
>
>
> -- 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
>

------------------------------------------------------------------------------
Don't Limit Your Business. Reach for the Cloud.
GigeNET's Cloud Solutions provide you with the tools and support that
you need to offload your IT needs and focus on growing your business.
Configured For All Businesses. Start Your Cloud Today.
https://www.gigenetcloud.com/
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/edk2-devel

Reply via email to