From: M1cha Date: Wed, 27 Dec 2017 19:28:49 +0000 (+0800) Subject: MdePkg: add RETURNS_TWICE attribute X-Git-Tag: edk2-stable201903~2637 X-Git-Url: https://git.proxmox.com/?a=commitdiff_plain;h=2d94c38ba5e0318f9ac42c15150e6748d84587ec;p=mirror_edk2.git MdePkg: add RETURNS_TWICE attribute Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Michael Zimmermann Reviewed-by: Liming Gao --- diff --git a/MdePkg/Include/Base.h b/MdePkg/Include/Base.h index 4fd5161f50..29db8a253e 100644 --- a/MdePkg/Include/Base.h +++ b/MdePkg/Include/Base.h @@ -218,6 +218,26 @@ VERIFY_SIZE_OF (__VERIFY_UINT32_ENUM_SIZE, 4); #endif #endif +/// +/// Tell the code optimizer that the function will return twice. +/// This prevents wrong optimizations which can cause bugs. +/// +#ifndef RETURNS_TWICE + #if defined (__GNUC__) || defined (__clang__) + /// + /// Tell the code optimizer that the function will return twice. + /// This prevents wrong optimizations which can cause bugs. + /// + #define RETURNS_TWICE __attribute__((returns_twice)) + #else + /// + /// Tell the code optimizer that the function will return twice. + /// This prevents wrong optimizations which can cause bugs. + /// + #define RETURNS_TWICE + #endif +#endif + // // For symbol name in assembly code, an extra "_" is sometimes necessary //