// RUN: %clang_analyze_cc1 -triple i386-pc-linux-gnu -analyzer-checker=debug.DumpCFG %s 2>&1 | FileCheck %s // RUN: %clang_analyze_cc1 -triple x86_64-pc-linux-gnu -analyzer-checker=debug.DumpCFG %s 2>&1 | FileCheck %s int foo(int cond) { label_true: asm goto("testl %0, %0; jne %l1;" :: "r"(cond)::label_true, loop); return 0; loop: return 0; } // CHECK-LABEL: loop // CHECK-NEXT: 0 // CHECK-NEXT: return // CHECK-NEXT: Preds (1): B3 // CHECK-NEXT: Succs (1): B0 // CHECK-LABEL: label_true // CHECK-NEXT: asm goto // CHECK-NEXT: Preds (2): B3 B4 // CHECK-NEXT: Succs (3): B2 B3 B1 int bar(int cond) { asm goto("testl %0, %0; jne %l1;" :: "r"(cond)::L1, L2); return 0; L1: L2: return 0; } // CHECK: [B4] // CHECK-NEXT: asm goto // CHECK-NEXT: Preds (1): B5 // CHECK-NEXT: Succs (3): B3 B2 B1 int zoo(int n) { A5: A1: asm goto("testl %0, %0; jne %l1;" :: "r"(n)::A1, A2, A3, A4, A5); A2: A3: A4: return 0; } // CHECK-LABEL: A1 // CHECK-NEXT: asm goto // CHECK-NEXT: Preds (2): B5 B4 // CHECK-NEXT: Succs (5): B3 B4 B2 B1 B5