reference, declaration → definition definition → references, declarations, derived classes, virtual overrides reference to multiple definitions → definitions unreferenced |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | // RUN: %clang_analyze_cc1 -std=gnu++11 -analyzer-checker=alpha.clone.CloneChecker -analyzer-config alpha.clone.CloneChecker:MinimumCloneComplexity=10 -verify %s // expected-no-diagnostics bool foo1(int x) { start: if (x != 3) { ++x; void *ptr = &&start; goto start; } end: return false; } // Targeting a different label with the address-of-label operator. bool foo2(int x) { start: if (x != 3) { ++x; void *ptr = &&end; goto start; } end: return false; } // Different target label in goto bool foo3(int x) { start: if (x != 3) { ++x; void *ptr = &&start; goto end; } end: return false; } // FIXME: Can't detect same algorithm as in foo1 but with different label names. bool foo4(int x) { foo: if (x != 3) { ++x; void *ptr = &&foo; goto foo; } end: return false; } |