+++ title = "Memory Aliasing" author = "Yann Herklotz" tags = [] categories = [] backlinks = ["1c2b"] forwardlinks = ["1c7", "1c2c"] zettelid = "1c2b1" +++ One problem with scheduling, and list scheduling in particular as it is a relatively simple scheduling model, is that loads and stores cannot be scheduled correctly. This is because dependencies cannot be calculated properly between loads and stores, so one cannot know if these were done in parallel or not. One solution is to use polyhedral analysis ([\#1c7]) with loads and stores that have some kind of induction variable, as is present in loop pipelining ([\#1c2c]). The problem in C is that there is no aliasing information about pointers, and they can therefore point to same memory location. However, strict aliasing in GCC, for example, can allow for aliasing information about pointers of different types, as GCC assumes that these cannot point to the same data structure. [\#1c7]: /zettel/1c7 [\#1c2c]: /zettel/1c2c