Commit 6c6b519a by Tom de Vries Committed by Tom de Vries

Remove NO_LABEL_VALUES

2017-06-06  Tom de Vries  <tom@codesourcery.com>

	* doc/sourcebuild.texi (Testsuites, C Language Testsuites,
	gcc.c-torture/compile): Remove mention of NO_LABEL_VALUES in fixme.

	* gcc.c-torture/compile/20000326-2.c: Use dg-require-effective-target
	label_values instead of NO_LABEL_VALUES.
	* gcc.c-torture/compile/920301-1.c: Same.
	* gcc.c-torture/compile/920501-1.c: Same.
	* gcc.c-torture/compile/941014-4.c: Same.
	* gcc.c-torture/compile/labels-1.c: Same.
	* gcc.c-torture/compile/pr18903.c: Same.
	* gcc.c-torture/execute/920302-1.c: Same.
	* gcc.c-torture/execute/920415-1.c: Same.
	* gcc.c-torture/execute/920428-2.c: Same.
	* gcc.c-torture/execute/920501-3.c: Same.
	* gcc.c-torture/execute/920501-4.c: Same.
	* gcc.c-torture/execute/920501-5.c: Same.
	* gcc.c-torture/execute/920501-7.c: Same.
	* gcc.c-torture/execute/920721-4.c: Same.
	* gcc.c-torture/execute/980526-1.c: Same.
	* gcc.c-torture/execute/990208-1.c: Same.
	* gcc.c-torture/execute/comp-goto-1.c: Same.
	* gcc.c-torture/execute/comp-goto-2.c: Same.
	* gcc.dg/torture/stackalign/comp-goto-1.c: Same.
	* gcc.dg/torture/stackalign/non-local-goto-4.c: Same.
	* gcc.dg/torture/stackalign/non-local-goto-5.c: Same.
	* gcc.dg/tree-prof/comp-goto-1.c: Same.
	* gcc.dg/tree-prof/pr44777.c: Same.
	* gcc.misc-tests/bprob-2.c: Same.
	* gcc.misc-tests/gcov-3.c: Same.
	* lib/gcc.exp (gcc_target_compile): Remove appending of
	-DNO_LABEL_VALUES to additional_flags.
	* lib/objc.exp (objc_target_compile): Same.
	* lib/target-supports.exp (check_effective_target_label_values): Test on
	'target_info exists gcc,no_label_values' instead of NO_LABEL_VALUES.

From-SVN: r248923
parent 25d446fd
2017-06-06 Tom de Vries <tom@codesourcery.com>
* doc/sourcebuild.texi (Testsuites, C Language Testsuites,
gcc.c-torture/compile): Remove mention of NO_LABEL_VALUES in fixme.
2017-06-06 Kyrylo Tkachov <kyrylo.tkachov@arm.com> 2017-06-06 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
* config/aarch64/atomics.md (atomic_compare_and_swap<mode> expander): * config/aarch64/atomics.md (atomic_compare_and_swap<mode> expander):
......
...@@ -2604,7 +2604,7 @@ you wish to test for the presence or absence of compiler warnings. ...@@ -2604,7 +2604,7 @@ you wish to test for the presence or absence of compiler warnings.
While special options can be set, and tests disabled on specific While special options can be set, and tests disabled on specific
platforms, by the use of @file{.x} files, mostly these test cases platforms, by the use of @file{.x} files, mostly these test cases
should not contain platform dependencies. FIXME: discuss how defines should not contain platform dependencies. FIXME: discuss how defines
such as @code{NO_LABEL_VALUES} and @code{STACK_SIZE} are used. such as @code{STACK_SIZE} are used.
@item gcc.c-torture/execute @item gcc.c-torture/execute
This testsuite contains test cases that should compile, link and run; This testsuite contains test cases that should compile, link and run;
otherwise the same comments as for @file{gcc.c-torture/compile} apply. otherwise the same comments as for @file{gcc.c-torture/compile} apply.
......
2017-06-06 Tom de Vries <tom@codesourcery.com>
* gcc.c-torture/compile/20000326-2.c: Use dg-require-effective-target
label_values instead of NO_LABEL_VALUES.
* gcc.c-torture/compile/920301-1.c: Same.
* gcc.c-torture/compile/920501-1.c: Same.
* gcc.c-torture/compile/941014-4.c: Same.
* gcc.c-torture/compile/labels-1.c: Same.
* gcc.c-torture/compile/pr18903.c: Same.
* gcc.c-torture/execute/920302-1.c: Same.
* gcc.c-torture/execute/920415-1.c: Same.
* gcc.c-torture/execute/920428-2.c: Same.
* gcc.c-torture/execute/920501-3.c: Same.
* gcc.c-torture/execute/920501-4.c: Same.
* gcc.c-torture/execute/920501-5.c: Same.
* gcc.c-torture/execute/920501-7.c: Same.
* gcc.c-torture/execute/920721-4.c: Same.
* gcc.c-torture/execute/980526-1.c: Same.
* gcc.c-torture/execute/990208-1.c: Same.
* gcc.c-torture/execute/comp-goto-1.c: Same.
* gcc.c-torture/execute/comp-goto-2.c: Same.
* gcc.dg/torture/stackalign/comp-goto-1.c: Same.
* gcc.dg/torture/stackalign/non-local-goto-4.c: Same.
* gcc.dg/torture/stackalign/non-local-goto-5.c: Same.
* gcc.dg/tree-prof/comp-goto-1.c: Same.
* gcc.dg/tree-prof/pr44777.c: Same.
* gcc.misc-tests/bprob-2.c: Same.
* gcc.misc-tests/gcov-3.c: Same.
* lib/gcc.exp (gcc_target_compile): Remove appending of
-DNO_LABEL_VALUES to additional_flags.
* lib/objc.exp (objc_target_compile): Same.
* lib/target-supports.exp (check_effective_target_label_values): Test on
'target_info exists gcc,no_label_values' instead of NO_LABEL_VALUES.
2017-06-06 Kyrylo Tkachov <kyrylo.tkachov@arm.com> 2017-06-06 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
* gcc.target/aarch64/atomic_cmp_exchange_zero_reg_1.c: New test. * gcc.target/aarch64/atomic_cmp_exchange_zero_reg_1.c: New test.
......
#ifndef NO_LABEL_VALUES /* { dg-require-effective-target label_values } */
extern int printk(const char *fmt, ...); extern int printk(const char *fmt, ...);
void foo (int x, int y) void foo (int x, int y)
...@@ -7,7 +8,3 @@ void foo (int x, int y) ...@@ -7,7 +8,3 @@ void foo (int x, int y)
here: here:
printk ("", &&here); printk ("", &&here);
} }
#else
int x;
#endif
#ifndef NO_LABEL_VALUES /* { dg-require-effective-target label_values } */
f(){static void*t[]={&&x};x:;} f(){static void*t[]={&&x};x:;}
#endif
g(){static unsigned p[5];} g(){static unsigned p[5];}
#ifndef NO_LABEL_VALUES /* { dg-require-effective-target label_values } */
a(){int**b[]={&&c};c:;} a(){int**b[]={&&c};c:;}
#else
int x;
#endif
#ifndef NO_LABEL_VALUES /* { dg-require-effective-target label_values } */
f (int *re) f (int *re)
{ {
int *loops = 0, *loope = 0; int *loops = 0, *loope = 0;
...@@ -11,6 +12,3 @@ f (int *re) ...@@ -11,6 +12,3 @@ f (int *re)
if (dat0 & 1) if (dat0 & 1)
re[(dat0 >> 2) & 3] = 0; re[(dat0 >> 2) & 3] = 0;
} }
#else
int x;
#endif
#ifndef NO_LABEL_VALUES /* { dg-require-effective-target label_values } */
f () f ()
{ {
void *x = &&L2; void *x = &&L2;
...@@ -8,6 +9,3 @@ f () ...@@ -8,6 +9,3 @@ f ()
L2: abort (); L2: abort ();
L3:; L3:;
} }
#else
int x;
#endif
/* { dg-require-effective-target label_values } */
/* We were ICEing in bsi_after_labels because /* We were ICEing in bsi_after_labels because
we had a BB which did not have a lablel. we had a BB which did not have a lablel.
PR middle-end/18903 */ PR middle-end/18903 */
#ifndef NO_LABEL_VALUES
void g (int s, int f) void g (int s, int f)
{ {
&&ff; &&ff;
...@@ -12,6 +13,3 @@ void g (int s, int f) ...@@ -12,6 +13,3 @@ void g (int s, int f)
f = s; f = s;
end:; end:;
} }
#else
int g;
#endif
/* { dg-require-effective-target label_values } */
short optab[5]; short optab[5];
char buf[10]; char buf[10];
execute (ip) execute (ip)
register short *ip; register short *ip;
{ {
#ifndef NO_LABEL_VALUES
register void *base = &&x; register void *base = &&x;
char *bp = buf; char *bp = buf;
static void *tab[] = {&&x, &&y, &&z}; static void *tab[] = {&&x, &&y, &&z};
...@@ -21,9 +22,6 @@ y: *bp++='y'; ...@@ -21,9 +22,6 @@ y: *bp++='y';
z: *bp++='z'; z: *bp++='z';
*bp=0; *bp=0;
return; return;
#else
strcpy (buf, "xyxyz");
#endif
} }
short p[5]; short p[5];
......
#ifndef NO_LABEL_VALUES /* { dg-require-effective-target label_values } */
main(){__label__ l;void*x(){return&&l;}goto*x();abort();return;l:exit(0);} main(){__label__ l;void*x(){return&&l;}goto*x();abort();return;l:exit(0);}
#else
main(){ exit (0); }
#endif
#if !defined (NO_LABEL_VALUES) && !defined (NO_TRAMPOLINES) /* { dg-require-effective-target label_values } */
#if !defined (NO_TRAMPOLINES)
s(i){if(i>0){__label__ l1;int f(int i){if(i==2)goto l1;return 0;}return f(i);l1:;}return 1;} s(i){if(i>0){__label__ l1;int f(int i){if(i==2)goto l1;return 0;}return f(i);l1:;}return 1;}
x(){return s(0)==1&&s(1)==0&&s(2)==1;} x(){return s(0)==1&&s(1)==0&&s(2)==1;}
main(){if(x()!=1)abort();exit(0);} main(){if(x()!=1)abort();exit(0);}
......
/* { dg-require-effective-target label_values } */
int tab[9]; int tab[9];
execute(oip, ip) execute(oip, ip)
unsigned short *oip, *ip; unsigned short *oip, *ip;
{ {
#ifndef NO_LABEL_VALUES
int x = 0; int x = 0;
int *xp = tab; int *xp = tab;
base: base:
...@@ -14,12 +15,6 @@ base: ...@@ -14,12 +15,6 @@ base:
} }
*xp++ = ip - oip; *xp++ = ip - oip;
goto *(&&base + *ip++); goto *(&&base + *ip++);
#else
tab[0] = 0;
tab[1] = 1;
tab[2] = 2;
tab[3] = 0;
#endif
} }
main() main()
......
#ifndef NO_LABEL_VALUES /* { dg-require-effective-target label_values } */
int int
x (int i) x (int i)
{ {
...@@ -21,7 +22,3 @@ main (void) ...@@ -21,7 +22,3 @@ main (void)
exit (0); exit (0);
} }
#else
int
main (void) { exit (0); }
#endif
#ifndef NO_LABEL_VALUES /* { dg-require-effective-target label_values } */
x (int i) x (int i)
{ {
void *j[] = {&&x, &&y, &&z}; void *j[] = {&&x, &&y, &&z};
...@@ -14,6 +15,3 @@ main () ...@@ -14,6 +15,3 @@ main ()
abort(); abort();
exit(0); exit(0);
} }
#else
main(){ exit (0); }
#endif
/* { dg-require-effective-target label_values } */
#ifdef STACK_SIZE #ifdef STACK_SIZE
#define DEPTH ((STACK_SIZE) / 512 + 1) #define DEPTH ((STACK_SIZE) / 512 + 1)
#else #else
#define DEPTH 1000 #define DEPTH 1000
#endif #endif
#if ! defined (NO_LABEL_VALUES) && !defined (NO_TRAMPOLINES) #if !defined (NO_TRAMPOLINES)
x(a) x(a)
{ {
__label__ xlab; __label__ xlab;
...@@ -22,7 +24,7 @@ x(a) ...@@ -22,7 +24,7 @@ x(a)
main () main ()
{ {
#if ! defined (NO_LABEL_VALUES) && !defined (NO_TRAMPOLINES) #if !defined (NO_TRAMPOLINES)
if (x (DEPTH) != DEPTH) if (x (DEPTH) != DEPTH)
abort (); abort ();
#endif #endif
......
#ifndef NO_LABEL_VALUES /* { dg-require-effective-target label_values } */
int try (int num) { int try (int num) {
__label__ lab1, lab2, lab3, lab4, lab5, lab6, default_lab; __label__ lab1, lab2, lab3, lab4, lab5, lab6, default_lab;
...@@ -55,6 +56,3 @@ main() ...@@ -55,6 +56,3 @@ main()
} }
exit(0); exit(0);
} }
#else
main(){ exit (0); }
#endif
/* { dg-skip-if "requires indirect jumps" { ! indirect_jumps } { "-O0" } { "" } } */ /* { dg-require-effective-target label_values } */
/* { dg-skip-if "requires label values" { ! label_values } { "-O0" } { "" } } */
int expect_do1 = 1, expect_do2 = 2; int expect_do1 = 1, expect_do2 = 2;
static int doit(int x){ static int doit(int x){
...@@ -31,9 +31,5 @@ static void do2(void){ ...@@ -31,9 +31,5 @@ static void do2(void){
} }
int main(void){ int main(void){
#ifndef NO_LABEL_VALUES
do1();
do2();
#endif
exit(0); exit(0);
} }
/* { dg-require-effective-target label_values } */
/* As a quality of implementation issue, we should not prevent inlining /* As a quality of implementation issue, we should not prevent inlining
of function explicitly marked inline just because a label therein had of function explicitly marked inline just because a label therein had
its address taken. */ its address taken. */
#ifndef NO_LABEL_VALUES
static void *ptr1, *ptr2; static void *ptr1, *ptr2;
static int i = 1; static int i = 1;
...@@ -44,7 +45,3 @@ int main() ...@@ -44,7 +45,3 @@ int main()
} }
void bar(void) { } void bar(void) { }
#else /* NO_LABEL_VALUES */
int main() { exit(0); }
#endif
/* { dg-require-effective-target label_values } */
#include <stdlib.h> #include <stdlib.h>
#if !defined(NO_LABEL_VALUES) && (!defined(STACK_SIZE) || STACK_SIZE >= 4000) && __INT_MAX__ >= 2147483647 #if (!defined(STACK_SIZE) || STACK_SIZE >= 4000) && __INT_MAX__ >= 2147483647
typedef unsigned int uint32; typedef unsigned int uint32;
typedef signed int sint32; typedef signed int sint32;
......
/* { dg-require-effective-target label_values } */
/* A slight variation of 920501-7.c. */ /* A slight variation of 920501-7.c. */
#ifdef STACK_SIZE #ifdef STACK_SIZE
...@@ -6,7 +8,7 @@ ...@@ -6,7 +8,7 @@
#define DEPTH 1000 #define DEPTH 1000
#endif #endif
#if ! defined (NO_LABEL_VALUES) && !defined (NO_TRAMPOLINES) #if !defined (NO_TRAMPOLINES)
x(a) x(a)
{ {
__label__ xlab; __label__ xlab;
...@@ -28,7 +30,7 @@ x(a) ...@@ -28,7 +30,7 @@ x(a)
main () main ()
{ {
#if ! defined (NO_LABEL_VALUES) && !defined (NO_TRAMPOLINES) #if !defined (NO_TRAMPOLINES)
if (x (DEPTH) != DEPTH) if (x (DEPTH) != DEPTH)
abort (); abort ();
#endif #endif
......
/* { dg-do run } */ /* { dg-do run } */
/* { dg-require-effective-target label_values } */
#ifdef STACK_SIZE #ifdef STACK_SIZE
#define DEPTH ((STACK_SIZE) / 512 + 1) #define DEPTH ((STACK_SIZE) / 512 + 1)
...@@ -9,7 +10,7 @@ ...@@ -9,7 +10,7 @@
extern void abort (void); extern void abort (void);
extern void exit (int); extern void exit (int);
#if ! defined (NO_LABEL_VALUES) && !defined (NO_TRAMPOLINES) #if !defined (NO_TRAMPOLINES)
int int
x(int a) x(int a)
{ {
...@@ -33,7 +34,7 @@ x(int a) ...@@ -33,7 +34,7 @@ x(int a)
int int
main () main ()
{ {
#if ! defined (NO_LABEL_VALUES) && !defined (NO_TRAMPOLINES) #if !defined (NO_TRAMPOLINES)
if (x (DEPTH) != DEPTH) if (x (DEPTH) != DEPTH)
abort (); abort ();
#endif #endif
......
/* { dg-do run } */ /* { dg-do run } */
/* { dg-require-effective-target nonlocal_goto } */ /* { dg-require-effective-target nonlocal_goto } */
/* { dg-require-effective-target label_values } */
extern void abort (void); extern void abort (void);
extern void exit (int); extern void exit (int);
...@@ -10,7 +11,7 @@ extern void exit (int); ...@@ -10,7 +11,7 @@ extern void exit (int);
#define DEPTH 1000 #define DEPTH 1000
#endif #endif
#if ! defined (NO_LABEL_VALUES) && !defined (NO_TRAMPOLINES) #if !defined (NO_TRAMPOLINES)
int int
x(int a) x(int a)
{ {
...@@ -30,7 +31,7 @@ x(int a) ...@@ -30,7 +31,7 @@ x(int a)
int int
main () main ()
{ {
#if ! defined (NO_LABEL_VALUES) && !defined (NO_TRAMPOLINES) #if !defined (NO_TRAMPOLINES)
if (x (DEPTH) != DEPTH) if (x (DEPTH) != DEPTH)
abort (); abort ();
#endif #endif
......
/* { dg-do run } */ /* { dg-do run } */
/* { dg-require-effective-target nonlocal_goto } */ /* { dg-require-effective-target nonlocal_goto } */
/* { dg-require-effective-target label_values } */
extern void exit (int); extern void exit (int);
#if !defined (NO_LABEL_VALUES) && !defined (NO_TRAMPOLINES) #if !defined (NO_TRAMPOLINES)
extern void abort (void); extern void abort (void);
int s(int i){if(i>0){__label__ l1;int f(int i){if(i==2)goto l1;return 0;}return f(i);l1:;}return 1;} int s(int i){if(i>0){__label__ l1;int f(int i){if(i==2)goto l1;return 0;}return f(i);l1:;}return 1;}
int x(){return s(0)==1&&s(1)==0&&s(2)==1;} int x(){return s(0)==1&&s(1)==0&&s(2)==1;}
......
/* { dg-require-effective-target freorder } */ /* { dg-require-effective-target freorder } */
/* { dg-require-effective-target label_values } */
/* { dg-options "-O2 -freorder-blocks-and-partition" } */ /* { dg-options "-O2 -freorder-blocks-and-partition" } */
#include <stdlib.h> #include <stdlib.h>
#if !defined(NO_LABEL_VALUES) && (!defined(STACK_SIZE) || STACK_SIZE >= 4000) && __INT_MAX__ >= 2147483647 #if (!defined(STACK_SIZE) || STACK_SIZE >= 4000) && __INT_MAX__ >= 2147483647
typedef unsigned int uint32; typedef unsigned int uint32;
typedef signed int sint32; typedef signed int sint32;
......
/* PR middle-end/44777 */ /* PR middle-end/44777 */
/* { dg-require-effective-target label_values } */
/* { dg-options "-O0" } */ /* { dg-options "-O0" } */
/* A variant of gcc.c-torture/execute/comp-goto-2.c. */ /* A variant of gcc.c-torture/execute/comp-goto-2.c. */
...@@ -11,7 +12,7 @@ extern void exit (int); ...@@ -11,7 +12,7 @@ extern void exit (int);
#define DEPTH 1000 #define DEPTH 1000
#endif #endif
#if ! defined (NO_LABEL_VALUES) && !defined (NO_TRAMPOLINES) #if !defined (NO_TRAMPOLINES)
int int
x (int a) x (int a)
{ {
...@@ -35,7 +36,7 @@ x (int a) ...@@ -35,7 +36,7 @@ x (int a)
int int
main () main ()
{ {
#if ! defined (NO_LABEL_VALUES) && !defined (NO_TRAMPOLINES) #if !defined (NO_TRAMPOLINES)
if (x (DEPTH) != DEPTH) if (x (DEPTH) != DEPTH)
abort (); abort ();
#endif #endif
......
/* { dg-require-effective-target label_values } */
/* Test profile-directed block ordering with computed gotos. /* Test profile-directed block ordering with computed gotos.
* *
This is the same as test gcc.c-torture/execute/980526-1.c and This is the same as test gcc.c-torture/execute/980526-1.c and
...@@ -37,9 +39,7 @@ static void do2(void){ ...@@ -37,9 +39,7 @@ static void do2(void){
} }
int main(void){ int main(void){
#ifndef NO_LABEL_VALUES
do1(); do1();
do2(); do2();
#endif
exit(0); exit(0);
} }
/* { dg-require-effective-target label_values } */
/* Test Gcov with computed gotos. /* Test Gcov with computed gotos.
This is the same as test gcc.c-torture/execute/980526-1.c */ This is the same as test gcc.c-torture/execute/980526-1.c */
...@@ -38,10 +40,8 @@ static void do2(void){ ...@@ -38,10 +40,8 @@ static void do2(void){
} }
int main(void){ /* count(1) */ int main(void){ /* count(1) */
#ifndef NO_LABEL_VALUES
do1(); do1();
do2(); do2();
#endif
exit(0); /* count(1) */ exit(0); /* count(1) */
} }
......
...@@ -147,9 +147,6 @@ proc gcc_target_compile { source dest type options } { ...@@ -147,9 +147,6 @@ proc gcc_target_compile { source dest type options } {
if [target_info exists gcc,no_trampolines] { if [target_info exists gcc,no_trampolines] {
lappend options "additional_flags=-DNO_TRAMPOLINES" lappend options "additional_flags=-DNO_TRAMPOLINES"
} }
if [target_info exists gcc,no_label_values] {
lappend options "additional_flags=-DNO_LABEL_VALUES"
}
if [target_info exists gcc,signal_suppress] { if [target_info exists gcc,signal_suppress] {
lappend options "additional_flags=-DSIGNAL_SUPPRESS" lappend options "additional_flags=-DSIGNAL_SUPPRESS"
} }
......
...@@ -197,9 +197,6 @@ proc objc_target_compile { source dest type options } { ...@@ -197,9 +197,6 @@ proc objc_target_compile { source dest type options } {
if [target_info exists objc,no_trampolines] { if [target_info exists objc,no_trampolines] {
lappend options "additional_flags=-DNO_TRAMPOLINES" lappend options "additional_flags=-DNO_TRAMPOLINES"
} }
if [target_info exists objc,no_label_values] {
lappend options "additional_flags=-DNO_LABEL_VALUES"
}
# TEST_ALWAYS_FLAGS are flags that should be passed to every # TEST_ALWAYS_FLAGS are flags that should be passed to every
# compilation. They are passed first to allow individual # compilation. They are passed first to allow individual
......
...@@ -749,14 +749,11 @@ proc check_effective_target_global_constructor {} { ...@@ -749,14 +749,11 @@ proc check_effective_target_global_constructor {} {
# Return 1 if taking label values is supported, 0 otherwise. # Return 1 if taking label values is supported, 0 otherwise.
proc check_effective_target_label_values {} { proc check_effective_target_label_values {} {
if { [istarget nvptx-*-*] } { if { [istarget nvptx-*-*] || [target_info exists gcc,no_label_values] } {
return 0 return 0
} }
return [check_no_compiler_messages label_values assembly {
#ifdef NO_LABEL_VALUES return 1
#error NO
#endif
}]
} }
# Return 1 if builtin_return_address and builtin_frame_address are # Return 1 if builtin_return_address and builtin_frame_address are
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment