# HG changeset patch # User Frits van Bommel # Date 1236729700 -3600 # Node ID 6a19c36fc4a6886bac5c99638dd7ce829f03be5c # Parent d33b0d4b816a8f67d708fb3ae4eaf2a83bcffd71# Parent b1d75bf46ffa87e9f238ec55d811ab80add0f696 Merge diff -r b1d75bf46ffa -r 6a19c36fc4a6 dmd/template.c --- a/dmd/template.c Tue Mar 10 13:59:50 2009 -0400 +++ b/dmd/template.c Wed Mar 11 01:01:40 2009 +0100 @@ -3186,6 +3186,14 @@ { //printf("setting aliasdecl\n"); aliasdecl = new AliasDeclaration(loc, s->ident, s); + + // LDC propagate internal information + if (tempdecl->llvmInternal) { + s->llvmInternal = tempdecl->llvmInternal; + if (FuncDeclaration* fd = s->isFuncDeclaration()) { + fd->intrinsicName = tempdecl->intrinsicName; + } + } } } } diff -r b1d75bf46ffa -r 6a19c36fc4a6 gen/llvmhelpers.cpp --- a/gen/llvmhelpers.cpp Tue Mar 10 13:59:50 2009 -0400 +++ b/gen/llvmhelpers.cpp Wed Mar 11 01:01:40 2009 +0100 @@ -1541,8 +1541,8 @@ name.c_str(), T->toChars(), (name[pos-1] == 'i' ? "n integral" : " floating-point")); } else { - // Just plain wrong. - ti->error("has an invalid intrinsic name: %s", name.c_str()); + // Just plain wrong. (Error in declaration, not instantiation) + td->error("has an invalid intrinsic name: %s", name.c_str()); } fatal(); // or LLVM asserts }