comparison gen/functions.cpp @ 119:79c9ac745fbc trunk

[svn r123] Fixed some typeinfo module name mismatches. Fixed D-style varargs returning through pointer. Fixed converting nested function to delegate. Added std.string and std.format to Phobos.
author lindquist
date Mon, 26 Nov 2007 06:45:13 +0100
parents 56a21f3e5d3e
children 9c79b61fb638
comparison
equal deleted inserted replaced
118:d580b95cce2b 119:79c9ac745fbc
394 iarg->setName("this"); 394 iarg->setName("this");
395 fdecl->llvmThisVar = iarg; 395 fdecl->llvmThisVar = iarg;
396 assert(fdecl->llvmThisVar); 396 assert(fdecl->llvmThisVar);
397 ++iarg; 397 ++iarg;
398 } 398 }
399 int varargs = -1; 399
400 if (f->linkage == LINKd && f->varargs == 1) 400 if (f->linkage == LINKd && f->varargs == 1) {
401 varargs = 0; 401 iarg->setName("_arguments");
402 fdecl->llvmArguments = iarg;
403 ++iarg;
404 iarg->setName("_argptr");
405 fdecl->llvmArgPtr = iarg;
406 ++iarg;
407 }
408
402 for (; iarg != func->arg_end(); ++iarg) 409 for (; iarg != func->arg_end(); ++iarg)
403 { 410 {
404 Argument* arg = Argument::getNth(f->parameters, k++); 411 Argument* arg = Argument::getNth(f->parameters, k++);
405 //arg->llvmValue = iarg; 412 //arg->llvmValue = iarg;
406 //Logger::println("identifier: '%s' %p\n", arg->ident->toChars(), arg->ident); 413 //Logger::println("identifier: '%s' %p\n", arg->ident->toChars(), arg->ident);
407 if (arg && arg->ident != 0) { 414 if (arg && arg->ident != 0) {
408 if (arg->vardecl) { 415 if (arg->vardecl) {
409 arg->vardecl->llvmValue = iarg; 416 arg->vardecl->llvmValue = iarg;
410 } 417 }
411 iarg->setName(arg->ident->toChars()); 418 iarg->setName(arg->ident->toChars());
412 }
413 else if (!arg && varargs >= 0) {
414 if (varargs == 0) {
415 iarg->setName("_arguments");
416 fdecl->llvmArguments = iarg;
417 }
418 else if (varargs == 1) {
419 iarg->setName("_argptr");
420 fdecl->llvmArgPtr = iarg;
421 }
422 else
423 assert(0);
424 varargs++;
425 } 419 }
426 else { 420 else {
427 iarg->setName("unnamed"); 421 iarg->setName("unnamed");
428 } 422 }
429 } 423 }