|  | // RUN: %clang_cc1 -fxray-instrument -x c++ -std=c++11 -triple x86_64-unknown-unknown -emit-llvm -o - %s | FileCheck %s | 
|  |  | 
|  | // CHECK-LABEL: @_Z16alwaysInstrumentv | 
|  | [[clang::xray_always_instrument]] void alwaysInstrument() { | 
|  | static constexpr char kPhase[] = "instrument"; | 
|  | __xray_customevent(kPhase, 10); | 
|  | // CHECK: call void @llvm.xray.customevent(ptr{{.*}}, i64 10) | 
|  | } | 
|  |  | 
|  | // CHECK-LABEL: @_Z15neverInstrumentv | 
|  | [[clang::xray_never_instrument]] void neverInstrument() { | 
|  | static constexpr char kPhase[] = "never"; | 
|  | __xray_customevent(kPhase, 5); | 
|  | // CHECK-NOT: call void @llvm.xray.customevent( | 
|  | } | 
|  |  | 
|  | // CHECK-LABEL: @_Z21conditionalInstrumenti | 
|  | [[clang::xray_always_instrument]] void conditionalInstrument(int v) { | 
|  | static constexpr char kTrue[] = "true"; | 
|  | static constexpr char kUntrue[] = "untrue"; | 
|  | if (v % 2) | 
|  | __xray_customevent(kTrue, 4); | 
|  | else | 
|  | __xray_customevent(kUntrue, 6); | 
|  |  | 
|  | // CHECK: call void @llvm.xray.customevent(ptr{{.*}}, i64 4) | 
|  | // CHECK: call void @llvm.xray.customevent(ptr{{.*}}, i64 6) | 
|  | } |