Change:
<!-- [31mICE[0m: Rustc '' 'error: internal compiler error: unrecognized representation hint', 'error: internal compiler error: unrecognized representation hint' File: --snippet: Version information Command: <!-- Include a backtrace in the code block by setting in your environment. E.g. . --<details<summary<strongProgram output</strong</summary<p</p</details<!-- query stack: --
Regression in nightly-2023-08-26

Discussion:
Ok(literal) => acc.push(ReprPacked(literal)), Err(message) => literal_error = Some(message), }; <del> } else if matches!(name, sym::C | sym::simd | sym::transparent) </del> <ins> } else if matches!(name, sym::Rust | sym::C | sym::simd | sym::transparent) </ins> || int_type_of_word(name).is_some() { recognised = true;

}); } else if matches!( meta_item.name_or_empty(), <del> sym::C | sym::simd | sym::transparent </del> <ins> sym::Rust | sym::C | sym::simd | sym::transparent </ins> ) || int_type_of_word(meta_item.name_or_empty()).is_some() { recognised = true;

); } else if matches!( meta_item.name_or_empty(), <del> sym::C | sym::simd | sym::transparent </del> <ins> sym::Rust | sym::C | sym::simd | sym::transparent </ins> ) || int_type_of_word(meta_item.name_or_empty()).is_some() { recognised = true;

<del> // Regression test for various ICEs inspired by // https://github.com/rust-lang/rust/issues/83921#issuecomment-814640734 // compile-flags: -Zdeduplicate-diagnostics=yes #[repr(packed())] //~^ ERROR: incorrect `repr(packed)` attribute format struct S1; #[repr(align)] //~^ ERROR: invalid `repr(align)` attribute struct S2; #[repr(align(2, 4))] //~^ ERROR: incorrect `repr(align)` attribute format struct S3; #[repr(align())] //~^ ERROR: incorrect `repr(align)` attribute format struct S4; #[repr(i8())] //~^ ERROR: invalid representation hint enum E1 { A, B } #[repr(u32(42))] //~^ ERROR: invalid representation hint enum E2 { A, B } #[repr(i64 = 2)] //~^ ERROR: invalid representation hint enum E3 { A, B } fn main() {} </del>

<del> error[E0552]: incorrect `repr(packed)` attribute format: `packed` takes exactly one parenthesized argument, or no parentheses at all --> $DIR/issue-83921-ice.rs:6:8 | LL | #[repr(packed())] |        ^^^^^^^^ error[E0589]: invalid `repr(align)` attribute: `align` needs an argument --> $DIR/issue-83921-ice.rs:10:8 | LL | #[repr(align)] |        ^^^^^ help: supply an argument here: `align(...)` error[E0693]: incorrect `repr(align)` attribute format: `align` takes exactly one argument in parentheses --> $DIR/issue-83921-ice.rs:14:8 | LL | #[repr(align(2, 4))] |        ^^^^^^^^^^^ error[E0693]: incorrect `repr(align)` attribute format: `align` takes exactly one argument in parentheses --> $DIR/issue-83921-ice.rs:18:8 | LL | #[repr(align())] |        ^^^^^^^ error[E0552]: invalid representation hint: `i8` does not take a parenthesized argument list --> $DIR/issue-83921-ice.rs:22:8 | LL | #[repr(i8())] |        ^^^^ error[E0552]: invalid representation hint: `u32` does not take a parenthesized argument list --> $DIR/issue-83921-ice.rs:26:8 | LL | #[repr(u32(42))] |        ^^^^^^^ error[E0552]: invalid representation hint: `i64` does not take a value --> $DIR/issue-83921-ice.rs:30:8 | LL | #[repr(i64 = 2)] |        ^^^^^^^ error: aborting due to 7 previous errors Some errors have detailed explanations: E0552, E0589, E0693. For more information about an error, try `rustc --explain E0552`. </del>

<ins> // Regression test for various ICEs inspired by // https://github.com/rust-lang/rust/issues/83921#issuecomment-814640734 // compile-flags: -Zdeduplicate-diagnostics=yes #[repr(packed())] //~^ ERROR: incorrect `repr(packed)` attribute format struct S1; #[repr(align)] //~^ ERROR: invalid `repr(align)` attribute struct S2; #[repr(align(2, 4))] //~^ ERROR: incorrect `repr(align)` attribute format struct S3; #[repr(align())] //~^ ERROR: incorrect `repr(align)` attribute format struct S4; // Regression test for issue #118334: #[repr(Rust(u8))] //~^ ERROR: invalid representation hint #[repr(Rust(0))] //~^ ERROR: invalid representation hint #[repr(Rust = 0)] //~^ ERROR: invalid representation hint struct S5; #[repr(i8())] //~^ ERROR: invalid representation hint enum E1 { A, B } #[repr(u32(42))] //~^ ERROR: invalid representation hint enum E2 { A, B } #[repr(i64 = 2)] //~^ ERROR: invalid representation hint enum E3 { A, B } fn main() {} </ins>

<ins> error[E0552]: incorrect `repr(packed)` attribute format: `packed` takes exactly one parenthesized argument, or no parentheses at all --> $DIR/malformed-repr-hints.rs:6:8 | LL | #[repr(packed())] |        ^^^^^^^^ error[E0589]: invalid `repr(align)` attribute: `align` needs an argument --> $DIR/malformed-repr-hints.rs:10:8 | LL | #[repr(align)] |        ^^^^^ help: supply an argument here: `align(...)` error[E0693]: incorrect `repr(align)` attribute format: `align` takes exactly one argument in parentheses --> $DIR/malformed-repr-hints.rs:14:8 | LL | #[repr(align(2, 4))] |        ^^^^^^^^^^^ error[E0693]: incorrect `repr(align)` attribute format: `align` takes exactly one argument in parentheses --> $DIR/malformed-repr-hints.rs:18:8 | LL | #[repr(align())] |        ^^^^^^^ error[E0552]: invalid representation hint: `Rust` does not take a parenthesized argument list --> $DIR/malformed-repr-hints.rs:23:8 | LL | #[repr(Rust(u8))] |        ^^^^^^^^ error[E0552]: invalid representation hint: `Rust` does not take a parenthesized argument list --> $DIR/malformed-repr-hints.rs:25:8 | LL | #[repr(Rust(0))] |        ^^^^^^^ error[E0552]: invalid representation hint: `Rust` does not take a value --> $DIR/malformed-repr-hints.rs:27:8 | LL | #[repr(Rust = 0)] |        ^^^^^^^^ error[E0552]: invalid representation hint: `i8` does not take a parenthesized argument list --> $DIR/malformed-repr-hints.rs:31:8 | LL | #[repr(i8())] |        ^^^^ error[E0552]: invalid representation hint: `u32` does not take a parenthesized argument list --> $DIR/malformed-repr-hints.rs:35:8 | LL | #[repr(u32(42))] |        ^^^^^^^ error[E0552]: invalid representation hint: `i64` does not take a value --> $DIR/malformed-repr-hints.rs:39:8 | LL | #[repr(i64 = 2)] |        ^^^^^^^ error: aborting due to 10 previous errors Some errors have detailed explanations: E0552, E0589, E0693. For more information about an error, try `rustc --explain E0552`. </ins>