1*561f0de6SRaphael Isemann // RUN: %clang_analyze_cc1 -std=c++11 -analyzer-checker=alpha.clone.CloneChecker -analyzer-config alpha.clone.CloneChecker:MinimumCloneComplexity=10 -verify %s
2ba816326SArtem Dergachev 
3ba816326SArtem Dergachev // This tests if sub-sequences can match with normal sequences.
4ba816326SArtem Dergachev 
5ba816326SArtem Dergachev void log2(int a);
6ba816326SArtem Dergachev void log();
7ba816326SArtem Dergachev 
max(int a,int b)8ba816326SArtem Dergachev int max(int a, int b) {
9ba816326SArtem Dergachev   log2(a);
104eca0de7SArtem Dergachev   log(); // expected-warning{{Duplicate code detected}}
11ba816326SArtem Dergachev   if (a > b)
12ba816326SArtem Dergachev     return a;
13ba816326SArtem Dergachev   return b;
14ba816326SArtem Dergachev }
15ba816326SArtem Dergachev 
maxClone(int a,int b)16ba816326SArtem Dergachev int maxClone(int a, int b) {
174eca0de7SArtem Dergachev   log(); // expected-note{{Similar code here}}
18ba816326SArtem Dergachev   if (a > b)
19ba816326SArtem Dergachev     return a;
20ba816326SArtem Dergachev   return b;
21ba816326SArtem Dergachev }
22ba816326SArtem Dergachev 
23ba816326SArtem Dergachev // Functions below are not clones and should not be reported.
24ba816326SArtem Dergachev 
foo(int a,int b)25ba816326SArtem Dergachev int foo(int a, int b) { // no-warning
26ba816326SArtem Dergachev   return a + b;
27ba816326SArtem Dergachev }
28