brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.4 KiB · 75f907a Raw
71 lines · cpp
1// RUN: %clang_analyze_cc1 -triple i386-pc-linux-gnu -analyzer-checker=debug.DumpCFG %s 2>&1 | FileCheck %s2// RUN: %clang_analyze_cc1 -triple x86_64-pc-linux-gnu -analyzer-checker=debug.DumpCFG %s 2>&1 | FileCheck %s3 4int foo(int cond)5{6label_true:7  asm goto("testl %0, %0; jne %l1;" :: "r"(cond)::label_true, loop);8  return 0;9loop:10  return 0;11}12 13// CHECK-LABEL: loop14// CHECK-NEXT: 015// CHECK-NEXT: return16// CHECK-NEXT: Preds (1): B317// CHECK-NEXT: Succs (1): B018 19// CHECK-LABEL: label_true20// CHECK-NEXT: cond21// CHECK-NEXT: [B3.1]22// CHECK-NEXT: T: asm goto23// CHECK-NEXT: Preds (2): B3 B424// CHECK-NEXT: Succs (3): B2 B3 B125 26int bar(int cond)27{28  asm goto("testl %0, %0; jne %l1;" :: "r"(cond)::L1, L2);29  return 0;30L1:31L2:32  return 0;33}34 35// CHECK: [B4]36// CHECK-NEXT: cond37// CHECK-NEXT: [B4.1]38// CHECK-NEXT: T: asm goto39// CHECK-NEXT: Preds (1): B540// CHECK-NEXT: Succs (3): B3 B2 B141 42int zoo(int n)43{44A5:45A1:46  asm goto("testl %0, %0; jne %l1;" :: "r"(n)::A1, A2, A3, A4, A5);47A2:48A3:49A4:50  return 0;51}52 53// CHECK-LABEL: A154// CHECK-NEXT: n55// CHECK-NEXT: [B4.1]56// CHECK-NEXT: T: asm goto57// CHECK-NEXT: Preds (2): B5 B458// CHECK-NEXT: Succs (5): B3 B4 B2 B1 B559 60void baz(void)61{62  asm goto("" :: "r"(1 ? 2 : 0 << -1) :: error);63error:;64}65 66// CHECK: [B2]67// CHECK-NEXT: 1: [B5.2] ? [B3.1] : [B4.4]68// CHECK-NEXT: T: asm goto ("" :  : "r" ([B2.1]) :  : error);69// CHECK-NEXT: Preds (2): B3 B470// CHECK-NEXT: Succs (1): B171