[llvm-dev] "Do not use Static Constructors" LLVM Coding Standard rule question

Craig Topper via llvm-dev llvm-dev at lists.llvm.org
Tue Mar 8 23:42:33 PST 2016


I believe the rule is only for global variables. At least that's what the
first sentence in the section says.

"Static constructors and destructors (e.g. global variables whose types
have a constructor or destructor) should not be added to the code base, and
should be removed wherever possible."

On Tue, Mar 8, 2016 at 10:52 PM, valery pykhtin via llvm-dev <
llvm-dev at lists.llvm.org> wrote:

> Hi,
>
> I'm new here and have a question about the rule in title. Is the following
> use case also prohibited?
>
> int findNameId(StringRef Name)
> {
>    static StringMap<int> Map = createSomeIDMap();
>    return Map.lookup(Name);
> };
>
> It seems it isn't influence startup time and doesn't create initialization
> order problems. Clang isn't complaining about it with -Wglobal-constructor
> flag.
>
> I'm asking because under some interpretation of rule wording it can be
> called static constructor too.
>
> Thanks,
> Valery
>
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>
>


-- 
~Craig
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20160308/78d36470/attachment.html>


More information about the llvm-dev mailing list