Getting more detailed tbaa information (for both, the access and the structure content) should help for this case.
Greetings, Jeroen On Fri, Mar 20, 2015 at 9:01 PM, Daniel Berlin <[email protected]> wrote: > So, on that review thread Nick, sadly, pointed out a difference between > language and llvm level analysis. > > void test_s03c(struct S03* a, struct S03* b) > { > a->mS00_1[0].mI_2=1; > b->mS00_1[1].mI_2=2; > > // c++11: NoAlias > // llvm: MayAlias ******** performance > // future: NoAlias > } > > > (Assuming for a second that we all agree they are NoAlias at the C++ level. > > You can make these alias at the LLVM level using negative GEPs to make > the a and b pointers go to the same place (and while I had noticed this at > the local level, nick deviously pointed out it could have happened in our > caller). > > The good news is nick believes it's still possible to get this > optimization back in some cases :) > > [...] > -- Jeroen Dobbelaere
_______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
