• Harris Hancock's avatar
    Convert brand-pointer to constexpr-function (1/3) · 1572e754
    Harris Hancock authored
    MSVC erroneously refuses to compile code which calculates the address of
    objects of static storage duration at compile-time, despite this being
    legal. Work around this by changing `_capnpPrivate::brand` from constexpr
    pointers to static constexpr functions returning pointers. The compiler
    is then free to calculate it at compile-time if it can (gcc, clang), but
    can also defer it to run-time if it can't (MSVC).
    
    This change is split into three commits:
    
    1. Changes to the code generator (this commit).
    2. A bootstrap regeneration, after which the codebase will not compile.
    3. Changes to the generated code support header, after which the codebase
    will again compile.
    1572e754
Name
Last commit
Last update
..
compat Loading commit data...
compiler Loading commit data...
testdata Loading commit data...
CMakeLists.txt Loading commit data...
any-test.c++ Loading commit data...
any.c++ Loading commit data...
any.h Loading commit data...
arena.c++ Loading commit data...
arena.h Loading commit data...
blob-test.c++ Loading commit data...
blob.c++ Loading commit data...
blob.h Loading commit data...
bootstrap-test.ekam-rule Loading commit data...
c++.capnp Loading commit data...
c++.capnp.c++ Loading commit data...
c++.capnp.h Loading commit data...
canonicalize-test.c++ Loading commit data...
capability-test.c++ Loading commit data...
capability.c++ Loading commit data...
capability.h Loading commit data...
capnpc.ekam-rule Loading commit data...
common-test.c++ Loading commit data...
common.h Loading commit data...
dynamic-capability.c++ Loading commit data...
dynamic-test.c++ Loading commit data...
dynamic.c++ Loading commit data...
dynamic.h Loading commit data...
encoding-test.c++ Loading commit data...
endian-fallback-test.c++ Loading commit data...
endian-reverse-test.c++ Loading commit data...
endian-test.c++ Loading commit data...
endian.h Loading commit data...
ez-rpc-test.c++ Loading commit data...
ez-rpc.c++ Loading commit data...
ez-rpc.h Loading commit data...
fuzz-test.c++ Loading commit data...
generated-header-support.h Loading commit data...
layout-test.c++ Loading commit data...
layout.c++ Loading commit data...
layout.h Loading commit data...
list.c++ Loading commit data...
list.h Loading commit data...
membrane-test.c++ Loading commit data...
membrane.c++ Loading commit data...
membrane.h Loading commit data...
message-test.c++ Loading commit data...
message.c++ Loading commit data...
message.h Loading commit data...
orphan-test.c++ Loading commit data...
orphan.h Loading commit data...
persistent.capnp Loading commit data...
persistent.capnp.c++ Loading commit data...
persistent.capnp.h Loading commit data...
pointer-helpers.h Loading commit data...
pretty-print.h Loading commit data...
raw-schema.h Loading commit data...
rpc-prelude.h Loading commit data...
rpc-test.c++ Loading commit data...
rpc-twoparty-test.c++ Loading commit data...
rpc-twoparty.c++ Loading commit data...
rpc-twoparty.capnp Loading commit data...
rpc-twoparty.capnp.c++ Loading commit data...
rpc-twoparty.capnp.h Loading commit data...
rpc-twoparty.h Loading commit data...
rpc.c++ Loading commit data...
rpc.capnp Loading commit data...
rpc.capnp.c++ Loading commit data...
rpc.capnp.h Loading commit data...
rpc.h Loading commit data...
schema-lite.h Loading commit data...
schema-loader-test.c++ Loading commit data...
schema-loader.c++ Loading commit data...
schema-loader.h Loading commit data...
schema-parser-test.c++ Loading commit data...
schema-parser.c++ Loading commit data...
schema-parser.h Loading commit data...
schema-test.c++ Loading commit data...
schema.c++ Loading commit data...
schema.capnp Loading commit data...
schema.capnp.c++ Loading commit data...
schema.capnp.h Loading commit data...
schema.h Loading commit data...
serialize-async-test.c++ Loading commit data...
serialize-async.c++ Loading commit data...
serialize-async.h Loading commit data...
serialize-packed-test.c++ Loading commit data...
serialize-packed.c++ Loading commit data...
serialize-packed.h Loading commit data...
serialize-test.c++ Loading commit data...
serialize-text-test.c++ Loading commit data...
serialize-text.c++ Loading commit data...
serialize-text.h Loading commit data...
serialize.c++ Loading commit data...
serialize.h Loading commit data...
stringify-test.c++ Loading commit data...
stringify.c++ Loading commit data...
test-import.capnp Loading commit data...
test-import2.capnp Loading commit data...
test-util.c++ Loading commit data...
test-util.h Loading commit data...
test.capnp Loading commit data...