1
Fork 0
Commit graph

63 commits

Author SHA1 Message Date
Yuri Astrakhan
7e8201ae0a Spellchecking some comments
This PR attempts to clean up some minor spelling mistakes in comments
2022-03-30 01:39:38 -04:00
bjorn3
bbff48e094 Merge commit '39683d8eb7' into sync_cg_gcc-2022-03-26 2022-03-26 18:29:37 +01:00
Nicholas Nethercote
4f008e06c3 Clarify Layout interning.
`Layout` is another type that is sometimes interned, sometimes not, and
we always use references to refer to it so we can't take any advantage
of the uniqueness properties for hashing or equality checks.

This commit renames `Layout` as `LayoutS`, and then introduces a new
`Layout` that is a newtype around an `Interned<LayoutS>`. It also
interns more layouts than before. Previously layouts within layouts
(via the `variants` field) were never interned, but now they are. Hence
the lifetime on the new `Layout` type.

Unlike other interned types, these ones are in `rustc_target` instead of
`rustc_middle`. This reflects the existing structure of the code, which
does layout-specific stuff in `rustc_target` while `TyAndLayout` is
generic over the `Ty`, allowing the type-specific stuff to occur in
`rustc_middle`.

The commit also adds a `HashStable` impl for `Interned`, which was
needed. It hashes the contents, unlike the `Hash` impl which hashes the
pointer.
2022-03-07 13:41:47 +11:00
bjorn3
b799d6e0a5 Merge commit '1411a98352' into sync_cg_clif-2021-12-31 2021-12-31 16:26:32 +01:00
Nicholas Nethercote
056d48a2c9 Remove unnecessary sigils around Symbol::as_str() calls. 2021-12-15 17:32:14 +11:00
Andreas Jonson
50ec47aa06 Remove workaround for the forward progress handling in LLVM 2021-11-14 16:35:09 +01:00
Ramon de C Valle
5d30e93189 Add LLVM CFI support to the Rust compiler
This commit adds LLVM Control Flow Integrity (CFI) support to the Rust
compiler. It initially provides forward-edge control flow protection for
Rust-compiled code only by aggregating function pointers in groups
identified by their number of arguments.

Forward-edge control flow protection for C or C++ and Rust -compiled
code "mixed binaries" (i.e., for when C or C++ and Rust -compiled code
share the same virtual address space) will be provided in later work as
part of this project by defining and using compatible type identifiers
(see Type metadata in the design document in the tracking issue #89653).

LLVM CFI can be enabled with -Zsanitizer=cfi and requires LTO (i.e.,
-Clto).
2021-10-25 16:23:01 -07:00
Antoni Boucher
90be409db0 Merge commit 'cd4810de42' into libgccjit-codegen 2021-09-28 09:33:06 -04:00
Antoni Boucher
7f32dd546f Merge commit '9809f5d219' into libgccjit-codegen 2021-09-28 09:19:11 -04:00
Antoni Boucher
df487317d0 Merge commit '48d60ab7c5' into libgccjit-codegen 2021-09-17 17:52:40 -04:00
Antoni Boucher
3d5d4e324d Merge commit 'e228f0c16e' into libgccjit-codegen 2021-08-15 08:29:07 -04:00
Antoni Boucher
6fc069625a Merge commit '0c89065b93' into libgccjit-codegen 2021-08-14 10:06:05 -04:00
Antoni Boucher
f7237f16ae Add 'compiler/rustc_codegen_gcc/' from commit 'afae271d5d'
git-subtree-dir: compiler/rustc_codegen_gcc
git-subtree-mainline: ae90dcf020
git-subtree-split: afae271d5d
2021-08-12 21:53:49 -04:00