// RUN: %clang_analyze_cc1 -triple x86_64-unknown-linux -analyzer-checker=alpha.clone.CloneChecker -analyzer-config alpha.clone.CloneChecker:MinimumCloneComplexity=10 -verify %s // expected-no-diagnostics int foo1(int src) { int dst = src; if (src < 100 && src > 0) { asm ("mov %1, %0\n\t" "add $1, %0" : "=r" (dst) : "r" (src)); } return dst; } // Identical to foo1 except that it adds two instead of one, so it's no clone. int foo2(int src) { int dst = src; if (src < 100 && src > 0) { asm ("mov %1, %0\n\t" "add $2, %0" : "=r" (dst) : "r" (src)); } return dst; } // Identical to foo1 except that its a volatile asm statement, so it's no clone. int foo3(int src) { int dst = src; if (src < 100 && src > 0) { asm volatile ("mov %1, %0\n\t" "add $1, %0" : "=r" (dst) : "r" (src)); } return dst; }