[Bug c++/69494] New: Optimizer eliminates assignment to volatile subobject

2016-01-26 Thread deaeod at gmail dot com
Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: deaeod at gmail dot com Target Milestone: --- Compiler options: -O1 Code: (http://goo.gl/W1Iubr) #include struct device { volatile unsigned tcc; }; void test_device() { device dev; unsigned tcc = rand

[Bug c++/69494] Optimizer eliminates assignment to volatile subobject

2016-01-27 Thread deaeod at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69494 --- Comment #2 from Lukas --- I was wrong about what part of the standard defines the behavior for volatile access. Paragraph 8 of [intro.execution] specifies that access to volatile objects is observable behavior. Access is defined in

[Bug c++/70091] New: Codegen emits dead load on x86-64

2016-03-05 Thread deaeod at gmail dot com
++ Assignee: unassigned at gcc dot gnu.org Reporter: deaeod at gmail dot com Target Milestone: --- Code (http://goo.gl/MA8I0I): struct bitfield { void and_assign() volatile { _raw = _and(_raw, 1); // this reads twice from _raw //mov eax, DWORD PTR [rsp-24

[Bug c++/83167] New: decltype((x)) inside lambda is considered odr-use if x is not a reference

2017-11-26 Thread deaeod at gmail dot com
Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: deaeod at gmail dot com Target Milestone: --- https://godbolt.org/g/NmA3ZP #include int main() { int x = 1; int&& y = static_cast<int&&

[Bug c++/66672] std::is_same wrong result for captured reference value inside a lambda

2017-11-26 Thread deaeod at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66672 Lukas changed: What|Removed |Added CC||deaeod at gmail dot com --- Comment #2 from

[Bug c++/89683] New: Function-style cast inside alignas on struct does not compile

2019-03-12 Thread deaeod at gmail dot com
Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: deaeod at gmail dot com Target Milestone: --- The following snippet does not compile with g++: struct alignas(unsigned(8)) s {}; Workaround: struct alignas((unsigned)8) s {};