Files
TheRock/compiler/amd-llvm/clang/test/Sema/labeled-break-continue.c
T
derek.holloway 7502bf64a4
CodeQL / Analyze (actions) (push) Canceled after 0s
CodeQL / Analyze (python) (push) Canceled after 0s
pre-commit / pre-commit (push) Canceled after 0s
Multi-Arch CI / setup (push) Canceled after 0s
Publish build_manylinux_x86_64 images / publish_build_manylinux_x86_64 (push) Canceled after 0s
Setup (Multi-Arch) / setup (push) Canceled after 0s
Multi-Arch CI / Linux::${{ fromJSON(needs.setup.outputs.linux_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubi10 image / publish_no_rocm_image_ubi10 (push) Canceled after 0s
Multi-Arch CI / Windows::${{ fromJSON(needs.setup.outputs.windows_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Multi-Arch CI / Manifest Diff (push) Canceled after 0s
TheRock Manifest Diff Report / Generate Manifest Diff Report (push) Canceled after 0s
Multi-Arch CI / CI Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_ocl_rt images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_rocgdb images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Unit Tests / Unit Tests :: ubuntu-24.04 (push) Canceled after 0s
Unit Tests / Unit Tests :: windows-2022 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_media (push) Canceled after 0s
Unit Tests / Unit Tests Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_openmpi (push) Canceled after 0s
Flatten subprojects into a single base monorepo
2026-09-02 16:34:47 -07:00

174 lines
5.2 KiB
C

// RUN: %clang_cc1 -std=c2y -verify -Wunused -fsyntax-only -fblocks %s
// RUN: %clang_cc1 -std=c23 -verify -Wunused -fsyntax-only -fblocks -fnamed-loops %s
// RUN: %clang_cc1 -x c++ -verify -Wunused -fsyntax-only -fblocks -fnamed-loops %s
void f1() {
l1: while (true) {
break l1;
continue l1;
}
l2: for (;;) {
break l2;
continue l2;
}
l3: do {
break l3;
continue l3;
} while (true);
l4: switch (1) {
case 1:
break l4;
}
}
void f2() {
l1:;
break l1; // expected-error {{'break' label does not name an enclosing loop or 'switch'}}
continue l1; // expected-error {{'continue' label does not name an enclosing loop}}
l2: while (true) {
break l1; // expected-error {{'break' label does not name an enclosing loop or 'switch'}}
continue l1; // expected-error {{'continue' label does not name an enclosing loop}}
}
while (true) {
break l2; // expected-error {{'break' label does not name an enclosing loop or 'switch'}}
continue l2; // expected-error {{'continue' label does not name an enclosing loop}}
}
break l3; // expected-error {{'break' label does not name an enclosing loop or 'switch'}}
continue l3; // expected-error {{'continue' label does not name an enclosing loop}}
l3: while (true) {}
}
void f3() {
a: b: c: d: while (true) {
break a; // expected-error {{'break' label does not name an enclosing loop or 'switch'}}
break b; // expected-error {{'break' label does not name an enclosing loop or 'switch'}}
break c; // expected-error {{'break' label does not name an enclosing loop or 'switch'}}
break d;
continue a; // expected-error {{'continue' label does not name an enclosing loop}}
continue b; // expected-error {{'continue' label does not name an enclosing loop}}
continue c; // expected-error {{'continue' label does not name an enclosing loop}}
continue d;
e: while (true) {
break a; // expected-error {{'break' label does not name an enclosing loop or 'switch'}}
break b; // expected-error {{'break' label does not name an enclosing loop or 'switch'}}
break c; // expected-error {{'break' label does not name an enclosing loop or 'switch'}}
break d;
break e;
continue a; // expected-error {{'continue' label does not name an enclosing loop}}
continue b; // expected-error {{'continue' label does not name an enclosing loop}}
continue c; // expected-error {{'continue' label does not name an enclosing loop}}
continue d;
continue e;
}
break e; // expected-error {{'break' label does not name an enclosing loop or 'switch'}}
continue e; // expected-error {{'continue' label does not name an enclosing loop}}
}
}
void f4() {
a: switch (1) {
case 1: {
continue a; // expected-error {{label of 'continue' refers to a switch statement}}
}
}
}
void f5() {
a: {
break a; // expected-error {{'break' label does not name an enclosing loop or 'switch'}}
}
b: {
while (true)
break b; // expected-error {{'break' label does not name an enclosing loop or 'switch'}}
}
}
void f6() {
a: while (({
break a; // expected-error {{'break' label does not name an enclosing loop or 'switch'}}
continue a; // expected-error {{'continue' label does not name an enclosing loop}}
1;
})) {
({ break a; });
({ continue a; });
}
b: for (
int x = ({
break b; // expected-error {{'break' label does not name an enclosing loop or 'switch'}}
continue b; // expected-error {{'continue' label does not name an enclosing loop}}
1;
});
({
break b; // expected-error {{'break' label does not name an enclosing loop or 'switch'}}
continue b; // expected-error {{'continue' label does not name an enclosing loop}}
1;
});
(void) ({
break b; // expected-error {{'break' label does not name an enclosing loop or 'switch'}}
continue b; // expected-error {{'continue' label does not name an enclosing loop}}
1;
})
) {
({ break b; });
({ continue b; });
}
c: do {
({ break c; });
({ continue c; });
} while (({
break c; // expected-error {{'break' label does not name an enclosing loop or 'switch'}}
continue c; // expected-error {{'continue' label does not name an enclosing loop}}
1;
}));
d: switch (({
break d; // expected-error {{'break' label does not name an enclosing loop or 'switch'}}
continue d; // expected-error {{'continue' label does not name an enclosing loop}}
1;
})) {
case 1: {
({ break d; });
({ continue d; }); // expected-error {{label of 'continue' refers to a switch statement}}
}
}
}
void f7() {
a: while (true) {
(void) ^{
break a; // expected-error {{'break' label does not name an enclosing loop or 'switch'}}
continue a; // expected-error {{'continue' label does not name an enclosing loop}}
};
}
while (true) {
break c; // expected-error {{'break' label does not name an enclosing loop or 'switch'}}
continue d; // expected-error {{'continue' label does not name an enclosing loop}}
}
}
void f8() {
l1: // no-warning
while (true) {
break l1;
}
l2: // no-warning
while (true) {
continue l2;
}
}