about summary refs log tree commit diff
path: root/compiler/rustc_codegen_llvm/src
diff options
context:
space:
mode:
authorAlex Crichton <alex@alexcrichton.com>2021-11-10 10:55:30 -0800
committerAlex Crichton <alex@alexcrichton.com>2021-11-10 11:07:43 -0800
commit1ac5d7dcde57c3f4baa975d79dbdb57dfdb2489c (patch)
treeeae37e304a8d3f072dd69823d59c2601447e858c /compiler/rustc_codegen_llvm/src
parent68ca579406f2fa9ec62710e4a4d5d3e07a168d3c (diff)
downloadrust-1ac5d7dcde57c3f4baa975d79dbdb57dfdb2489c.tar.gz
rust-1ac5d7dcde57c3f4baa975d79dbdb57dfdb2489c.zip
std: Tweak expansion of thread-local const
This commit tweaks the expansion of `thread_local!` when combined with a
`const { ... }` value to help ensure that the rules which apply to
`const { ... }` blocks will be the same as when they're stabilized.
Previously with this invocation:

    thread_local!(static NAME: Type = const { init_expr });

this would generate (on supporting platforms):

    #[thread_local]
    static NAME: Type = init_expr;

instead the macro now expands to:

    const INIT_EXPR: Type = init_expr;
    #[thread_local]
    static NAME: Type = INIT_EXPR;

with the hope that because `init_expr` is defined as a `const` item then
it's not accidentally allowing more behavior than if it were put into a
`static`. For example on the stabilization issue [this example][ex] now
gives the same error both ways.

[ex]: https://github.com/rust-lang/rust/issues/84223#issuecomment-953384298
Diffstat (limited to 'compiler/rustc_codegen_llvm/src')
0 files changed, 0 insertions, 0 deletions