Hi, This patch broke all ARM bots:
http://lab.llvm.org:8011/builders/clang-cmake-armv7-a15-full/builds/4713 static llvm::CastInst* llvm::CastInst::Create(llvm::Instruction::CastOps, llvm::Value*, llvm::Type*, const llvm::Twine&, llvm::Instruction*): Assertion `castIsValid(op, S, Ty) && "Invalid cast!"' failed. Can you please have a look? cheers, --renato On 13 April 2015 at 18:40, Argyrios Kyrtzidis <[email protected]> wrote: > Author: akirtzidis > Date: Mon Apr 13 12:40:46 2015 > New Revision: 234767 > > URL: http://llvm.org/viewvc/llvm-project?rev=234767&view=rev > Log: > [CodeGen] Fix crash with duplicated mangled name. > > Patch by Yunzhong Gao! > > Added: > cfe/trunk/test/CodeGenCXX/duplicate-mangled-name2.cpp > cfe/trunk/test/CodeGenCXX/duplicate-mangled-name3.cpp > Modified: > cfe/trunk/lib/CodeGen/CodeGenModule.cpp > > Modified: cfe/trunk/lib/CodeGen/CodeGenModule.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenModule.cpp?rev=234767&r1=234766&r2=234767&view=diff > ============================================================================== > --- cfe/trunk/lib/CodeGen/CodeGenModule.cpp (original) > +++ cfe/trunk/lib/CodeGen/CodeGenModule.cpp Mon Apr 13 12:40:46 2015 > @@ -1372,6 +1372,15 @@ void CodeGenModule::EmitGlobal(GlobalDec > /*DontDefer=*/false); > return; > } > + > + if (llvm::GlobalValue *GV = GetGlobalValue(getMangledName(GD))) > + if (!GV->isDeclaration()) { > + getDiags().Report(FD->getLocation(), > diag::err_duplicate_mangled_name); > + GlobalDecl OldGD = Manglings.lookup(GV->getName()); > + if (auto *Prev = OldGD.getDecl()) > + getDiags().Report(Prev->getLocation(), > diag::note_previous_definition); > + return; > + } > } else { > const auto *VD = cast<VarDecl>(Global); > assert(VD->isFileVarDecl() && "Cannot emit local var decl as global."); > @@ -2405,14 +2414,6 @@ void CodeGenModule::EmitGlobalFunctionDe > } > } > > - if (!GV->isDeclaration()) { > - getDiags().Report(D->getLocation(), diag::err_duplicate_mangled_name); > - GlobalDecl OldGD = Manglings.lookup(GV->getName()); > - if (auto *Prev = OldGD.getDecl()) > - getDiags().Report(Prev->getLocation(), diag::note_previous_definition); > - return; > - } > - > if (GV->getType()->getElementType() != Ty) { > // If the types mismatch then we have to rewrite the definition. > assert(GV->isDeclaration() && "Shouldn't replace non-declaration"); > > Added: cfe/trunk/test/CodeGenCXX/duplicate-mangled-name2.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/duplicate-mangled-name2.cpp?rev=234767&view=auto > ============================================================================== > --- cfe/trunk/test/CodeGenCXX/duplicate-mangled-name2.cpp (added) > +++ cfe/trunk/test/CodeGenCXX/duplicate-mangled-name2.cpp Mon Apr 13 12:40:46 > 2015 > @@ -0,0 +1,9 @@ > +// RUN: %clang_cc1 -triple i686-pc-linux-gnu -emit-llvm-only %s -verify > +// RUN: %clang_cc1 -triple i686-pc-linux-gnu -femit-all-decls > -emit-llvm-only %s -verify > + > +void foo(void *p) __asm("_ZN1SC2Ev"); > +void foo(void *p) { } // expected-note {{previous}} > + > +struct S { > + S() {} // expected-error {{definition with same mangled name as another > definition}} > +} s; > > Added: cfe/trunk/test/CodeGenCXX/duplicate-mangled-name3.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/duplicate-mangled-name3.cpp?rev=234767&view=auto > ============================================================================== > --- cfe/trunk/test/CodeGenCXX/duplicate-mangled-name3.cpp (added) > +++ cfe/trunk/test/CodeGenCXX/duplicate-mangled-name3.cpp Mon Apr 13 12:40:46 > 2015 > @@ -0,0 +1,10 @@ > +// RUN: %clang_cc1 -triple %itanium_abi_triple -emit-llvm-only %s -verify > +// RUN: %clang_cc1 -triple %itanium_abi_triple -femit-all-decls > -emit-llvm-only %s -verify > + > +extern "C" { > + void _ZN1SC2Ev(void *p) { } // expected-note {{previous}} > +} > + > +struct S { > + S() {} // expected-error {{definition with same mangled name as another > definition}} > +} s; > > > _______________________________________________ > cfe-commits mailing list > [email protected] > http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits _______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
