Change:
<!-- Thank you for finding an Internal Compiler Error! If possible, try to provide a minimal verifiable example. You can read "Rust Bug Minimization Patterns" for how to create smaller examples. --<!-- If you're using the stable version of the compiler, you should also check if the bug also exists in the beta or nightly versions. --: <!-- Include a backtrace in the code block by setting in your environment. E.g. . --<details<summary<strongBacktrace</strong</summary<p</p</details
Also reproducible in miri: `
The second one looks very different from the first. That looks like a bug in the Miri implementation of , which is not prepared for wide pointers.
I cannot reproduce the original example any more. And in fact is empty so I don't think Miri even did anything. The backtrace points to ConstProp, which would make this a rustc bug, not a Miri bug. Not sure if there is anything actionable here. The still ICEs.
do you know the codegen behavior of on wide pointers? Does it do anything with the metadata? (/ also compares the metadata, as far as I know).
Actually that it is... lexicographic?!?
Indeed. This is the actual implementation:
Example still crashes with -Zmir-opt-level=4 as noted in the title, reopening.
I tried it with opt-level 4 and it didn't crash for me... which rustc are you using?
did you also pass --emit=mir ?
D'oh, I should read what you are saying, sorry...
Wow, that backtrace is completely useless. All the relevant line numbers are missing. I some and tracked it to this line:

Discussion:
endif syn keyword   rustKeyword     alt as assert be bind break <del> syn keyword   rustKeyword     check claim cont const copy do else enum export fail syn keyword   rustKeyword     fn for if iface impl import in inline lambda let log </del> <ins> syn keyword   rustKeyword     check claim cont const copy do else export fail syn keyword   rustKeyword     for if impl import in inline lambda let log </ins> syn keyword   rustKeyword     loop mod mut mutable native note of prove pure <del> syn keyword   rustKeyword     resource ret self syntax to type unchecked </del> <ins> syn keyword   rustKeyword     ret self syntax to unchecked </ins> syn keyword   rustKeyword     unsafe use while with <ins> " FIXME: Scoped impl's name is also fallen in this category syn keyword   rustKeyword     mod iface resource class enum type nextgroup=rustIdentifier skipwhite syn keyword   rustKeyword     fn nextgroup=rustFuncName skipwhite syn match     rustIdentifier  "%([^[:cntrl:][:space:][:punct:][:digit:]]|_)%([^[:cntrl:][:punct:][:space:]]|_)*" display contained syn match     rustFuncName    "%([^[:cntrl:][:space:][:punct:][:digit:]]|_)%([^[:cntrl:][:punct:][:space:]]|_)*" display contained </ins> " Reserved words syn keyword   rustKeyword     m32 m64 m128 f80 f16 f128 class trait

syn region	  rustString      start=+L="+ skip=+|"+ end=+"+ <del> "integer number, or floating point number without a dot and with "f". syn case ignore syn match	  rustNumber		display contained "d+(u=l{0,2}|ll=u)>" "hex number syn match	  rustNumber		display contained "0xx+(u=l{0,2}|ll=u)>" syn match	rustFloat		display contained "d+f" "floating point number, with dot, optional exponent syn match	rustFloat		display contained "d+.d*(e[-+]=d+)=[fl]=" "floating point number, starting with a dot, optional exponent syn match	rustFloat		display contained ".d+(e[-+]=d+)=[fl]=>" "floating point number, without dot, with exponent syn match	rustFloat		display contained "d+e[-+]=d+[fl]=>" syn case match </del> <ins> " Number literals syn match     rustNumber      display "<[0-9][0-9_]*>" syn match     rustNumber      display "<[0-9][0-9_]*(u|u8|u16|u32|u64)>" syn match     rustNumber      display "<[0-9][0-9_]*(i8|i16|i32|i64)>" syn match     rustHexNumber   display "<0x[a-fA-F0-9_]+>" syn match     rustHexNumber   display "<0x[a-fA-F0-9_]+(u|u8|u16|u32|u64)>" syn match     rustHexNumber   display "<0x[a-fA-F0-9_]+(i8|i16|i32|i64)>" syn match     rustBinNumber   display "<0b[01_]+>" syn match     rustBinNumber   display "<0b[01_]+(u|u8|u16|u32|u64)>" syn match     rustBinNumber   display "<0b[01_]+(i8|i16|i32|i64)>" syn match     rustFloat       display "<[0-9][0-9_]*(f|f32|f64)>" syn match     rustFloat       display "<[0-9][0-9_]*([eE][+-]=[0-9_]+)>" syn match     rustFloat       display "<[0-9][0-9_]*([eE][+-]=[0-9_]+)(f|f32|f64)>" syn match     rustFloat       display "<[0-9][0-9_]*.[0-9_]+>" syn match     rustFloat       display "<[0-9][0-9_]*.[0-9_]+(f|f32|f64)>" syn match     rustFloat       display "<[0-9][0-9_]*.[0-9_]+%([eE][+-]=[0-9_]+)>" syn match     rustFloat       display "<[0-9][0-9_]*.[0-9_]+%([eE][+-]=[0-9_]+)(f|f32|f64)>" </ins> syn match   rustCharacter   "'([^']|(['nrt"]|xx{2}|ux{4}|Ux{8}))'" <del> syn region    rustComment     start="/*" end="*/" contains=rustComment syn region    rustComment     start="//" skip="$" end="$" keepend </del> <ins> syn region    rustComment     start="/*" end="*/" contains=rustComment,rustTodo syn region    rustComment     start="//" skip="$" end="$" contains=rustTodo keepend syn keyword   rustTodo        TODO FIXME XXX NB hi def link rustHexNumber     rustNumber hi def link rustBinNumber     rustNumber </ins> hi def link rustString        String hi def link rustCharacter     Character

hi def link rustBoolean       Boolean hi def link rustFloat         Float hi def link rustKeyword       Keyword <ins> hi def link rustIdentifier    Identifier hi def link rustFuncName      Function </ins> hi def link rustComment       Comment hi def link rustMacro         Macro hi def link rustType          Type <ins> hi def link rustTodo          Todo </ins> syn sync minlines=200 syn sync maxlines=500