Mercurial > projects > ldc
comparison gen/classes.cpp @ 1210:3d4581761b4c
Add some alignment info where LLVM might otherwise be more pessimistic.
In particular, %.nest_arg is always aligned even though it's bitcast from i8*.
Pointers in vtables are also guaranteed to be stored at aligned addresses.
author | Frits van Bommel <fvbommel wxs.nl> |
---|---|
date | Sun, 12 Apr 2009 21:56:43 +0200 |
parents | 83d3b25c2213 |
children | 79758fd2f48a |
comparison
equal
deleted
inserted
replaced
1209:8699c450a1a0 | 1210:3d4581761b4c |
---|---|
1329 // load vtbl ptr | 1329 // load vtbl ptr |
1330 funcval = DtoLoad(funcval); | 1330 funcval = DtoLoad(funcval); |
1331 // index vtbl | 1331 // index vtbl |
1332 funcval = DtoGEPi(funcval, 0, fdecl->vtblIndex, fdecl->toChars()); | 1332 funcval = DtoGEPi(funcval, 0, fdecl->vtblIndex, fdecl->toChars()); |
1333 // load funcptr | 1333 // load funcptr |
1334 funcval = DtoLoad(funcval); | 1334 funcval = DtoAlignedLoad(funcval); |
1335 | 1335 |
1336 if (Logger::enabled()) | 1336 if (Logger::enabled()) |
1337 Logger::cout() << "funcval: " << *funcval << '\n'; | 1337 Logger::cout() << "funcval: " << *funcval << '\n'; |
1338 | 1338 |
1339 // cast to final funcptr type | 1339 // cast to final funcptr type |