Mercurial > hg > CbC > CbC_llvm
view clang/test/SemaObjC/warn-unreachable.m @ 207:2e18cbf3894f
LLVM12
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 08 Jun 2021 06:07:14 +0900 |
parents | 1d019706d866 |
children | c4bab56944e8 |
line wrap: on
line source
// RUN: %clang %s -fsyntax-only -Xclang -verify -fblocks -Wunreachable-code-aggressive -Wno-unused-value -Wno-covered-switch-default // This previously triggered a warning from -Wunreachable-code because of // a busted CFG. typedef signed char BOOL; BOOL radar10989084() { @autoreleasepool { // no-warning return __objc_yes; } } // Test the warning works. void test_unreachable() { return; return; // expected-warning {{will never be executed}} } #define NO __objc_no #define YES __objc_yes #define CONFIG NO // Test that 'NO' and 'YES' are not treated as configuration macros. int test_NO() { if (NO) return 1; // expected-warning {{will never be executed}} else return 0; } int test_YES() { if (YES) return 1; else return 0; // expected-warning {{will never be executed}} } int test_CONFIG() { if (CONFIG) return 1; else return 0; } // FIXME: This should at some point report a warning // that the loop increment is unreachable. void test_loop_increment(id container) { for (id x in container) { // no-warning break; } } void calledFun() {} // Test "silencing" with parentheses. void test_with_paren_silencing(int x) { if (NO) calledFun(); // expected-warning {{will never be executed}} expected-note {{silence by adding parentheses to mark code as explicitly dead}} if ((NO)) calledFun(); // no-warning if (YES) // expected-note {{silence by adding parentheses to mark code as explicitly dead}} calledFun(); else calledFun(); // expected-warning {{will never be executed}} if ((YES)) calledFun(); else calledFun(); // no-warning if (!YES) // expected-note {{silence by adding parentheses to mark code as explicitly dead}} calledFun(); // expected-warning {{code will never be executed}} else calledFun(); if ((!YES)) calledFun(); // no-warning else calledFun(); if (!(YES)) calledFun(); // no-warning else calledFun(); }