Mercurial > projects > ldc
comparison runtime/internal/lifetime.d @ 1506:76936858d1c6
Return `void*` from _d_allocclass so LLVM doesn't do weird things with it...
This allows `-instcombine` followed by `-gvn` to do devirtualization, so add
`-gvn` in strategic places in the default pass order.
author | Frits van Bommel <fvbommel wxs.nl> |
---|---|
date | Sat, 20 Jun 2009 11:39:13 +0200 |
parents | d7ec997de427 |
children |
comparison
equal
deleted
inserted
replaced
1505:1e5a14691e77 | 1506:76936858d1c6 |
---|---|
105 | 105 |
106 | 106 |
107 /** | 107 /** |
108 * | 108 * |
109 */ | 109 */ |
110 extern (C) Object _d_allocclass(ClassInfo ci) | 110 extern (C) void* _d_allocclass(ClassInfo ci) |
111 { | 111 { |
112 void* p; | 112 void* p; |
113 | 113 |
114 debug(PRINTF2) printf("_d_allocclass(ci = %p, %s)\n", ci, cast(char *)ci.name.ptr); | 114 debug(PRINTF2) printf("_d_allocclass(ci = %p, %s)\n", ci, cast(char *)ci.name.ptr); |
115 /+ | 115 /+ |
148 // initialize it | 148 // initialize it |
149 // ldc does this inline | 149 // ldc does this inline |
150 //(cast(byte*) p)[0 .. ci.init.length] = ci.init[]; | 150 //(cast(byte*) p)[0 .. ci.init.length] = ci.init[]; |
151 | 151 |
152 debug(PRINTF) printf("initialization done\n"); | 152 debug(PRINTF) printf("initialization done\n"); |
153 return cast(Object) p; | 153 return p; |
154 } | 154 } |
155 | 155 |
156 /** | 156 /** |
157 * | 157 * |
158 */ | 158 */ |