blob: b35245cc9cca8a1088836d227c85a6d3bbb4a0b3 [file] [log] [blame]
/* PR c++/83871 - wrong code for attribute const and pure on distinct
template specializations
Test to verify that attributes noreturn on multiple declarations of
the same function are merged.
{ dg-do compile }
{ dg-options "-O -fdump-tree-optimized" } */
int __attribute__ ((noreturn)) fnoreturn ();
void fnoreturn_failed ();
int test_noreturn () throw ()
{
fnoreturn ();
fnoreturn_failed ();
// Verify that the call to fnoreturn_failed() is eliminated.
// { dg-final { scan-tree-dump-not "fnoreturn_failed" "optimized" } }
// Expect no -Wreturn-type warning despite the absence of a return
// statement in a non-void function.
}
int __attribute__ ((noreturn)) fnoreturn_none ();
int fnoreturn_none ();
void fnoreturn_none_failed ();
int test_noreturn_none ()
{
fnoreturn_none ();
fnoreturn_none_failed ();
// { dg-final { scan-tree-dump-not "fnoreturn_none_failed" "optimized" } }
}
int fnone_noreturn ();
int __attribute__ ((noreturn)) fnone_noreturn ();
void fnone_noreturn_failed ();
int test_none_noreturn () throw ()
{
fnone_noreturn ();
fnone_noreturn_failed ();
// { dg-final { scan-tree-dump-not "fnone_noreturn_failed" "optimized" } }
}