about summary refs log tree commit diff
diff options
context:
space:
mode:
authorOleksii Lozovskyi <me@ilammy.net>2022-10-02 10:25:49 +0900
committerOleksii Lozovskyi <me@ilammy.net>2023-02-09 12:28:00 +0900
commit0fef658ffeb0fdc858d6c111a992b570ed73c951 (patch)
tree93e727ff58da10368c4c17b1f781e016935b2d20
parentbac15db1d0f3ccdb9b9f61ba808cd25fbf400e88 (diff)
downloadrust-0fef658ffeb0fdc858d6c111a992b570ed73c951.tar.gz
rust-0fef658ffeb0fdc858d6c111a992b570ed73c951.zip
Codegen tests for -Z instrument-xray
Let's add at least some tests to verify that this option is accepted
and produces expected LLVM attributes. More tests can be added later
with attribute support.
-rw-r--r--tests/codegen/instrument-xray/basic.rs8
-rw-r--r--tests/codegen/instrument-xray/options-combine.rs11
-rw-r--r--tests/codegen/instrument-xray/options-override.rs10
3 files changed, 29 insertions, 0 deletions
diff --git a/tests/codegen/instrument-xray/basic.rs b/tests/codegen/instrument-xray/basic.rs
new file mode 100644
index 00000000000..9c128767747
--- /dev/null
+++ b/tests/codegen/instrument-xray/basic.rs
@@ -0,0 +1,8 @@
+// Checks that `-Z instrument-xray` produces expected instrumentation.
+//
+// compile-flags: -Z instrument-xray=always
+
+#![crate_type = "lib"]
+
+// CHECK: attributes #{{.*}} "function-instrument"="xray-always"
+pub fn function() {}
diff --git a/tests/codegen/instrument-xray/options-combine.rs b/tests/codegen/instrument-xray/options-combine.rs
new file mode 100644
index 00000000000..0c1992318f5
--- /dev/null
+++ b/tests/codegen/instrument-xray/options-combine.rs
@@ -0,0 +1,11 @@
+// Checks that `-Z instrument-xray` options can be specified multiple times.
+//
+// compile-flags: -Z instrument-xray=skip-exit
+// compile-flags: -Z instrument-xray=instruction-threshold=123
+// compile-flags: -Z instrument-xray=instruction-threshold=456
+
+#![crate_type = "lib"]
+
+// CHECK:      attributes #{{.*}} "xray-instruction-threshold"="456" "xray-skip-exit"
+// CHECK-NOT:  attributes #{{.*}} "xray-instruction-threshold"="123"
+pub fn function() {}
diff --git a/tests/codegen/instrument-xray/options-override.rs b/tests/codegen/instrument-xray/options-override.rs
new file mode 100644
index 00000000000..3a7c37f9006
--- /dev/null
+++ b/tests/codegen/instrument-xray/options-override.rs
@@ -0,0 +1,10 @@
+// Checks that the last `-Z instrument-xray` option wins.
+//
+// compile-flags: -Z instrument-xray=always
+// compile-flags: -Z instrument-xray=never
+
+#![crate_type = "lib"]
+
+// CHECK:      attributes #{{.*}} "function-instrument"="xray-never"
+// CHECK-NOT:  attributes #{{.*}} "function-instrument"="xray-always"
+pub fn function() {}