1f08c3bdfSopenharmony_civoid foo(void) 2f08c3bdfSopenharmony_ci{ 3f08c3bdfSopenharmony_ci void *p = &&l; 4f08c3bdfSopenharmony_ci { 5f08c3bdfSopenharmony_cil: ; 6f08c3bdfSopenharmony_ci } 7f08c3bdfSopenharmony_ci goto *p; // OK 8f08c3bdfSopenharmony_ci} 9f08c3bdfSopenharmony_ci 10f08c3bdfSopenharmony_civoid bar(void) 11f08c3bdfSopenharmony_ci{ 12f08c3bdfSopenharmony_ci void *p = &&l; // KO: 'jump' inside 13f08c3bdfSopenharmony_ci ({ 14f08c3bdfSopenharmony_cil: 1; 15f08c3bdfSopenharmony_ci }); 16f08c3bdfSopenharmony_ci goto *p; 17f08c3bdfSopenharmony_ci} 18f08c3bdfSopenharmony_ci 19f08c3bdfSopenharmony_civoid baz(void) 20f08c3bdfSopenharmony_ci{ 21f08c3bdfSopenharmony_ci void *p = &&l; // KO: 'jump' inside 22f08c3bdfSopenharmony_ci 0 ? 1 : ({ 23f08c3bdfSopenharmony_cil: 1; 24f08c3bdfSopenharmony_ci }); 25f08c3bdfSopenharmony_ci goto *p; 26f08c3bdfSopenharmony_ci} 27f08c3bdfSopenharmony_ci 28f08c3bdfSopenharmony_civoid qux(void) 29f08c3bdfSopenharmony_ci{ 30f08c3bdfSopenharmony_ci void *p = &&l; // KO: 'jump' inside + removed 31f08c3bdfSopenharmony_ci 1 ? 1 : ({ 32f08c3bdfSopenharmony_cil: 1; 33f08c3bdfSopenharmony_ci }); 34f08c3bdfSopenharmony_ci goto *p; 35f08c3bdfSopenharmony_ci} 36f08c3bdfSopenharmony_ci 37f08c3bdfSopenharmony_civoid quz(void) 38f08c3bdfSopenharmony_ci{ 39f08c3bdfSopenharmony_ci void *p; 40f08c3bdfSopenharmony_ci p = &&l; // KO: undeclared 41f08c3bdfSopenharmony_ci goto *p; 42f08c3bdfSopenharmony_ci} 43f08c3bdfSopenharmony_ci 44f08c3bdfSopenharmony_civoid qxu(void) 45f08c3bdfSopenharmony_ci{ 46f08c3bdfSopenharmony_ci void *p; 47f08c3bdfSopenharmony_ci ({ 48f08c3bdfSopenharmony_cil: 1; 49f08c3bdfSopenharmony_ci }); 50f08c3bdfSopenharmony_ci p = &&l; // KO: 'jump' inside 51f08c3bdfSopenharmony_ci goto *p; 52f08c3bdfSopenharmony_ci} 53f08c3bdfSopenharmony_ci 54f08c3bdfSopenharmony_civoid qzu(void) 55f08c3bdfSopenharmony_ci{ 56f08c3bdfSopenharmony_ci void *p; 57f08c3bdfSopenharmony_ci 1 ? 1 : ({ 58f08c3bdfSopenharmony_cil: 1; 59f08c3bdfSopenharmony_ci }); 60f08c3bdfSopenharmony_ci p = &&l; // KO: 'jump' inside + removed 61f08c3bdfSopenharmony_ci goto *p; 62f08c3bdfSopenharmony_ci} 63f08c3bdfSopenharmony_ci 64f08c3bdfSopenharmony_ci 65f08c3bdfSopenharmony_ci/* 66f08c3bdfSopenharmony_ci * check-name: label-scope-cgoto 67f08c3bdfSopenharmony_ci * check-command: sparse -Wno-decl $file 68f08c3bdfSopenharmony_ci * 69f08c3bdfSopenharmony_ci * check-error-start 70f08c3bdfSopenharmony_cilabel-scope-cgoto.c:12:19: error: label 'l' used outside statement expression 71f08c3bdfSopenharmony_cilabel-scope-cgoto.c:14:1: label 'l' defined here 72f08c3bdfSopenharmony_cilabel-scope-cgoto.c:21:19: error: label 'l' used outside statement expression 73f08c3bdfSopenharmony_cilabel-scope-cgoto.c:23:1: label 'l' defined here 74f08c3bdfSopenharmony_cilabel-scope-cgoto.c:30:19: error: label 'l' used outside statement expression 75f08c3bdfSopenharmony_cilabel-scope-cgoto.c:32:1: label 'l' defined here 76f08c3bdfSopenharmony_cilabel-scope-cgoto.c:50:13: error: label 'l' used outside statement expression 77f08c3bdfSopenharmony_cilabel-scope-cgoto.c:48:1: label 'l' defined here 78f08c3bdfSopenharmony_cilabel-scope-cgoto.c:60:13: error: label 'l' used outside statement expression 79f08c3bdfSopenharmony_cilabel-scope-cgoto.c:58:1: label 'l' defined here 80f08c3bdfSopenharmony_cilabel-scope-cgoto.c:40:13: error: label 'l' was not declared 81f08c3bdfSopenharmony_ci * check-error-end 82f08c3bdfSopenharmony_ci */ 83