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 Dergachevint 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 Dergachevint 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 Dergachevint foo(int a, int b) { // no-warning 26ba816326SArtem Dergachev return a + b; 27ba816326SArtem Dergachev } 28