There are a number of tests that fail because they assume that exceptions are
available, but GCN does not support them, yet.
This patch adds "dg-require-effective-target exceptions" in all the affected
tests. There's probably an automatic way to test for exceptions, but the
current implementation simply says that AMD GCN does not support them. This
should ensure that no other targets are affected by the change.
2019-01-17 Andrew Stubbs <ams@codesourcery.com>
Kwok Cheung Yeung <kcy@codesourcery.com>
Julian Brown <julian@codesourcery.com>
Tom de Vries <tom@codesourcery.com>
gcc/
* doc/sourcebuild.texi: Document dg-required-effective-target
exceptions.
gcc/testsuite/
* c-c++-common/ubsan/pr71512-1.c: Require exceptions.
* c-c++-common/ubsan/pr71512-2.c: Require exceptions.
* gcc.c-torture/compile/pr34648.c: Require exceptions.
* gcc.c-torture/compile/pr41469.c: Require exceptions.
* gcc.dg/
20111216-1.c: Require exceptions.
* gcc.dg/cleanup-10.c: Require exceptions.
* gcc.dg/cleanup-11.c: Require exceptions.
* gcc.dg/cleanup-12.c: Require exceptions.
* gcc.dg/cleanup-13.c: Require exceptions.
* gcc.dg/cleanup-5.c: Require exceptions.
* gcc.dg/cleanup-8.c: Require exceptions.
* gcc.dg/cleanup-9.c: Require exceptions.
* gcc.dg/gomp/pr29955.c: Require exceptions.
* gcc.dg/lto/pr52097_0.c: Require exceptions.
* gcc.dg/nested-func-5.c: Require exceptions.
* gcc.dg/pch/except-1.c: Require exceptions.
* gcc.dg/pch/valid-2.c: Require exceptions.
* gcc.dg/pr41470.c: Require exceptions.
* gcc.dg/pr42427.c: Require exceptions.
* gcc.dg/pr44545.c: Require exceptions.
* gcc.dg/pr47086.c: Require exceptions.
* gcc.dg/pr51481.c: Require exceptions.
* gcc.dg/pr51644.c: Require exceptions.
* gcc.dg/pr52046.c: Require exceptions.
* gcc.dg/pr54669.c: Require exceptions.
* gcc.dg/pr56424.c: Require exceptions.
* gcc.dg/pr64465.c: Require exceptions.
* gcc.dg/pr65802.c: Require exceptions.
* gcc.dg/pr67563.c: Require exceptions.
* gcc.dg/tree-ssa/pr41469-1.c: Require exceptions.
* gcc.dg/tree-ssa/ssa-dse-28.c: Require exceptions.
* gcc.dg/vect/pr46663.c: Require exceptions.
* lib/target-supports.exp (check_effective_target_exceptions): New.
Co-Authored-By: Julian Brown <julian@codesourcery.com>
Co-Authored-By: Kwok Cheung Yeung <kcy@codesourcery.com>
Co-Authored-By: Tom de Vries <tom@codesourcery.com>
From-SVN: r268025
+2019-01-17 Andrew Stubbs <ams@codesourcery.com>
+ Kwok Cheung Yeung <kcy@codesourcery.com>
+ Julian Brown <julian@codesourcery.com>
+ Tom de Vries <tom@codesourcery.com>
+
+ * doc/sourcebuild.texi: Document dg-required-effective-target
+ exceptions.
+
2019-01-17 Andrew Stubbs <ams@codesourcery.com>
Kwok Cheung Yeung <kcy@codesourcery.com>
Julian Brown <julian@codesourcery.com>
@item default_packed
Target has packed layout of structure members by default.
+@item exceptions
+Target supports exceptions.
+
@item fgraphite
Target supports Graphite optimizations.
+2019-01-17 Andrew Stubbs <ams@codesourcery.com>
+ Kwok Cheung Yeung <kcy@codesourcery.com>
+ Julian Brown <julian@codesourcery.com>
+ Tom de Vries <tom@codesourcery.com>
+
+ * c-c++-common/ubsan/pr71512-1.c: Require exceptions.
+ * c-c++-common/ubsan/pr71512-2.c: Require exceptions.
+ * gcc.c-torture/compile/pr34648.c: Require exceptions.
+ * gcc.c-torture/compile/pr41469.c: Require exceptions.
+ * gcc.dg/20111216-1.c: Require exceptions.
+ * gcc.dg/cleanup-10.c: Require exceptions.
+ * gcc.dg/cleanup-11.c: Require exceptions.
+ * gcc.dg/cleanup-12.c: Require exceptions.
+ * gcc.dg/cleanup-13.c: Require exceptions.
+ * gcc.dg/cleanup-5.c: Require exceptions.
+ * gcc.dg/cleanup-8.c: Require exceptions.
+ * gcc.dg/cleanup-9.c: Require exceptions.
+ * gcc.dg/gomp/pr29955.c: Require exceptions.
+ * gcc.dg/lto/pr52097_0.c: Require exceptions.
+ * gcc.dg/nested-func-5.c: Require exceptions.
+ * gcc.dg/pch/except-1.c: Require exceptions.
+ * gcc.dg/pch/valid-2.c: Require exceptions.
+ * gcc.dg/pr41470.c: Require exceptions.
+ * gcc.dg/pr42427.c: Require exceptions.
+ * gcc.dg/pr44545.c: Require exceptions.
+ * gcc.dg/pr47086.c: Require exceptions.
+ * gcc.dg/pr51481.c: Require exceptions.
+ * gcc.dg/pr51644.c: Require exceptions.
+ * gcc.dg/pr52046.c: Require exceptions.
+ * gcc.dg/pr54669.c: Require exceptions.
+ * gcc.dg/pr56424.c: Require exceptions.
+ * gcc.dg/pr64465.c: Require exceptions.
+ * gcc.dg/pr65802.c: Require exceptions.
+ * gcc.dg/pr67563.c: Require exceptions.
+ * gcc.dg/tree-ssa/pr41469-1.c: Require exceptions.
+ * gcc.dg/tree-ssa/ssa-dse-28.c: Require exceptions.
+ * gcc.dg/vect/pr46663.c: Require exceptions.
+ * lib/target-supports.exp (check_effective_target_exceptions): New.
+
2019-01-17 Tamar Christina <tamar.christina@arm.com>
PR target/88851
/* PR c/71512 */
/* { dg-do compile } */
/* { dg-options "-O2 -fnon-call-exceptions -ftrapv -fexceptions -fsanitize=undefined" } */
+/* { dg-require-effective-target exceptions } */
#include "../../gcc.dg/pr44545.c"
/* PR c/71512 */
/* { dg-do compile } */
/* { dg-options "-O -fexceptions -fnon-call-exceptions -ftrapv -fsanitize=undefined" } */
+/* { dg-require-effective-target exceptions } */
#include "../../gcc.dg/pr47086.c"
/* PR tree-optimization/34648 */
/* { dg-options "-fexceptions" } */
+/* { dg-require-effective-target exceptions } */
extern const unsigned short int **bar (void) __attribute__ ((const));
const char *a;
/* { dg-options "-fexceptions" } */
/* { dg-skip-if "requires alloca" { ! alloca } { "-O0" } { "" } } */
+/* { dg-require-effective-target exceptions } */
void
af (void *a)
/* { dg-do compile } */
/* { dg-options "-O -fexceptions -fnon-call-exceptions" } */
+/* { dg-require-effective-target exceptions } */
extern void f2 () __attribute__ ((noreturn));
void
/* { dg-do run { target hppa*-*-hpux* *-*-linux* *-*-gnu* powerpc*-*-darwin* *-*-darwin[912]* } } */
/* { dg-options "-fexceptions -fnon-call-exceptions -O2" } */
+/* { dg-require-effective-target exceptions } */
/* Verify that cleanups work with exception handling through signal frames
on alternate stack. */
/* { dg-do run { target hppa*-*-hpux* *-*-linux* *-*-gnu* powerpc*-*-darwin* *-*-darwin[912]* } } */
/* { dg-options "-fexceptions -fnon-call-exceptions -O2" } */
+/* { dg-require-effective-target exceptions } */
/* Verify that cleanups work with exception handling through realtime signal
frames on alternate stack. */
/* { dg-options "-O2 -fexceptions" } */
/* { dg-skip-if "" { "ia64-*-hpux11.*" } } */
/* { dg-skip-if "" { ! nonlocal_goto } } */
+/* { dg-require-effective-target exceptions } */
/* Verify unwind info in presence of alloca. */
#include <unwind.h>
/* { dg-options "-fexceptions" } */
/* { dg-skip-if "" { "ia64-*-hpux11.*" } } */
/* { dg-skip-if "" { ! nonlocal_goto } } */
+/* { dg-require-effective-target exceptions } */
/* Verify DW_OP_* handling in the unwinder. */
#include <unwind.h>
/* { dg-options "-fexceptions" } */
/* { dg-skip-if "" { "ia64-*-hpux11.*" } } */
/* { dg-skip-if "" { ! nonlocal_goto } } */
+/* { dg-require-effective-target exceptions } */
/* Verify that cleanups work with exception handling. */
#include <unwind.h>
/* { dg-do run { target hppa*-*-hpux* *-*-linux* *-*-gnu* powerpc*-*-darwin* *-*-darwin[912]* } } */
/* { dg-options "-fexceptions -fnon-call-exceptions -O2" } */
+/* { dg-require-effective-target exceptions } */
/* Verify that cleanups work with exception handling through signal
frames. */
/* { dg-do run { target hppa*-*-hpux* *-*-linux* *-*-gnu* powerpc*-*-darwin* *-*-darwin[912]* } } */
/* { dg-options "-fexceptions -fnon-call-exceptions -O2" } */
+/* { dg-require-effective-target exceptions } */
/* Verify that cleanups work with exception handling through realtime
signal frames. */
/* PR c/29955 */
/* { dg-do compile } */
/* { dg-options "-O2 -fopenmp -fexceptions" } */
+/* { dg-require-effective-target exceptions } */
extern void bar (int);
/* { dg-lto-do link } */
/* { dg-lto-options { { -O -flto -fexceptions -fnon-call-exceptions --param allow-store-data-races=0 } } } */
+/* { dg-require-effective-target exceptions } */
typedef struct { unsigned int e0 : 16; } s1;
typedef struct { unsigned int e0 : 16; } s2;
/* { dg-options "-fexceptions" } */
/* PR28516: ICE generating ARM unwind directives for nested functions. */
/* { dg-require-effective-target trampolines } */
+/* { dg-require-effective-target exceptions } */
void ex(int (*)(void));
void foo(int i)
/* { dg-options "-fexceptions -I." } */
+/* { dg-require-effective-target exceptions } */
#include "except-1.h"
int main(void)
/* { dg-options "-I. -Winvalid-pch -fexceptions" } */
-
+/* { dg-require-effective-target exceptions } */
#include "valid-2.h" /* { dg-warning "settings for -fexceptions do not match" } */
/* { dg-error "No such file" "no such file" { target *-*-* } 0 } */
/* { dg-error "they were invalid" "invalid files" { target *-*-* } 0 } */
/* { dg-do compile } */
/* { dg-options "-fexceptions" } */
/* { dg-require-effective-target alloca } */
+/* { dg-require-effective-target exceptions } */
void cf (void *);
/* { dg-options "-O2 -fexceptions -fnon-call-exceptions -fpeel-loops" } */
/* { dg-add-options c99_runtime } */
/* { dg-require-effective-target ilp32 } */
+/* { dg-require-effective-target exceptions } */
#include <complex.h>
/* { dg-do compile } */
/* { dg-options "-O2 -fnon-call-exceptions -ftrapv -fexceptions" } */
+/* { dg-require-effective-target exceptions } */
void
DrawChunk(int *tabSize, int x)
{
/* { dg-do compile } */
/* { dg-options "-O -fexceptions -fnon-call-exceptions -ftrapv" } */
+/* { dg-require-effective-target exceptions } */
void
foo ()
/* PR tree-optimization/51481 */
/* { dg-do compile } */
/* { dg-options "-O -fexceptions -fipa-cp -fipa-cp-clone" } */
+/* { dg-require-effective-target exceptions } */
extern const unsigned short int **foo (void)
__attribute__ ((__nothrow__, __const__));
/* PR middle-end/51644 */
/* { dg-do compile } */
/* { dg-options "-Wall -fexceptions" } */
+/* { dg-require-effective-target exceptions } */
#include <stdarg.h>
/* PR tree-optimization/52046 */
/* { dg-do compile } */
/* { dg-options "-O3 -fexceptions -fnon-call-exceptions" } */
+/* { dg-require-effective-target exceptions } */
extern float a[], b[], c[], d[];
extern int k[];
/* { dg-do compile } */
/* { dg-options "-O2 -fexceptions -fnon-call-exceptions" } */
+/* { dg-require-effective-target exceptions } */
int a[10];
/* { dg-do compile } */
/* { dg-options "-O2 -fexceptions -fnon-call-exceptions" } */
+/* { dg-require-effective-target exceptions } */
extern long double cosl (long double);
extern long double sinl (long double);
/* PR tree-optimization/64465 */
/* { dg-do compile } */
/* { dg-options "-O2 -fexceptions" } */
+/* { dg-require-effective-target exceptions } */
extern int foo (int *);
extern int bar (int, int);
/* { dg-do compile } */
/* { dg-options "-O0 -fexceptions" } */
+/* { dg-require-effective-target exceptions } */
#include <stdarg.h>
/* { dg-do compile } */
/* { dg-options "-O2 -fexceptions" } */
+/* { dg-require-effective-target exceptions } */
static void
emit_package (int p1)
/* { dg-do compile } */
/* { dg-options "-O2 -fexceptions -fdump-tree-optimized" } */
+/* { dg-require-effective-target exceptions } */
void af (void *a);
/* { dg-do compile } */
/* { dg-options "-O2 -fdump-tree-dse-details -fexceptions -fnon-call-exceptions -fno-isolate-erroneous-paths-dereference" } */
+/* { dg-require-effective-target exceptions } */
int foo (int *p, int b)
/* { dg-do compile } */
/* { dg-additional-options "-O -fexceptions" } */
+/* { dg-require-effective-target exceptions } */
typedef __attribute__ ((const)) int (*bart) (void);
} [add_options_for_ieee "-std=gnu99"]]
}
+# Return 1 if -fexceptions is supported.
+
+proc check_effective_target_exceptions {} {
+ if { [istarget amdgcn*-*-*] } {
+ return 0
+ }
+ return 1
+}
+
+
proc check_effective_target_tiny {} {
return [check_cached_effective_target tiny {
if { [istarget aarch64*-*-*]