]> git.ipfire.org Git - thirdparty/gcc.git/blame - libstdc++-v3/testsuite/29_atomics/atomic/62259.cc
Update copyright years.
[thirdparty/gcc.git] / libstdc++-v3 / testsuite / 29_atomics / atomic / 62259.cc
CommitLineData
fbd26352 1// Copyright (C) 2015-2019 Free Software Foundation, Inc.
72b0dfe1 2//
3// This file is part of the GNU ISO C++ Library. This library is free
4// software; you can redistribute it and/or modify it under the
5// terms of the GNU General Public License as published by the
6// Free Software Foundation; either version 3, or (at your option)
7// any later version.
8
9// This library is distributed in the hope that it will be useful,
10// but WITHOUT ANY WARRANTY; without even the implied warranty of
11// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12// GNU General Public License for more details.
13
14// You should have received a copy of the GNU General Public License along
15// with this library; see the file COPYING3. If not see
16// <http://www.gnu.org/licenses/>.
17
3d20c2fe 18// { dg-do compile { target c++11 } }
72b0dfe1 19// { dg-require-atomic-builtins "" }
20// { dg-require-cstdint "" }
72b0dfe1 21
22#include <atomic>
23#include <cstdint>
24
25using std::int32_t;
26using std::int64_t;
27
28// libstdc++/62259
29
30struct twoints {
31 int32_t a;
32 int32_t b;
33};
34
8715f415 35static_assert( alignof(std::atomic<twoints>) >= alignof(int64_t),
72b0dfe1 36 "std::atomic not suitably aligned" );
37
38// libstdc++/65147
39
40struct power_of_two_obj {
41 char c [8];
42};
43
44std::atomic<power_of_two_obj> obj1;
45
70834fa4 46static_assert( __alignof__(obj1) >= alignof(int64_t),
72b0dfe1 47 "std::atomic not suitably aligned" );
48
49struct container_struct {
50 char c[1];
51 std::atomic<power_of_two_obj> ao;
52};
53
54container_struct obj2;
55
70834fa4 56static_assert( __alignof__(obj2.ao) >= alignof(int64_t),
72b0dfe1 57 "std::atomic not suitably aligned" );