65 lines · cpp
1// REQUIRES: host-supports-jit2// RUN: cat %s | clang-repl -Xcc -Xclang -Xcc -verify | FileCheck %s3// RUN: %clang_cc1 -verify -fincremental-extensions -emit-llvm -o - %s \4// RUN: | FileCheck --check-prefix=CODEGEN-CHECK %s5 6// expected-no-diagnostics7 8//CODEGEN-CHECK-COUNT-2: define internal void @__stmts__9//CODEGEN-CHECK-NOT: define internal void @__stmts__10 11extern "C" int printf(const char*,...);12 13template <typename T> T call() { printf("called\n"); return T(); }14call<int>();15// CHECK: called16 17int i = 1;18++i;19printf("i = %d\n", i);20// CHECK: i = 221 22namespace Ns { void f(){ i++; } }23Ns::f();24 25void g() { ++i; }26g();27::g();28 29printf("i = %d\n", i);30// CHECK-NEXT: i = 531 32for (; i > 4; --i) printf("i = %d\n", i);33// CHECK-NEXT: i = 534 35{++i;}36 37for (; i > 4; --i) { printf("i = %d\n", i); };38// CHECK-NEXT: i = 539 40int j = i; printf("j = %d\n", j);41// CHECK-NEXT: j = 442 43{i = 0; printf("i = %d (global scope)\n", i);}44// CHECK-NEXT: i = 045 46while (int i = 1) { printf("i = %d (while condition)\n", i--); break; }47// CHECK-NEXT: i = 148 49if (int i = 2) printf("i = %d (if condition)\n", i);50// CHECK-NEXT: i = 251 52switch (int i = 3) { default: printf("i = %d (switch condition)\n", i); }53// CHECK-NEXT: i = 354 55for (int i = 4; i > 3; --i) printf("i = %d (for-init)\n", i);56// CHECK-NEXT: i = 457 58for (const auto &i : "5") printf("i = %c (range-based for-init)\n", i);59// CHECK-NEXT: i = 560 61int *aa=nullptr;62if (auto *b=aa) *b += 1;63while (auto *b=aa) ;64for (auto *b=aa; b; *b+=1) ;65