about summary refs log tree commit diff
path: root/compiler/rustc_codegen_gcc/src/intrinsic
diff options
context:
space:
mode:
authorNicholas Thompson <NCGThompson@gmail.com>2024-01-23 12:02:31 -0500
committerNicholas Thompson <NCGThompson@gmail.com>2024-01-23 12:02:31 -0500
commit971e37ff7e80cf2dbf4f95162d5957913803f30d (patch)
treed90996132d26fc0f508b6a6273630d1658df5dc6 /compiler/rustc_codegen_gcc/src/intrinsic
parent5a4561749a18fa96691f9cf79699e6ab2f1f7b2c (diff)
downloadrust-971e37ff7e80cf2dbf4f95162d5957913803f30d.tar.gz
rust-971e37ff7e80cf2dbf4f95162d5957913803f30d.zip
Further Implement `is_val_statically_known`
Diffstat (limited to 'compiler/rustc_codegen_gcc/src/intrinsic')
-rw-r--r--compiler/rustc_codegen_gcc/src/intrinsic/mod.rs6
1 files changed, 6 insertions, 0 deletions
diff --git a/compiler/rustc_codegen_gcc/src/intrinsic/mod.rs b/compiler/rustc_codegen_gcc/src/intrinsic/mod.rs
index 85b891fce3e..eac8cb43779 100644
--- a/compiler/rustc_codegen_gcc/src/intrinsic/mod.rs
+++ b/compiler/rustc_codegen_gcc/src/intrinsic/mod.rs
@@ -123,6 +123,12 @@ impl<'a, 'gcc, 'tcx> IntrinsicCallMethods<'tcx> for Builder<'a, 'gcc, 'tcx> {
                 sym::unlikely => {
                     self.expect(args[0].immediate(), false)
                 }
+                sym::is_val_statically_known => {
+                    let a = args[0].immediate();
+                    let builtin = self.context.get_builtin_function("__builtin_constant_p");
+                    let res = self.context.new_call(None, builtin, &[a]);
+                    self.icmp(IntPredicate::IntEQ, res, self.const_i32(0))
+                }
                 kw::Try => {
                     try_intrinsic(
                         self,