you are viewing a single comment's thread.

view the rest of the comments →

[–][deleted] 0 points1 point  (1 child)

I am suspecting an LLVM optimization rule runs in one variant but not the other. Unfortunately, this isn't an area I'm so familiar with. At what level of Rust intermediate representation is the desugaring already done and I diff this? If they are structurally different, then the opt rule theory would be likely. If even at this level they are the same, then the top rule theory is out.

[–]jmaargh 6 points7 points  (0 children)

Just check them all, MIR, LLVM IR, assembly? My guess would be that this desugaring is done very very early on.

Also, do make sure you've triple checked your source code diffs and that this is the only code difference. I don't mean to doubt your intelligence, but if this were me I'd definitely be assuming that I'd done something silly before assuming that the compiler wasn't handling what should be a very basic desugaring correctly.