5 ms·
> It's just a type of dead store elimination It's not just any, typical kind of dead store elimination. It also would require other optimization passes that I
by jcr1488 7y ago
> It's just a type of dead store elimination
It's not just any, typical kind of dead store elimination. It also would require other optimization passes that I can assure you no mainstream compiler actually does. You can disagree with me if you want, but you're simply wrong.
- Dylan16807 7y agoLots of mainstream compilers already have passes that check if every field in an object is definitely assigned. They use this to provide errors or warnings. That step is 90% of the work. Once you can do that, it's straightforward to assess that every field is assigned after a memset, with no intervening reads, and then remove the memset.
- jcr1488 7y ago> That step is 90% of the work I spent several years working on a production grade compiler and I can assure you it's not. But keep just making things up off the top of your head if it makes you feel smart.
- Dylan16807 7y agoWould you care to explain why? Let's look at a basic common case, as a checklist. 1. All fields are definitely assigned. 2. No functions are called except intrisics. 3. Nothing reads from the object on any control path. 4. Memset happens between creation and first assignment. We agreed that step 1 is a solved problem, right? Are any of 2-4 difficult? Did I miss any prerequisites for the optimization? Once you can prove 1-4, isn't the optimization pass as simple as looking for memsets applied to structs, checking 1-4, then deleting the call?