aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/g++.dg/pr117919.C
blob: fa2d9c9cd1e5fd5a7400852e1e6ec200d3c59f05 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
/* PR tree-optimization/117919 */
/* { dg-do compile } */
/* { dg-options "-O1 -fno-tree-forwprop -fnon-call-exceptions --param=early-inlining-insns=192 -std=c++20" } */

char _M_p, _M_construct___beg;
struct _Alloc_hider {
  _Alloc_hider(char);
};
long _M_string_length;
void _M_destroy();
void _S_copy_chars(char *, char *, char *) noexcept;
char _M_local_data();
struct Trans_NS___cxx11_basic_string {
  _Alloc_hider _M_dataplus;
  bool _M_is_local() {
    if (_M_local_data())
      if (_M_string_length)
        return true;
    return false;
  }
  void _M_dispose() {
    if (!_M_is_local())
      _M_destroy();
  }
  char *_M_construct___end;
  Trans_NS___cxx11_basic_string(Trans_NS___cxx11_basic_string &)
      : _M_dataplus(0) {
    struct _Guard {
      ~_Guard() { _M_guarded->_M_dispose(); }
      Trans_NS___cxx11_basic_string *_M_guarded;
    } __guard0;
    _S_copy_chars(&_M_p, &_M_construct___beg, _M_construct___end);
  }
};
namespace filesystem {
struct path {
  path();
  Trans_NS___cxx11_basic_string _M_pathname;
};
} // namespace filesystem
struct FileWriter {
  filesystem::path path;
  FileWriter() : path(path) {}
};
struct LanguageFileWriter : FileWriter {
  LanguageFileWriter(filesystem::path) {}
};
int
main() {
  filesystem::path output_file;
  LanguageFileWriter writer(output_file);
}