about summary refs log tree commit diff
diff options
context:
space:
mode:
authorantoyo <antoyo@users.noreply.github.com>2023-10-17 08:41:45 -0400
committerGitHub <noreply@github.com>2023-10-17 08:41:45 -0400
commit4dce75f2e7bc7e75e7d4d4a77ccd84819411d162 (patch)
tree31fb957933f0aa0e2e97bae49f6ce8952d4f1d16
parentcf8c391fc174c3e3264d910d5bbb4107b0565715 (diff)
parente2f32c72a7a6ad3b1ba971416d86c6eca1096a36 (diff)
downloadrust-4dce75f2e7bc7e75e7d4d4a77ccd84819411d162.tar.gz
rust-4dce75f2e7bc7e75e7d4d4a77ccd84819411d162.zip
Merge pull request #352 from rust-lang/update-libgccjit
Fix #[inline(always)] attribute and support unsigned comparison for signed integers
-rw-r--r--Cargo.lock4
-rw-r--r--doc/tests.md5
-rw-r--r--failing-ui-tests.txt1
-rw-r--r--src/attributes.rs3
-rw-r--r--src/int.rs13
5 files changed, 24 insertions, 2 deletions
diff --git a/Cargo.lock b/Cargo.lock
index 85675fc40c3..b8e2e5d8080 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -74,7 +74,7 @@ dependencies = [
 [[package]]
 name = "gccjit"
 version = "1.0.0"
-source = "git+https://github.com/antoyo/gccjit.rs#0b158c68bf7e46732869d90550a98e886dee8858"
+source = "git+https://github.com/antoyo/gccjit.rs#c52a218f5529321285b4489e5562a00e5428e033"
 dependencies = [
  "gccjit_sys",
 ]
@@ -82,7 +82,7 @@ dependencies = [
 [[package]]
 name = "gccjit_sys"
 version = "0.0.1"
-source = "git+https://github.com/antoyo/gccjit.rs#0b158c68bf7e46732869d90550a98e886dee8858"
+source = "git+https://github.com/antoyo/gccjit.rs#c52a218f5529321285b4489e5562a00e5428e033"
 dependencies = [
  "libc",
 ]
diff --git a/doc/tests.md b/doc/tests.md
new file mode 100644
index 00000000000..3ac993bc2fd
--- /dev/null
+++ b/doc/tests.md
@@ -0,0 +1,5 @@
+# Tests
+
+## Show the rustc command for UI tests
+
+Add ` --test-args "--verbose"` to `./x.py test`.
diff --git a/failing-ui-tests.txt b/failing-ui-tests.txt
index ed56a11a170..771da581295 100644
--- a/failing-ui-tests.txt
+++ b/failing-ui-tests.txt
@@ -71,3 +71,4 @@ tests/ui/lto/all-crates.rs
 tests/ui/async-await/deep-futures-are-freeze.rs
 tests/ui/closures/capture-unsized-by-ref.rs
 tests/ui/generator/resume-after-return.rs
+tests/ui/macros/rfc-2011-nicer-assert-messages/all-expr-kinds.rs
diff --git a/src/attributes.rs b/src/attributes.rs
index 971e019a4f6..6159971cfaa 100644
--- a/src/attributes.rs
+++ b/src/attributes.rs
@@ -53,6 +53,9 @@ pub fn from_fn_attrs<'gcc, 'tcx>(
                 codegen_fn_attrs.inline
             };
         if let Some(attr) = inline_attr(cx, inline) {
+            if let FnAttribute::AlwaysInline = attr {
+                func.add_attribute(FnAttribute::Inline);
+            }
             func.add_attribute(attr);
         }
 
diff --git a/src/int.rs b/src/int.rs
index 58e0dd56f38..5719f6a8cf5 100644
--- a/src/int.rs
+++ b/src/int.rs
@@ -415,6 +415,7 @@ impl<'a, 'gcc, 'tcx> Builder<'a, 'gcc, 'tcx> {
                     IntPredicate::IntNE => {
                         return self.context.new_comparison(None, ComparisonOp::NotEquals, cmp, self.context.new_rvalue_one(self.int_type));
                     },
+                    // TODO(antoyo): cast to u128 for unsigned comparison. See below.
                     IntPredicate::IntUGT => (ComparisonOp::Equals, 2),
                     IntPredicate::IntUGE => (ComparisonOp::GreaterThanEquals, 1),
                     IntPredicate::IntULT => (ComparisonOp::Equals, 0),
@@ -444,6 +445,18 @@ impl<'a, 'gcc, 'tcx> Builder<'a, 'gcc, 'tcx> {
                     rhs = self.context.new_cast(None, rhs, a_type);
                 }
             }
+            match op {
+                IntPredicate::IntUGT | IntPredicate::IntUGE | IntPredicate::IntULT | IntPredicate::IntULE => {
+                    if !a_type.is_vector() {
+                        let unsigned_type = a_type.to_unsigned(&self.cx);
+                        lhs = self.context.new_cast(None, lhs, unsigned_type);
+                        rhs = self.context.new_cast(None, rhs, unsigned_type);
+                    }
+                },
+                // TODO(antoyo): we probably need to handle signed comparison for unsigned
+                // integers.
+                _ => (),
+            }
             self.context.new_comparison(None, op.to_gcc_comparison(), lhs, rhs)
         }
     }