131ad4de047c50cddfc3072be3a82232c53f1ca2dAndrew Hsieh/* PR other/29639 */
231ad4de047c50cddfc3072be3a82232c53f1ca2dAndrew Hsieh/* AIX gld supports garbage collection. But AIX gcc does not support
331ad4de047c50cddfc3072be3a82232c53f1ca2dAndrew Hsieh   -ffunction-sections or -fdata-sections.  */
431ad4de047c50cddfc3072be3a82232c53f1ca2dAndrew Hsieh/* { dg-do run { xfail rs6000-*-aix* powerpc*-*-aix* } } */
531ad4de047c50cddfc3072be3a82232c53f1ca2dAndrew Hsieh/* { dg-require-gc-sections "" } */
631ad4de047c50cddfc3072be3a82232c53f1ca2dAndrew Hsieh/* { dg-options "-ffunction-sections -Wl,--gc-sections" } */
731ad4de047c50cddfc3072be3a82232c53f1ca2dAndrew Hsieh
831ad4de047c50cddfc3072be3a82232c53f1ca2dAndrew Hsiehextern "C" void abort (void);
931ad4de047c50cddfc3072be3a82232c53f1ca2dAndrew Hsieh
1031ad4de047c50cddfc3072be3a82232c53f1ca2dAndrew Hsiehint g = 0;
1131ad4de047c50cddfc3072be3a82232c53f1ca2dAndrew Hsieh
1231ad4de047c50cddfc3072be3a82232c53f1ca2dAndrew Hsiehvoid raise_exception()
1331ad4de047c50cddfc3072be3a82232c53f1ca2dAndrew Hsieh{
1431ad4de047c50cddfc3072be3a82232c53f1ca2dAndrew Hsieh  throw 1;
1531ad4de047c50cddfc3072be3a82232c53f1ca2dAndrew Hsieh}
1631ad4de047c50cddfc3072be3a82232c53f1ca2dAndrew Hsieh
1731ad4de047c50cddfc3072be3a82232c53f1ca2dAndrew Hsiehvoid used()
1831ad4de047c50cddfc3072be3a82232c53f1ca2dAndrew Hsieh{
1931ad4de047c50cddfc3072be3a82232c53f1ca2dAndrew Hsieh  try {
2031ad4de047c50cddfc3072be3a82232c53f1ca2dAndrew Hsieh    raise_exception ();
2131ad4de047c50cddfc3072be3a82232c53f1ca2dAndrew Hsieh  }
2231ad4de047c50cddfc3072be3a82232c53f1ca2dAndrew Hsieh  catch (int) {
2331ad4de047c50cddfc3072be3a82232c53f1ca2dAndrew Hsieh    g = 1;
2431ad4de047c50cddfc3072be3a82232c53f1ca2dAndrew Hsieh  }
2531ad4de047c50cddfc3072be3a82232c53f1ca2dAndrew Hsieh}
2631ad4de047c50cddfc3072be3a82232c53f1ca2dAndrew Hsieh
2731ad4de047c50cddfc3072be3a82232c53f1ca2dAndrew Hsiehvoid unused()
2831ad4de047c50cddfc3072be3a82232c53f1ca2dAndrew Hsieh{
2931ad4de047c50cddfc3072be3a82232c53f1ca2dAndrew Hsieh  try {
3031ad4de047c50cddfc3072be3a82232c53f1ca2dAndrew Hsieh    raise_exception ();
3131ad4de047c50cddfc3072be3a82232c53f1ca2dAndrew Hsieh  }
3231ad4de047c50cddfc3072be3a82232c53f1ca2dAndrew Hsieh  catch (int) {
3331ad4de047c50cddfc3072be3a82232c53f1ca2dAndrew Hsieh    g = 1;
3431ad4de047c50cddfc3072be3a82232c53f1ca2dAndrew Hsieh  }
3531ad4de047c50cddfc3072be3a82232c53f1ca2dAndrew Hsieh}
3631ad4de047c50cddfc3072be3a82232c53f1ca2dAndrew Hsieh
3731ad4de047c50cddfc3072be3a82232c53f1ca2dAndrew Hsiehint main()
3831ad4de047c50cddfc3072be3a82232c53f1ca2dAndrew Hsieh{
3931ad4de047c50cddfc3072be3a82232c53f1ca2dAndrew Hsieh  used ();
4031ad4de047c50cddfc3072be3a82232c53f1ca2dAndrew Hsieh
4131ad4de047c50cddfc3072be3a82232c53f1ca2dAndrew Hsieh  if (g != 1)
4231ad4de047c50cddfc3072be3a82232c53f1ca2dAndrew Hsieh    abort ();
4331ad4de047c50cddfc3072be3a82232c53f1ca2dAndrew Hsieh
4431ad4de047c50cddfc3072be3a82232c53f1ca2dAndrew Hsieh  return 0;
4531ad4de047c50cddfc3072be3a82232c53f1ca2dAndrew Hsieh}
46