Software: Apache. PHP/5.4.45 

uname -a: Linux webm056.cluster010.gra.hosting.ovh.net 5.15.167-ovh-vps-grsec-zfs-classid #1 SMP Tue
Sep 17 08:14:20 UTC 2024 x86_64
 

uid=243112(mycochar) gid=100(users) groups=100(users)  

Safe-mode: OFF (not secure)

/home/mycochar/www/image/photo/gcc-12.3.0/gcc/testsuite/g++.dg/warn/   drwxr-xr-x
Free 0 B of 0 B (0%)
Your ip: 216.73.216.77 - Server ip: 213.186.33.19
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    

[Enumerate]    [Encoder]    [Tools]    [Proc.]    [FTP Brute]    [Sec.]    [SQL]    [PHP-Code]    [Backdoor Host]    [Back-Connection]    [milw0rm it!]    [PHP-Proxy]    [Self remove]
    


Viewing file:     Wrange-loop-construct.C (4.19 KB)      -rw-r--r--
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
// PR c++/94695
// { dg-do compile { target c++11 } }
// { dg-options "-Wrange-loop-construct" }

#include <initializer_list>

struct Small {
  char arr[64];
};

struct Big_aggr {
  char arr[65];
};

struct Big_triv_copy {
  char arr[65];
  Big_triv_copy() { }
};

struct Big {
  char arr[65];
  Big () = default;
  Big(const Big&);
};

struct Foo { };
struct Bar {
  char arr[100];
  Bar(Foo);
  Bar(int);
  operator int();
};

template<typename T>
struct It {
  T operator*();
  It operator++();
  bool operator!=(const It);
};

template<typename T>
struct Cont {
  using I = It<T>;
  I begin();
  I end();
};

#define TEST                        \
  void fn_macro()                    \
  {                            \
    Cont<Bar &> cont_bar_ref;                \
    for (const Bar x : cont_bar_ref) { (void) x; }  \
  }

TEST

Cont<Bar &>& foo ();
Cont<Bar &> foo2 ();

void
fn1 ()
{
  for (const auto x : foo () ) { (void) x; } // { dg-warning "creates a copy" }
  for (const auto x : foo2 () ) { (void) x; } // { dg-warning "creates a copy" }

  Small s{};
  Small sa[5] = { };
  for (const auto x : sa) { (void) x; }
  for (const auto x : { s, s, s }) { (void) x; }

  Big_aggr b{};
  Big_aggr ba[5] = { };
  for (const auto x : ba) { (void) x; } // { dg-warning "creates a copy" }
  for (const auto x : { b, b, b }) { (void) x; } // { dg-warning "creates a copy" }

  Big_triv_copy bt{};
  Big_triv_copy bta[5];
  for (const auto x : bta) { (void) x; } // { dg-warning "creates a copy" }
  for (const auto x : { bt, bt, bt }) { (void) x; } // { dg-warning "creates a copy" }

  Big b2;
  Big ba2[5];
  for (const auto x : ba2) { (void) x; } // { dg-warning "creates a copy" }
  for (const auto x : { b2, b2, b2 }) { (void) x; } // { dg-warning "creates a copy" }
}

void
fn2 ()
{
  Cont<int> cont_int;
  for (const auto x : cont_int) { (void) x; }
  for (const int x : cont_int) { (void) x; }
  for (int x : cont_int) { (void) x; }
  for (const auto &x : cont_int) { (void) x; }
  for (double x : cont_int) { (void) x; }
  for (const double x : cont_int) { (void) x; }
  for (const Bar x : cont_int) { (void) x; }
  for (Bar x : cont_int) { (void) x; }
}

void
fn3 ()
{
  Cont<int &> cont_int_ref;
  for (const int x : cont_int_ref) { (void) x; }
  for (int x : cont_int_ref) { (void) x; }
  for (const double x : cont_int_ref) { (void) x; }
  for (double x : cont_int_ref) { (void) x; }
  for (const Bar x : cont_int_ref) { (void) x; }
  for (Bar x : cont_int_ref) { (void) x; }
}

void
fn4 ()
{
  Cont<Bar> cont_bar;
  for (const Bar x : cont_bar) { (void) x; }
  for (Bar x : cont_bar) { (void) x; }
  for (const int x : cont_bar) { (void) x; }
  for (int x : cont_bar) { (void) x; }
}

void
fn5 ()
{
  Cont<Bar&> cont_bar_ref;
  for (const Bar x : cont_bar_ref) { (void) x; } // { dg-warning "creates a copy" }
  for (Bar x : cont_bar_ref) { (void) x; }
  for (const int x : cont_bar_ref) { (void) x; }
  for (int x : cont_bar_ref) { (void) x; }
}

void
fn6 ()
{
  Cont<Foo> cont_foo;
  for (const Bar x : cont_foo) { (void) x; }
  for (Bar x : cont_foo) { (void) x; }
}

void
fn7 ()
{
  Cont<Foo &> cont_foo_ref;
  for (const Bar x : cont_foo_ref) { (void) x; }
  for (Bar x : cont_foo_ref) { (void) x; }
}

void
fn8 ()
{
  double arr[2];
  for (const double x : arr) { (void) x; }
  for (double x : arr) { (void) x; }
  for (const int x : arr) { (void) x; }
  for (int x : arr) { (void) x; }
  for (const Bar x : arr) { (void) x; }
  for (Bar x : arr) { (void) x; }
}

void
fn9 ()
{
  Foo foo[2];
  for (const Foo x : foo) { (void) x; }
  for (Foo x : foo) { (void) x; }
  for (const Bar x : foo) { (void) x; }
  for (Bar x : foo) { (void) x; }
}

void
fn10 ()
{
  Bar bar[2] = { 1, 2 };
  for (const Bar x : bar) { (void) x; } // { dg-warning "creates a copy" }
  for (Bar x : bar) { (void) x; }
  for (const int x : bar) { (void) x; }
  for (int x : bar) { (void) x; }
}

template<typename T>
void
fn11 ()
{
  Cont<Bar> cont_bar;
  for (const Bar x : cont_bar) { (void) x; }

  Cont<Bar&> cont_bar_ref;
  for (const Bar x : cont_bar_ref) { (void) x; } // { dg-warning "creates a copy" }

  Cont<T> cont_dep;
  for (const T x : cont_dep) { (void) x; }
}

template<typename T>
void
fn12 ()
{
  for (const auto x : { T{} }) { (void) x; } // { dg-warning "creates a copy" }
}

void
invoke ()
{
  fn11<int> ();
  fn12<Big> ();
}

Enter:
 
Select:
 

Useful Commands
 
Warning. Kernel may be alerted using higher levels
Kernel Info:

Php Safe-Mode Bypass (Read Files)

File:

eg: /etc/passwd

Php Safe-Mode Bypass (List Directories):

Dir:

eg: /etc/

Search
  - regexp 

Upload
 
[ ok ]

Make Dir
 
[ ok ]
Make File
 
[ ok ]

Go Dir
 
Go File
 

--[ x2300 Locus7Shell v. 1.0a beta Modded by #!physx^ | www.LOCUS7S.com | Generation time: 0.0056 ]--