Mercurial > projects > ldc
comparison gen/tollvm.cpp @ 1532:c88b16d4a13c
Remove all of the now unecessary #if LLVM_REV
author | Benjamin Kramer <benny.kra@gmail.com> |
---|---|
date | Sat, 11 Jul 2009 14:09:33 +0200 |
parents | ad7f2f1862d6 |
children | 8ca25bd765a3 |
comparison
equal
deleted
inserted
replaced
1531:7120a74e9ae2 | 1532:c88b16d4a13c |
---|---|
239 // global variable | 239 // global variable |
240 if (VarDeclaration* vd = sym->isVarDeclaration()) | 240 if (VarDeclaration* vd = sym->isVarDeclaration()) |
241 { | 241 { |
242 if (mustDefineSymbol(vd)) | 242 if (mustDefineSymbol(vd)) |
243 Logger::println("Variable %savailable externally: %s", (vd->availableExternally ? "" : "not "), vd->toChars()); | 243 Logger::println("Variable %savailable externally: %s", (vd->availableExternally ? "" : "not "), vd->toChars()); |
244 #if LLVM_REV >= 68940 | |
245 // generated by inlining semantics run | 244 // generated by inlining semantics run |
246 if (vd->availableExternally && mustDefineSymbol(sym)) | 245 if (vd->availableExternally && mustDefineSymbol(sym)) |
247 return llvm::GlobalValue::AvailableExternallyLinkage; | 246 return llvm::GlobalValue::AvailableExternallyLinkage; |
248 #endif | |
249 // template | 247 // template |
250 if (needsTemplateLinkage(sym)) | 248 if (needsTemplateLinkage(sym)) |
251 return TEMPLATE_LINKAGE_TYPE; | 249 return TEMPLATE_LINKAGE_TYPE; |
252 } | 250 } |
253 // function | 251 // function |
259 TypeFunction* ft = (TypeFunction*)fdecl->type; | 257 TypeFunction* ft = (TypeFunction*)fdecl->type; |
260 | 258 |
261 // intrinsics are always external | 259 // intrinsics are always external |
262 if (fdecl->llvmInternal == LLVMintrinsic) | 260 if (fdecl->llvmInternal == LLVMintrinsic) |
263 return llvm::GlobalValue::ExternalLinkage; | 261 return llvm::GlobalValue::ExternalLinkage; |
264 #if LLVM_REV >= 68940 | |
265 // generated by inlining semantics run | 262 // generated by inlining semantics run |
266 if (fdecl->availableExternally && mustDefineSymbol(sym)) | 263 if (fdecl->availableExternally && mustDefineSymbol(sym)) |
267 return llvm::GlobalValue::AvailableExternallyLinkage; | 264 return llvm::GlobalValue::AvailableExternallyLinkage; |
268 #endif | |
269 // array operations are always template linkage | 265 // array operations are always template linkage |
270 if (fdecl->isArrayOp) | 266 if (fdecl->isArrayOp) |
271 return TEMPLATE_LINKAGE_TYPE; | 267 return TEMPLATE_LINKAGE_TYPE; |
272 // template instances should have weak linkage | 268 // template instances should have weak linkage |
273 // but only if there's a body, and it's not naked | 269 // but only if there's a body, and it's not naked |
281 // class | 277 // class |
282 else if (ClassDeclaration* cd = sym->isClassDeclaration()) | 278 else if (ClassDeclaration* cd = sym->isClassDeclaration()) |
283 { | 279 { |
284 if (mustDefineSymbol(cd)) | 280 if (mustDefineSymbol(cd)) |
285 Logger::println("Class %savailable externally: %s", (cd->availableExternally ? "" : "not "), vd->toChars()); | 281 Logger::println("Class %savailable externally: %s", (cd->availableExternally ? "" : "not "), vd->toChars()); |
286 #if LLVM_REV >= 68940 | |
287 // generated by inlining semantics run | 282 // generated by inlining semantics run |
288 if (cd->availableExternally && mustDefineSymbol(sym)) | 283 if (cd->availableExternally && mustDefineSymbol(sym)) |
289 return llvm::GlobalValue::AvailableExternallyLinkage; | 284 return llvm::GlobalValue::AvailableExternallyLinkage; |
290 #endif | |
291 // template | 285 // template |
292 if (needsTemplateLinkage(cd)) | 286 if (needsTemplateLinkage(cd)) |
293 return TEMPLATE_LINKAGE_TYPE; | 287 return TEMPLATE_LINKAGE_TYPE; |
294 } | 288 } |
295 else | 289 else |
337 } | 331 } |
338 | 332 |
339 llvm::GlobalValue::LinkageTypes DtoInternalLinkage(Dsymbol* sym) | 333 llvm::GlobalValue::LinkageTypes DtoInternalLinkage(Dsymbol* sym) |
340 { | 334 { |
341 if (needsTemplateLinkage(sym)) { | 335 if (needsTemplateLinkage(sym)) { |
342 #if LLVM_REV >= 68940 | |
343 if (isAvailableExternally(sym) && mustDefineSymbol(sym)) | 336 if (isAvailableExternally(sym) && mustDefineSymbol(sym)) |
344 return llvm::GlobalValue::AvailableExternallyLinkage; | 337 return llvm::GlobalValue::AvailableExternallyLinkage; |
345 #endif | |
346 return TEMPLATE_LINKAGE_TYPE; | 338 return TEMPLATE_LINKAGE_TYPE; |
347 } | 339 } |
348 else | 340 else |
349 return llvm::GlobalValue::InternalLinkage; | 341 return llvm::GlobalValue::InternalLinkage; |
350 } | 342 } |
351 | 343 |
352 llvm::GlobalValue::LinkageTypes DtoExternalLinkage(Dsymbol* sym) | 344 llvm::GlobalValue::LinkageTypes DtoExternalLinkage(Dsymbol* sym) |
353 { | 345 { |
354 #if LLVM_REV >= 68940 | |
355 if (isAvailableExternally(sym) && mustDefineSymbol(sym)) | 346 if (isAvailableExternally(sym) && mustDefineSymbol(sym)) |
356 return llvm::GlobalValue::AvailableExternallyLinkage; | 347 return llvm::GlobalValue::AvailableExternallyLinkage; |
357 #endif | |
358 if (needsTemplateLinkage(sym)) | 348 if (needsTemplateLinkage(sym)) |
359 return TEMPLATE_LINKAGE_TYPE; | 349 return TEMPLATE_LINKAGE_TYPE; |
360 else | 350 else |
361 return llvm::GlobalValue::ExternalLinkage; | 351 return llvm::GlobalValue::ExternalLinkage; |
362 } | 352 } |
766 return gTargetData->getTypeStoreSize(t); | 756 return gTargetData->getTypeStoreSize(t); |
767 } | 757 } |
768 | 758 |
769 size_t getTypePaddedSize(const LLType* t) | 759 size_t getTypePaddedSize(const LLType* t) |
770 { | 760 { |
771 #if LLVM_REV > 71348 | |
772 size_t sz = gTargetData->getTypeAllocSize(t); | 761 size_t sz = gTargetData->getTypeAllocSize(t); |
773 #else | |
774 size_t sz = gTargetData->getTypePaddedSize(t); | |
775 #endif | |
776 //Logger::cout() << "abi type size of: " << *t << " == " << sz << '\n'; | 762 //Logger::cout() << "abi type size of: " << *t << " == " << sz << '\n'; |
777 return sz; | 763 return sz; |
778 } | 764 } |
779 | 765 |
780 unsigned char getABITypeAlign(const LLType* t) | 766 unsigned char getABITypeAlign(const LLType* t) |