[cfe-dev] __maybe_unused for conditional struct field?
Andrew Tomazos via cfe-dev
cfe-dev at lists.llvm.org
Fri Nov 5 18:08:45 PDT 2021
I could be wrong, but I think __maybe_unused is an old way to spell
[[maybe_unused]] which is documented here:
https://eel.is/c++draft/dcl.attr.unused
In short it indicates that an entity might be intentionally unused, so it
suppresses a warning that something might be accidentally unused. It
should have no semantic effect (such as an impact on layout).
On Fri, Nov 5, 2021 at 3:23 PM Vincent Li via cfe-dev <
cfe-dev at lists.llvm.org> wrote:
> Hi,
>
> I could be not making sense here since I am newbie to compiler and
> not even sure if this is a problem that compiler should care to
> address
>
> I ran into this
> https://github.com/cilium/cilium/pull/17370#discussion_r731170618
>
> where the suggestion to add conditional field like below,
>
>
> struct remote_endpoint_info {
> __u32 sec_label;
> __u32 tunnel_endpoint;
> #ifdef ENABLE_VTEP
> mac_t vtep_mac;
> #endif
> __u8 key;
> };
>
> but it cause misalignment issue with golang struct below:
>
> // RemoteEndpointInfo implements the bpf.MapValue interface. It contains
> the
> // security identity of a remote endpoint.
> // +k8s:deepcopy-gen=true
> +k8s:deepcopy-gen:interfaces=github.com/cilium/cilium/pkg/bpf.MapValue
> type RemoteEndpointInfo struct {
> SecurityIdentity uint32 `align:"sec_label"`
> TunnelEndpoint types.IPv4 `align:"tunnel_endpoint"`
> VtepMAC mac.Uint64MAC `align:"vtep_mac"`
> Key uint8 `align:"key"`
> }
>
> so out of my imagination without understanding things going on
> underneath, I attempted to use __maybe_unused since I saw it being
> used for stack variable,
>
> struct remote_endpoint_info {
> __u32 sec_label;
> __u32 tunnel_endpoint;
> mac_t vtep_mac __maybe_unused;
> __u8 key;
> };
>
> the clang llvm did not complain error, but it has no effect on the
> struct memory layout neither, so I wonder if __maybe_unused to struct
> field is a thing, or if I am looking for wrong solution for the
> problem, appreciate any input
>
> Thanks
>
> Vincent
> _______________________________________________
> cfe-dev mailing list
> cfe-dev at lists.llvm.org
> https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20211106/85c19666/attachment-0001.html>
More information about the cfe-dev
mailing list