about summary refs log tree commit diff
path: root/tests/codegen
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 /tests/codegen
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.
Diffstat (limited to 'tests/codegen')
-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() {}