Re: r304201 - [ARM] Fix Neon vector type alignment to 64-bit
Hi Javed, I think this broke the bots: http://lab.llvm.org:8011/builders/clang-cmake-armv7-a15/builds/7620 Can you have a look, or revert? Thanks, Diana On 30 May 2017 at 12:12, Javed Absar via cfe-commits wrote: > Author: javed.absar > Date: Tue May 30 05:12:15 2017 > New Revision: 304201 > > URL: http://llvm.org/viewvc/llvm-project?rev=304201&view=rev > Log: > [ARM] Fix Neon vector type alignment to 64-bit > > The maximum alignment for ARM NEON data types should be 64-bits as specified > in ARM procedure call standard document Sec. A.2 Notes. > This patch fixes it from its current larger natural default values, except > for Android (so as not to break existing ABI). > Reviewed by: Stephen Hines, Renato Golin. > Differential Revision: https://reviews.llvm.org/D33205 > > > Modified: > cfe/trunk/lib/Basic/Targets.cpp > cfe/trunk/test/CodeGen/arm-abi-vector.c > cfe/trunk/test/CodeGen/arm-neon-misc.c > cfe/trunk/test/CodeGen/arm-swiftcall.c > cfe/trunk/test/CodeGen/armv7k-abi.c > > Modified: cfe/trunk/lib/Basic/Targets.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Basic/Targets.cpp?rev=304201&r1=304200&r2=304201&view=diff > == > --- cfe/trunk/lib/Basic/Targets.cpp (original) > +++ cfe/trunk/lib/Basic/Targets.cpp Tue May 30 05:12:15 2017 > @@ -5382,6 +5382,11 @@ public: > // ARM has atomics up to 8 bytes > setAtomic(); > > +if (Triple.getEnvironment() == llvm::Triple::Android) > + MaxVectorAlign = 128; // don't break existing Android ABI > +else > + MaxVectorAlign = 64; // AAPCS > + > // Do force alignment of members that follow zero length bitfields. If > // the alignment of the zero-length bitfield is greater than the member > // that follows it, `bar', `bar' will be aligned as the type of the > > Modified: cfe/trunk/test/CodeGen/arm-abi-vector.c > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/arm-abi-vector.c?rev=304201&r1=304200&r2=304201&view=diff > == > --- cfe/trunk/test/CodeGen/arm-abi-vector.c (original) > +++ cfe/trunk/test/CodeGen/arm-abi-vector.c Tue May 30 05:12:15 2017 > @@ -133,20 +133,20 @@ double test_5c(__char5 *in) { > > double varargs_vec_9c(int fixed, ...) { > // CHECK: varargs_vec_9c > -// CHECK: [[VAR:%.*]] = alloca <9 x i8>, align 16 > +// CHECK: [[VAR:%.*]] = alloca <9 x i8>, align 8 > // CHECK: [[ALIGN:%.*]] = and i32 {{%.*}}, -8 > // CHECK: [[AP_ALIGN:%.*]] = inttoptr i32 [[ALIGN]] to i8* > // CHECK: [[AP_NEXT:%.*]] = getelementptr inbounds i8, i8* [[AP_ALIGN]], i32 > 16 > // CHECK: [[AP_CAST:%.*]] = bitcast i8* [[AP_ALIGN]] to <9 x i8>* > // CHECK: [[T0:%.*]] = load <9 x i8>, <9 x i8>* [[AP_CAST]], align 8 > -// CHECK: store <9 x i8> [[T0]], <9 x i8>* [[VAR]], align 16 > +// CHECK: store <9 x i8> [[T0]], <9 x i8>* [[VAR]], align 8 > // APCS-GNU: varargs_vec_9c > -// APCS-GNU: [[VAR:%.*]] = alloca <9 x i8>, align 16 > +// APCS-GNU: [[VAR:%.*]] = alloca <9 x i8>, align 8 > // APCS-GNU: [[AP:%.*]] = load i8*, > // APCS-GNU: [[AP_NEXT:%.*]] = getelementptr inbounds i8, i8* [[AP]], i32 16 > // APCS-GNU: [[AP_CAST:%.*]] = bitcast i8* [[AP]] to <9 x i8>* > // APCS-GNU: [[VEC:%.*]] = load <9 x i8>, <9 x i8>* [[AP_CAST]], align 4 > -// APCS-GNU: store <9 x i8> [[VEC]], <9 x i8>* [[VAR]], align 16 > +// APCS-GNU: store <9 x i8> [[VEC]], <9 x i8>* [[VAR]], align 8 > // ANDROID: varargs_vec_9c > // ANDROID: [[VAR:%.*]] = alloca <9 x i8>, align 16 > // ANDROID: [[ALIGN:%.*]] = and i32 {{%.*}}, -8 > @@ -246,15 +246,15 @@ double test_3s(__short3 *in) { > > double varargs_vec_5s(int fixed, ...) { > // CHECK: varargs_vec_5s > -// CHECK: [[VAR_ALIGN:%.*]] = alloca <5 x i16>, align 16 > +// CHECK: [[VAR_ALIGN:%.*]] = alloca <5 x i16>, align 8 > // CHECK: [[ALIGN:%.*]] = and i32 {{%.*}}, -8 > // CHECK: [[AP_ALIGN:%.*]] = inttoptr i32 [[ALIGN]] to i8* > // CHECK: [[AP_NEXT:%.*]] = getelementptr inbounds i8, i8* [[AP_ALIGN]], i32 > 16 > // CHECK: [[AP_CAST:%.*]] = bitcast i8* [[AP_ALIGN]] to <5 x i16>* > // CHECK: [[VEC:%.*]] = load <5 x i16>, <5 x i16>* [[AP_CAST]], align 8 > -// CHECK: store <5 x i16> [[VEC]], <5 x i16>* [[VAR_ALIGN]], align 16 > +// CHECK: store <5 x i16> [[VEC]], <5 x i16>* [[VAR_ALIGN]], align 8 > // APCS-GNU: varargs_vec_5s > -// APCS-GNU: [[VAR:%.*]] = alloca <5 x i16>, align 16 > +// APCS-GNU: [[VAR:%.*]] = alloca <5 x i16>, align 8 > // APCS-GNU: [[AP:%.*]] = load i8*, > // APCS-GNU: [[AP_NEXT:%.*]] = getelementptr inbounds i8, i8* [[AP]], i32 16 > // APCS-GNU: [[AP_CAST:%.*]] = bitcast i8* [[AP]] to <5 x i16>* > > Modified: cfe/trunk/test/CodeGen/arm-neon-misc.c > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/arm-neon-misc.c?rev=304201&r1=304200&r2=304201&view=diff > == > --- cfe/trunk/test/CodeGen/
r304211 - Fixup r304205 - Require PowerPC target
Author: rovka Date: Tue May 30 09:05:33 2017 New Revision: 304211 URL: http://llvm.org/viewvc/llvm-project?rev=304211&view=rev Log: Fixup r304205 - Require PowerPC target Modified: cfe/trunk/test/CodeGen/altivec-ct.c Modified: cfe/trunk/test/CodeGen/altivec-ct.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/altivec-ct.c?rev=304211&r1=304210&r2=304211&view=diff == --- cfe/trunk/test/CodeGen/altivec-ct.c (original) +++ cfe/trunk/test/CodeGen/altivec-ct.c Tue May 30 09:05:33 2017 @@ -1,6 +1,8 @@ // RUN: %clang_cc1 -triple powerpc64le-linux-gnu -S -O0 -o - %s -target-feature +altivec -target-feature +vsx | FileCheck %s -check-prefix=CHECK -check-prefix=VSX // RUN: %clang_cc1 -triple powerpc-linux-gnu -S -O0 -o - %s -target-feature +altivec -target-feature -vsx | FileCheck %s +// REQUIRES: powerpc-registered-target + #include // CHECK-LABEL: test1 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
r305287 - Revert "Revert r301742 which made ExprConstant checking apply to all full-exprs."
Author: rovka Date: Tue Jun 13 07:50:06 2017 New Revision: 305287 URL: http://llvm.org/viewvc/llvm-project?rev=305287&view=rev Log: Revert "Revert r301742 which made ExprConstant checking apply to all full-exprs." This reverts commit r305239 because it broke the buildbots (the diag-flags.cpp test is failing). Modified: cfe/trunk/include/clang/Sema/Sema.h cfe/trunk/lib/AST/ExprConstant.cpp cfe/trunk/lib/Sema/SemaChecking.cpp cfe/trunk/test/OpenMP/distribute_parallel_for_simd_aligned_messages.cpp cfe/trunk/test/OpenMP/distribute_simd_aligned_messages.cpp cfe/trunk/test/OpenMP/for_simd_aligned_messages.cpp cfe/trunk/test/OpenMP/parallel_for_simd_aligned_messages.cpp cfe/trunk/test/OpenMP/simd_aligned_messages.cpp cfe/trunk/test/OpenMP/target_parallel_for_simd_aligned_messages.cpp cfe/trunk/test/OpenMP/target_simd_aligned_messages.cpp cfe/trunk/test/OpenMP/target_teams_distribute_parallel_for_simd_aligned_messages.cpp cfe/trunk/test/OpenMP/target_teams_distribute_simd_aligned_messages.cpp cfe/trunk/test/OpenMP/taskloop_simd_aligned_messages.cpp cfe/trunk/test/OpenMP/teams_distribute_parallel_for_simd_aligned_messages.cpp cfe/trunk/test/OpenMP/teams_distribute_simd_aligned_messages.cpp cfe/trunk/test/Sema/integer-overflow.c Modified: cfe/trunk/include/clang/Sema/Sema.h URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Sema/Sema.h?rev=305287&r1=305286&r2=305287&view=diff == --- cfe/trunk/include/clang/Sema/Sema.h (original) +++ cfe/trunk/include/clang/Sema/Sema.h Tue Jun 13 07:50:06 2017 @@ -10273,7 +10273,6 @@ private: void CheckFloatComparison(SourceLocation Loc, Expr* LHS, Expr* RHS); void CheckImplicitConversions(Expr *E, SourceLocation CC = SourceLocation()); void CheckBoolLikeConversion(Expr *E, SourceLocation CC); - void CheckForIntOverflow(Expr *E); void CheckUnsequencedOperations(Expr *E); /// \brief Perform semantic checks on a completed expression. This will either Modified: cfe/trunk/lib/AST/ExprConstant.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/ExprConstant.cpp?rev=305287&r1=305286&r2=305287&view=diff == --- cfe/trunk/lib/AST/ExprConstant.cpp (original) +++ cfe/trunk/lib/AST/ExprConstant.cpp Tue Jun 13 07:50:06 2017 @@ -6226,6 +6226,10 @@ bool RecordExprEvaluator::VisitInitListE // the initializer list. ImplicitValueInitExpr VIE(HaveInit ? Info.Ctx.IntTy : Field->getType()); const Expr *Init = HaveInit ? E->getInit(ElementNo++) : &VIE; +if (Init->isValueDependent()) { + Success = false; + continue; +} // Temporarily override This, in case there's a CXXDefaultInitExpr in here. ThisOverrideRAII ThisOverride(*Info.CurrentCall, &This, @@ -9936,7 +9940,8 @@ static bool EvaluateAsRValue(EvalInfo &I } static bool FastEvaluateAsRValue(const Expr *Exp, Expr::EvalResult &Result, - const ASTContext &Ctx, bool &IsConst) { + const ASTContext &Ctx, bool &IsConst, + bool IsCheckingForOverflow) { // Fast-path evaluations of integer literals, since we sometimes see files // containing vast quantities of these. if (const IntegerLiteral *L = dyn_cast(Exp)) { @@ -9957,7 +9962,7 @@ static bool FastEvaluateAsRValue(const E // performance problems. Only do so in C++11 for now. if (Exp->isRValue() && (Exp->getType()->isArrayType() || Exp->getType()->isRecordType()) && - !Ctx.getLangOpts().CPlusPlus11) { + !Ctx.getLangOpts().CPlusPlus11 && !IsCheckingForOverflow) { IsConst = false; return true; } @@ -9972,7 +9977,7 @@ static bool FastEvaluateAsRValue(const E /// will be applied to the result. bool Expr::EvaluateAsRValue(EvalResult &Result, const ASTContext &Ctx) const { bool IsConst; - if (FastEvaluateAsRValue(this, Result, Ctx, IsConst)) + if (FastEvaluateAsRValue(this, Result, Ctx, IsConst, false)) return IsConst; EvalInfo Info(Ctx, Result, EvalInfo::EM_IgnoreSideEffects); @@ -10097,7 +10102,7 @@ APSInt Expr::EvaluateKnownConstInt(const void Expr::EvaluateForOverflow(const ASTContext &Ctx) const { bool IsConst; EvalResult EvalResult; - if (!FastEvaluateAsRValue(this, EvalResult, Ctx, IsConst)) { + if (!FastEvaluateAsRValue(this, EvalResult, Ctx, IsConst, true)) { EvalInfo Info(Ctx, EvalResult, EvalInfo::EM_EvaluateForOverflow); (void)::EvaluateAsRValue(Info, this, EvalResult.Val); } Modified: cfe/trunk/lib/Sema/SemaChecking.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaChecking.cpp?rev=305287&r1=305286&r2=305287&view=diff == --- cfe/trunk/lib/Sema/SemaChecking.cpp (original) +++ cfe/trunk/lib/Sema/Sema
Re: r305239 - Revert r301742 which made ExprConstant checking apply to all full-exprs.
Hi, I reverted r305287, since the bots were red for a very long time. More bots with the same error: http://lab.llvm.org:8011/builders/clang-cmake-armv7-a15-full/builds/7727 http://lab.llvm.org:8011/builders/clang-x86-windows-msvc2015/builds/5503 http://lab.llvm.org:8011/builders/clang-hexagon-elf/builds/9097 Cheers, Diana On 13 June 2017 at 07:12, NAKAMURA Takumi via cfe-commits wrote: > It triggered a test failure for targeting i686 (seems also for arm) > See also; http://bb.pgr.jp/builders/test-clang-i686-linux-RA/builds/3566 > > On Tue, Jun 13, 2017 at 6:59 AM Nick Lewycky via cfe-commits > wrote: >> >> Author: nicholas >> Date: Mon Jun 12 16:59:18 2017 >> New Revision: 305239 >> >> URL: http://llvm.org/viewvc/llvm-project?rev=305239&view=rev >> Log: >> Revert r301742 which made ExprConstant checking apply to all full-exprs. >> >> This patch also exposed pre-existing bugs in clang, see PR32864 and >> PR33140#c3 . >> >> Modified: >> cfe/trunk/include/clang/Sema/Sema.h >> cfe/trunk/lib/AST/ExprConstant.cpp >> cfe/trunk/lib/Sema/SemaChecking.cpp >> >> cfe/trunk/test/OpenMP/distribute_parallel_for_simd_aligned_messages.cpp >> cfe/trunk/test/OpenMP/distribute_simd_aligned_messages.cpp >> cfe/trunk/test/OpenMP/for_simd_aligned_messages.cpp >> cfe/trunk/test/OpenMP/parallel_for_simd_aligned_messages.cpp >> cfe/trunk/test/OpenMP/simd_aligned_messages.cpp >> cfe/trunk/test/OpenMP/target_parallel_for_simd_aligned_messages.cpp >> cfe/trunk/test/OpenMP/target_simd_aligned_messages.cpp >> >> cfe/trunk/test/OpenMP/target_teams_distribute_parallel_for_simd_aligned_messages.cpp >> >> cfe/trunk/test/OpenMP/target_teams_distribute_simd_aligned_messages.cpp >> cfe/trunk/test/OpenMP/taskloop_simd_aligned_messages.cpp >> >> cfe/trunk/test/OpenMP/teams_distribute_parallel_for_simd_aligned_messages.cpp >> cfe/trunk/test/OpenMP/teams_distribute_simd_aligned_messages.cpp >> cfe/trunk/test/Sema/integer-overflow.c >> >> Modified: cfe/trunk/include/clang/Sema/Sema.h >> URL: >> http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Sema/Sema.h?rev=305239&r1=305238&r2=305239&view=diff >> >> == >> --- cfe/trunk/include/clang/Sema/Sema.h (original) >> +++ cfe/trunk/include/clang/Sema/Sema.h Mon Jun 12 16:59:18 2017 >> @@ -10273,6 +10273,7 @@ private: >>void CheckFloatComparison(SourceLocation Loc, Expr* LHS, Expr* RHS); >>void CheckImplicitConversions(Expr *E, SourceLocation CC = >> SourceLocation()); >>void CheckBoolLikeConversion(Expr *E, SourceLocation CC); >> + void CheckForIntOverflow(Expr *E); >>void CheckUnsequencedOperations(Expr *E); >> >>/// \brief Perform semantic checks on a completed expression. This will >> either >> >> Modified: cfe/trunk/lib/AST/ExprConstant.cpp >> URL: >> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/ExprConstant.cpp?rev=305239&r1=305238&r2=305239&view=diff >> >> == >> --- cfe/trunk/lib/AST/ExprConstant.cpp (original) >> +++ cfe/trunk/lib/AST/ExprConstant.cpp Mon Jun 12 16:59:18 2017 >> @@ -6226,10 +6226,6 @@ bool RecordExprEvaluator::VisitInitListE >> // the initializer list. >> ImplicitValueInitExpr VIE(HaveInit ? Info.Ctx.IntTy : >> Field->getType()); >> const Expr *Init = HaveInit ? E->getInit(ElementNo++) : &VIE; >> -if (Init->isValueDependent()) { >> - Success = false; >> - continue; >> -} >> >> // Temporarily override This, in case there's a CXXDefaultInitExpr in >> here. >> ThisOverrideRAII ThisOverride(*Info.CurrentCall, &This, >> @@ -9940,8 +9936,7 @@ static bool EvaluateAsRValue(EvalInfo &I >> } >> >> static bool FastEvaluateAsRValue(const Expr *Exp, Expr::EvalResult >> &Result, >> - const ASTContext &Ctx, bool &IsConst, >> - bool IsCheckingForOverflow) { >> + const ASTContext &Ctx, bool &IsConst) { >>// Fast-path evaluations of integer literals, since we sometimes see >> files >>// containing vast quantities of these. >>if (const IntegerLiteral *L = dyn_cast(Exp)) { >> @@ -9962,7 +9957,7 @@ static bool FastEvaluateAsRValue(const E >>// performance problems. Only do so in C++11 for now. >>if (Exp->isRValue() && (Exp->getType()->isArrayType() || >>Exp->getType()->isRecordType()) && >> - !Ctx.getLangOpts().CPlusPlus11 && !IsCheckingForOverflow) { >> + !Ctx.getLangOpts().CPlusPlus11) { >> IsConst = false; >> return true; >>} >> @@ -9977,7 +9972,7 @@ static bool FastEvaluateAsRValue(const E >> /// will be applied to the result. >> bool Expr::EvaluateAsRValue(EvalResult &Result, const ASTContext &Ctx) >> const { >>bool IsConst; >> - if (FastEvaluateAsRValue(this, Result, Ctx, IsConst, false)) >> + if (FastEvaluateAsRValue(this, Result, Ctx, Is
Re: [clang-tools-extra] r312134 - [clang-tidy] Improve hicpp-exception-baseclass to handle generic code better
Hi Jonas, I haven't seen any commit from you (*) fixing the buildbot failures caused by your previous commit (r312122). This has been keeping several bots red for quite a while: http://lab.llvm.org:8011/builders/clang-cmake-armv7-a15/builds/10590 http://lab.llvm.org:8011/builders/clang-x86-windows-msvc2015/builds/6845 etc etc It's customary to keep an eye on the buildbots and either revert or fix such problems as soon as possible. It's particularly inappropriate to commit something else on top before dealing with the bot failures. For the record, Alex has been trying to help you on IRC in #llvm: "alexlorenz: jonas_toth: btw, char is not signed by default (it's platform-specific), so you should use 'signed char' in your clang-tidy test to fix the bot failures" Please be more careful with the buildbots in the future. Thanks, Diana (*) My apologies if I missed it, but I really don't see anything in cfe-commits nor in the situation of the bots to reflect that. On 30 August 2017 at 17:59, Jonas Toth via cfe-commits wrote: > Author: jonastoth > Date: Wed Aug 30 08:59:01 2017 > New Revision: 312134 > > URL: http://llvm.org/viewvc/llvm-project?rev=312134&view=rev > Log: > [clang-tidy] Improve hicpp-exception-baseclass to handle generic code better > > Summary: > This patch is a followup to the first revision D36583, that had problems with > generic code and its diagnostic messages, which were found by @lebedev.ri > > Reviewers: alexfh, aaron.ballman, lebedev.ri, hokein > > Reviewed By: aaron.ballman, lebedev.ri > > Subscribers: klimek, sbenza, cfe-commits, JDevlieghere, lebedev.ri, xazax.hun > > Differential Revision: https://reviews.llvm.org/D37060 > > Modified: > clang-tools-extra/trunk/clang-tidy/hicpp/ExceptionBaseclassCheck.cpp > clang-tools-extra/trunk/test/clang-tidy/hicpp-exception-baseclass.cpp > > Modified: clang-tools-extra/trunk/clang-tidy/hicpp/ExceptionBaseclassCheck.cpp > URL: > http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/hicpp/ExceptionBaseclassCheck.cpp?rev=312134&r1=312133&r2=312134&view=diff > == > --- clang-tools-extra/trunk/clang-tidy/hicpp/ExceptionBaseclassCheck.cpp > (original) > +++ clang-tools-extra/trunk/clang-tidy/hicpp/ExceptionBaseclassCheck.cpp Wed > Aug 30 08:59:01 2017 > @@ -11,8 +11,6 @@ > #include "clang/AST/ASTContext.h" > #include "clang/ASTMatchers/ASTMatchFinder.h" > > -#include > - > using namespace clang::ast_matchers; > > namespace clang { > @@ -24,20 +22,23 @@ void ExceptionBaseclassCheck::registerMa > return; > >Finder->addMatcher( > - cxxThrowExpr( > - allOf( > - has(expr(unless(hasType(cxxRecordDecl( > - isSameOrDerivedFrom(hasName("std::exception"))), > - eachOf(has(expr(hasType(namedDecl().bind("decl", > anything( > + cxxThrowExpr(allOf(has(expr(unless(hasType(qualType(hasCanonicalType( > + > hasDeclaration(cxxRecordDecl(isSameOrDerivedFrom( > + hasName("std::exception")), > + has(expr(unless(cxxUnresolvedConstructExpr(, > + eachOf(has(expr(hasType(namedDecl().bind("decl", > +anything( >.bind("bad_throw"), >this); > } > > void ExceptionBaseclassCheck::check(const MatchFinder::MatchResult &Result) { >const auto *BadThrow = Result.Nodes.getNodeAs("bad_throw"); > - diag(BadThrow->getLocStart(), > - "throwing an exception whose type is not derived from > 'std::exception'") > - << BadThrow->getSourceRange(); > + > + diag(BadThrow->getSubExpr()->getLocStart(), "throwing an exception whose " > + "type %0 is not derived from " > + "'std::exception'") > + << BadThrow->getSubExpr()->getType() << BadThrow->getSourceRange(); > >const auto *TypeDecl = Result.Nodes.getNodeAs("decl"); >if (TypeDecl != nullptr) > > Modified: > clang-tools-extra/trunk/test/clang-tidy/hicpp-exception-baseclass.cpp > URL: > http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/clang-tidy/hicpp-exception-baseclass.cpp?rev=312134&r1=312133&r2=312134&view=diff > == > --- clang-tools-extra/trunk/test/clang-tidy/hicpp-exception-baseclass.cpp > (original) > +++ clang-tools-extra/trunk/test/clang-tidy/hicpp-exception-baseclass.cpp Wed > Aug 30 08:59:01 2017 > @@ -5,38 +5,175 @@ class exception {}; > } // namespace std > > class derived_exception : public std::exception {}; > +class deep_hierarchy : public derived_exception {}; > class non_derived_exception {}; > +class terrible_idea : public non_derived_exception, public derived_exception > {}; > + > +// FIXME: More complicated kinds of inheritance should be ch
Re: [clang-tools-extra] r312134 - [clang-tidy] Improve hicpp-exception-baseclass to handle generic code better
Hi Jonas, Usually the buildbots send emails when you're in the commit range. I'm surprised that you haven't received anything. Are you sure you don't have some mail filters that are catching them and sending them somewhere unexpected? In any case, you can see a live-but-slow buildbot status here: http://lab.llvm.org:8011/console I usually keep an eye on that when I commit something. We also have the #llvm and #llvm-build channels where the buildbots post reports of failed builds and who is in the commit range, so you should see those unless you're specifically ignoring the llvmbb-llvm-build, bb9-chapuni, bb-pgr and green-dragon-bot users. Hope that helps, Diana On 30 August 2017 at 18:16, Jonas Toth wrote: > Hello Diana, > > you are right, i did not commit anything earlier, I am really new to the > process, these were my first commits. > > I am sorry that i broke the bots, i thought i would get an automatic mail, > when they find a problem and i was in the commit range. Is there anything > automated to find out such issues? I feel a little overwhelmed with this big > amount of builders. > > Sorry again, I will look into it. > > Regard, Jonas > > > > Am 30.08.2017 um 18:12 schrieb Diana Picus: >> >> Hi Jonas, >> >> I haven't seen any commit from you (*) fixing the buildbot failures >> caused by your previous commit (r312122). This has been keeping >> several bots red for quite a while: >> http://lab.llvm.org:8011/builders/clang-cmake-armv7-a15/builds/10590 >> http://lab.llvm.org:8011/builders/clang-x86-windows-msvc2015/builds/6845 >> etc etc >> >> It's customary to keep an eye on the buildbots and either revert or >> fix such problems as soon as possible. It's particularly inappropriate >> to commit something else on top before dealing with the bot failures. >> >> For the record, Alex has been trying to help you on IRC in #llvm: >> "alexlorenz: jonas_toth: btw, char is not signed by default (it's >> platform-specific), so you should use 'signed char' in your clang-tidy >> test to fix the bot failures" >> >> Please be more careful with the buildbots in the future. >> >> Thanks, >> Diana >> >> (*) My apologies if I missed it, but I really don't see anything in >> cfe-commits nor in the situation of the bots to reflect that. >> >> On 30 August 2017 at 17:59, Jonas Toth via cfe-commits >> wrote: >>> >>> Author: jonastoth >>> Date: Wed Aug 30 08:59:01 2017 >>> New Revision: 312134 >>> >>> URL: http://llvm.org/viewvc/llvm-project?rev=312134&view=rev >>> Log: >>> [clang-tidy] Improve hicpp-exception-baseclass to handle generic code >>> better >>> >>> Summary: >>> This patch is a followup to the first revision D36583, that had problems >>> with >>> generic code and its diagnostic messages, which were found by @lebedev.ri >>> >>> Reviewers: alexfh, aaron.ballman, lebedev.ri, hokein >>> >>> Reviewed By: aaron.ballman, lebedev.ri >>> >>> Subscribers: klimek, sbenza, cfe-commits, JDevlieghere, lebedev.ri, >>> xazax.hun >>> >>> Differential Revision: https://reviews.llvm.org/D37060 >>> >>> Modified: >>> clang-tools-extra/trunk/clang-tidy/hicpp/ExceptionBaseclassCheck.cpp >>> >>> clang-tools-extra/trunk/test/clang-tidy/hicpp-exception-baseclass.cpp >>> >>> Modified: >>> clang-tools-extra/trunk/clang-tidy/hicpp/ExceptionBaseclassCheck.cpp >>> URL: >>> http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/hicpp/ExceptionBaseclassCheck.cpp?rev=312134&r1=312133&r2=312134&view=diff >>> >>> == >>> --- clang-tools-extra/trunk/clang-tidy/hicpp/ExceptionBaseclassCheck.cpp >>> (original) >>> +++ clang-tools-extra/trunk/clang-tidy/hicpp/ExceptionBaseclassCheck.cpp >>> Wed Aug 30 08:59:01 2017 >>> @@ -11,8 +11,6 @@ >>> #include "clang/AST/ASTContext.h" >>> #include "clang/ASTMatchers/ASTMatchFinder.h" >>> >>> -#include >>> - >>> using namespace clang::ast_matchers; >>> >>> namespace clang { >>> @@ -24,20 +22,23 @@ void ExceptionBaseclassCheck::registerMa >>> return; >>> >>> Finder->addMatcher( >>> - cxxThrowExpr( >>> - allOf( >>> - has(expr(unless(hasType(cxxRecordDecl( >>> - isSameOrDerivedFrom(hasName("std::exception"))), >>> - eachOf(has(expr(hasType(namedDecl().bind("decl", >>> anything( >>> + >>> cxxThrowExpr(allOf(has(expr(unless(hasType(qualType(hasCanonicalType( >>> + >>> hasDeclaration(cxxRecordDecl(isSameOrDerivedFrom( >>> + hasName("std::exception")), >>> + >>> has(expr(unless(cxxUnresolvedConstructExpr(, >>> + >>> eachOf(has(expr(hasType(namedDecl().bind("decl", >>> +anything( >>> .bind("bad_throw"), >>> this); >>> } >>> >>> void ExceptionBaseclassCheck::check(const MatchFinder::MatchResult >>> &Result) { >>> const auto *BadThrow = >>> Result.Nodes.getNodeAs("bad_throw"); >>> - diag(BadThrow->getLocStart(), >>> - "
Re: [clang-tools-extra] r312134 - [clang-tidy] Improve hicpp-exception-baseclass to handle generic code better
On 30 August 2017 at 18:29, Jonas Toth wrote: > Hi Diana, > > i will investigate this issue. Can i see from somewhere, what email my > buildbot uses? I actually don't know if you can check anywhere, but in principle it should be the same address that the commit email came from (i.e. this one, that we're using to talk). > To fix the break I created a new Patch https://reviews.llvm.org/D37301 > > What is the right thing now, wait for review or just commit it and that > review would occur on the commit? Aaron explained this up-thread much more clearly than I would, thanks Aaron! :) > Thank you for your help and patience. > > > Regard Jonas > > > > Am 30.08.2017 um 18:25 schrieb Diana Picus: >> >> Hi Jonas, >> >> Usually the buildbots send emails when you're in the commit range. I'm >> surprised that you haven't received anything. Are you sure you don't >> have some mail filters that are catching them and sending them >> somewhere unexpected? >> >> In any case, you can see a live-but-slow buildbot status here: >> http://lab.llvm.org:8011/console >> I usually keep an eye on that when I commit something. >> >> We also have the #llvm and #llvm-build channels where the buildbots >> post reports of failed builds and who is in the commit range, so you >> should see those unless you're specifically ignoring the >> llvmbb-llvm-build, bb9-chapuni, bb-pgr and green-dragon-bot users. >> >> Hope that helps, >> Diana >> >> On 30 August 2017 at 18:16, Jonas Toth wrote: >>> >>> Hello Diana, >>> >>> you are right, i did not commit anything earlier, I am really new to the >>> process, these were my first commits. >>> >>> I am sorry that i broke the bots, i thought i would get an automatic >>> mail, >>> when they find a problem and i was in the commit range. Is there anything >>> automated to find out such issues? I feel a little overwhelmed with this >>> big >>> amount of builders. >>> >>> Sorry again, I will look into it. >>> >>> Regard, Jonas >>> >>> >>> >>> Am 30.08.2017 um 18:12 schrieb Diana Picus: Hi Jonas, I haven't seen any commit from you (*) fixing the buildbot failures caused by your previous commit (r312122). This has been keeping several bots red for quite a while: http://lab.llvm.org:8011/builders/clang-cmake-armv7-a15/builds/10590 http://lab.llvm.org:8011/builders/clang-x86-windows-msvc2015/builds/6845 etc etc It's customary to keep an eye on the buildbots and either revert or fix such problems as soon as possible. It's particularly inappropriate to commit something else on top before dealing with the bot failures. For the record, Alex has been trying to help you on IRC in #llvm: "alexlorenz: jonas_toth: btw, char is not signed by default (it's platform-specific), so you should use 'signed char' in your clang-tidy test to fix the bot failures" Please be more careful with the buildbots in the future. Thanks, Diana (*) My apologies if I missed it, but I really don't see anything in cfe-commits nor in the situation of the bots to reflect that. On 30 August 2017 at 17:59, Jonas Toth via cfe-commits wrote: > > Author: jonastoth > Date: Wed Aug 30 08:59:01 2017 > New Revision: 312134 > > URL: http://llvm.org/viewvc/llvm-project?rev=312134&view=rev > Log: > [clang-tidy] Improve hicpp-exception-baseclass to handle generic code > better > > Summary: > This patch is a followup to the first revision D36583, that had > problems > with > generic code and its diagnostic messages, which were found by > @lebedev.ri > > Reviewers: alexfh, aaron.ballman, lebedev.ri, hokein > > Reviewed By: aaron.ballman, lebedev.ri > > Subscribers: klimek, sbenza, cfe-commits, JDevlieghere, lebedev.ri, > xazax.hun > > Differential Revision: https://reviews.llvm.org/D37060 > > Modified: > > clang-tools-extra/trunk/clang-tidy/hicpp/ExceptionBaseclassCheck.cpp > > clang-tools-extra/trunk/test/clang-tidy/hicpp-exception-baseclass.cpp > > Modified: > clang-tools-extra/trunk/clang-tidy/hicpp/ExceptionBaseclassCheck.cpp > URL: > > http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/hicpp/ExceptionBaseclassCheck.cpp?rev=312134&r1=312133&r2=312134&view=diff > > > == > --- > clang-tools-extra/trunk/clang-tidy/hicpp/ExceptionBaseclassCheck.cpp > (original) > +++ > clang-tools-extra/trunk/clang-tidy/hicpp/ExceptionBaseclassCheck.cpp > Wed Aug 30 08:59:01 2017 > @@ -11,8 +11,6 @@ >#include "clang/AST/ASTContext.h" >#include "clang/ASTMatchers/ASTMatchFinder.h" > > -#include > - >using namespace clang::ast_matchers; > >namespace clang { > @@ -24,20 +22,23 @@ void ExceptionBaseclass
Re: [clang-tools-extra] r349496 - [clangd] BackgroundIndex rebuilds symbol index periodically.
Hi Eric, This is still failing intermittently on AArch64 in spite of your and Ilya's timeout increases. Could you please revert and rework this test? Thanks, Diana http://lab.llvm.org:8011/builders/clang-cmake-aarch64-lld/builds/5872 http://lab.llvm.org:8011/builders/clang-cmake-aarch64-lld/builds/5878 http://lab.llvm.org:8011/builders/clang-cmake-aarch64-lld/builds/5879 On Tue, 18 Dec 2018 at 16:42, Eric Liu via cfe-commits wrote: > > Author: ioeric > Date: Tue Dec 18 07:39:33 2018 > New Revision: 349496 > > URL: http://llvm.org/viewvc/llvm-project?rev=349496&view=rev > Log: > [clangd] BackgroundIndex rebuilds symbol index periodically. > > Summary: > Currently, background index rebuilds symbol index on every indexed file, > which can be inefficient. This patch makes it only rebuild symbol index > periodically. > As the rebuild no longer happens too often, we could also build more efficient > dex index. > > Reviewers: ilya-biryukov, kadircet > > Reviewed By: kadircet > > Subscribers: dblaikie, MaskRay, jkorous, arphaman, jfb, cfe-commits > > Differential Revision: https://reviews.llvm.org/D55770 > > Modified: > clang-tools-extra/trunk/clangd/ClangdServer.cpp > clang-tools-extra/trunk/clangd/ClangdServer.h > clang-tools-extra/trunk/clangd/index/Background.cpp > clang-tools-extra/trunk/clangd/index/Background.h > clang-tools-extra/trunk/clangd/tool/ClangdMain.cpp > clang-tools-extra/trunk/test/clangd/background-index.test > clang-tools-extra/trunk/unittests/clangd/BackgroundIndexTests.cpp > > Modified: clang-tools-extra/trunk/clangd/ClangdServer.cpp > URL: > http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clangd/ClangdServer.cpp?rev=349496&r1=349495&r2=349496&view=diff > == > --- clang-tools-extra/trunk/clangd/ClangdServer.cpp (original) > +++ clang-tools-extra/trunk/clangd/ClangdServer.cpp Tue Dec 18 07:39:33 2018 > @@ -139,7 +139,8 @@ ClangdServer::ClangdServer(const GlobalC >if (Opts.BackgroundIndex) { > BackgroundIdx = llvm::make_unique( > Context::current().clone(), ResourceDir, FSProvider, CDB, > -BackgroundIndexStorage::createDiskBackedStorageFactory()); > +BackgroundIndexStorage::createDiskBackedStorageFactory(), > +Opts.BackgroundIndexRebuildPeriodMs); > AddIndex(BackgroundIdx.get()); >} >if (DynamicIdx) > > Modified: clang-tools-extra/trunk/clangd/ClangdServer.h > URL: > http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clangd/ClangdServer.h?rev=349496&r1=349495&r2=349496&view=diff > == > --- clang-tools-extra/trunk/clangd/ClangdServer.h (original) > +++ clang-tools-extra/trunk/clangd/ClangdServer.h Tue Dec 18 07:39:33 2018 > @@ -85,6 +85,10 @@ public: > /// If true, ClangdServer automatically indexes files in the current > project > /// on background threads. The index is stored in the project root. > bool BackgroundIndex = false; > +/// If set to non-zero, the background index rebuilds the symbol index > +/// periodically every BuildIndexPeriodMs milliseconds; otherwise, the > +/// symbol index will be updated for each indexed file. > +size_t BackgroundIndexRebuildPeriodMs = 0; > > /// If set, use this index to augment code completion results. > SymbolIndex *StaticIndex = nullptr; > > Modified: clang-tools-extra/trunk/clangd/index/Background.cpp > URL: > http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clangd/index/Background.cpp?rev=349496&r1=349495&r2=349496&view=diff > == > --- clang-tools-extra/trunk/clangd/index/Background.cpp (original) > +++ clang-tools-extra/trunk/clangd/index/Background.cpp Tue Dec 18 07:39:33 > 2018 > @@ -27,11 +27,13 @@ > #include "llvm/ADT/StringRef.h" > #include "llvm/Support/SHA1.h" > > +#include > #include > #include > #include > #include > #include > +#include > > using namespace llvm; > namespace clang { > @@ -125,10 +127,13 @@ createFileFilter(const llvm::StringMap BackgroundIndex::BackgroundIndex( > Context BackgroundContext, StringRef ResourceDir, > const FileSystemProvider &FSProvider, const GlobalCompilationDatabase > &CDB, > -BackgroundIndexStorage::Factory IndexStorageFactory, size_t > ThreadPoolSize) > +BackgroundIndexStorage::Factory IndexStorageFactory, > +size_t BuildIndexPeriodMs, size_t ThreadPoolSize) > : SwapIndex(make_unique()), ResourceDir(ResourceDir), >FSProvider(FSProvider), CDB(CDB), >BackgroundContext(std::move(BackgroundContext)), > + BuildIndexPeriodMs(BuildIndexPeriodMs), > + SymbolsUpdatedSinceLastIndex(false), >IndexStorageFactory(std::move(IndexStorageFactory)), >CommandsChanged( >CDB.watch([&](const std::vector &ChangedFiles) { > @@ -138,6 +143,11
Re: [clang-tools-extra] r349496 - [clangd] BackgroundIndex rebuilds symbol index periodically.
Thanks, Ilya! On Mon, 7 Jan 2019 at 12:22, Ilya Biryukov wrote: > > Temporarily disabled the test in r350512. > > On Mon, Jan 7, 2019 at 10:54 AM Diana Picus wrote: >> >> Hi Eric, >> >> This is still failing intermittently on AArch64 in spite of your and >> Ilya's timeout increases. Could you please revert and rework this >> test? >> >> Thanks, >> Diana >> >> http://lab.llvm.org:8011/builders/clang-cmake-aarch64-lld/builds/5872 >> http://lab.llvm.org:8011/builders/clang-cmake-aarch64-lld/builds/5878 >> http://lab.llvm.org:8011/builders/clang-cmake-aarch64-lld/builds/5879 >> >> On Tue, 18 Dec 2018 at 16:42, Eric Liu via cfe-commits >> wrote: >> > >> > Author: ioeric >> > Date: Tue Dec 18 07:39:33 2018 >> > New Revision: 349496 >> > >> > URL: http://llvm.org/viewvc/llvm-project?rev=349496&view=rev >> > Log: >> > [clangd] BackgroundIndex rebuilds symbol index periodically. >> > >> > Summary: >> > Currently, background index rebuilds symbol index on every indexed file, >> > which can be inefficient. This patch makes it only rebuild symbol index >> > periodically. >> > As the rebuild no longer happens too often, we could also build more >> > efficient >> > dex index. >> > >> > Reviewers: ilya-biryukov, kadircet >> > >> > Reviewed By: kadircet >> > >> > Subscribers: dblaikie, MaskRay, jkorous, arphaman, jfb, cfe-commits >> > >> > Differential Revision: https://reviews.llvm.org/D55770 >> > >> > Modified: >> > clang-tools-extra/trunk/clangd/ClangdServer.cpp >> > clang-tools-extra/trunk/clangd/ClangdServer.h >> > clang-tools-extra/trunk/clangd/index/Background.cpp >> > clang-tools-extra/trunk/clangd/index/Background.h >> > clang-tools-extra/trunk/clangd/tool/ClangdMain.cpp >> > clang-tools-extra/trunk/test/clangd/background-index.test >> > clang-tools-extra/trunk/unittests/clangd/BackgroundIndexTests.cpp >> > >> > Modified: clang-tools-extra/trunk/clangd/ClangdServer.cpp >> > URL: >> > http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clangd/ClangdServer.cpp?rev=349496&r1=349495&r2=349496&view=diff >> > == >> > --- clang-tools-extra/trunk/clangd/ClangdServer.cpp (original) >> > +++ clang-tools-extra/trunk/clangd/ClangdServer.cpp Tue Dec 18 07:39:33 >> > 2018 >> > @@ -139,7 +139,8 @@ ClangdServer::ClangdServer(const GlobalC >> >if (Opts.BackgroundIndex) { >> > BackgroundIdx = llvm::make_unique( >> > Context::current().clone(), ResourceDir, FSProvider, CDB, >> > -BackgroundIndexStorage::createDiskBackedStorageFactory()); >> > +BackgroundIndexStorage::createDiskBackedStorageFactory(), >> > +Opts.BackgroundIndexRebuildPeriodMs); >> > AddIndex(BackgroundIdx.get()); >> >} >> >if (DynamicIdx) >> > >> > Modified: clang-tools-extra/trunk/clangd/ClangdServer.h >> > URL: >> > http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clangd/ClangdServer.h?rev=349496&r1=349495&r2=349496&view=diff >> > == >> > --- clang-tools-extra/trunk/clangd/ClangdServer.h (original) >> > +++ clang-tools-extra/trunk/clangd/ClangdServer.h Tue Dec 18 07:39:33 2018 >> > @@ -85,6 +85,10 @@ public: >> > /// If true, ClangdServer automatically indexes files in the current >> > project >> > /// on background threads. The index is stored in the project root. >> > bool BackgroundIndex = false; >> > +/// If set to non-zero, the background index rebuilds the symbol index >> > +/// periodically every BuildIndexPeriodMs milliseconds; otherwise, the >> > +/// symbol index will be updated for each indexed file. >> > +size_t BackgroundIndexRebuildPeriodMs = 0; >> > >> > /// If set, use this index to augment code completion results. >> > SymbolIndex *StaticIndex = nullptr; >> > >> > Modified: clang-tools-extra/trunk/clangd/index/Background.cpp >> > URL: >> > http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clangd/index/Background.cpp?rev=349496&r1=349495&r2=349496&view=diff >> > == >> > --- clang-tools-extra/trunk/clangd/index/Background.cpp (original) >> > +++ clang-tools-extra/trunk/clangd/index/Background.cpp Tue Dec 18 >> > 07:39:33 2018 >> > @@ -27,11 +27,13 @@ >> > #include "llvm/ADT/StringRef.h" >> > #include "llvm/Support/SHA1.h" >> > >> > +#include >> > #include >> > #include >> > #include >> > #include >> > #include >> > +#include >> > >> > using namespace llvm; >> > namespace clang { >> > @@ -125,10 +127,13 @@ createFileFilter(const llvm::StringMap> > BackgroundIndex::BackgroundIndex( >> > Context BackgroundContext, StringRef ResourceDir, >> > const FileSystemProvider &FSProvider, const GlobalCompilationDatabase >> > &CDB, >> > -BackgroundIndexStorage::Factory IndexStorageFactory, size_t >> > ThreadPoolSize) >> > +BackgroundIndexSto
Re: [llvm-dev] Attention bot owners
Hi Galina, Thanks for the heads up. On Fri, 11 Oct 2019 at 21:09, Galina Kistanova via llvm-dev wrote: > > Hello all bots owners, > > As all of you know we move to github monorepo very soon now. > We are actively working on the buildbot to prepare a solution to switch from > SVN to github when time comes. > > It would require some activity on your bots. > > At this point it is clear that you would need to > > * Make sure you have reasonably recent version of git installed and in the > system path for the buildbot account, What qualifies as reasonably recent? Does git 2.7.4 suffice? Thanks, Diana > * Once the transition to github is done, you would need to remove the old > source code and build directory. This could be done later assuming you have > enough room on that hard drive for two sets of the source and build files. > > Thanks > > Galina > ___ > LLVM Developers mailing list > llvm-...@lists.llvm.org > https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
Re: [PATCH] D53137: Scalable vector core instruction support + size queries
Hi Graham, It seems you forgot to push the last round of fixes. Just saying :) Cheers, Diana On Tue, 8 Oct 2019 at 16:01, Graham Hunter via Phabricator wrote: > > huntergr added a comment. > > Hmm, forgot to add the last round of minor fixes before committing. Sorry > about that, will push them as well. > > > Repository: > rG LLVM Github Monorepo > > CHANGES SINCE LAST ACTION > https://reviews.llvm.org/D53137/new/ > > https://reviews.llvm.org/D53137 > > > ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
Re: Zorg migration to GitHub/monorepo
Hi Galina, It seems that our libcxx bots are now triggering builds for any changes to llvm: http://lab.llvm.org:8011/builders/libcxx-libcxxabi-libunwind-aarch64-linux/builds/2434 Should I file a bug report for this? Thanks, Diana On Sat, 19 Oct 2019 at 11:36, Galina Kistanova via cfe-commits wrote: > > Hello everyone, > > The staging master is ready to accept bots from the list I have sent > yesterday. Don't wait too long. > > The master has been updated and works with both SVN and Github monorepo now. > > The following builders are already listening for changes in monorepo and > building monorepo. More are coming. > > * clang-sphinx-docs > * clang-tools-sphinx-docs > * clang-x86_64-linux-abi-test > * clang-lld-x86_64-2stage > * libcxx-libcxxabi-singlethreaded-x86_64-linux-debian > * libcxx-sphinx-docs > * libunwind-sphinx-docs > * lld-sphinx-docs > * lld-x86_64-darwin13 > * lld-x86_64-ubuntu-fast > * lldb-sphinx-docs > * llvm-clang-lld-x86_64-scei-ps4-ubuntu-fast > * llvm-clang-x86_64-win-fast <<-- ? > * llvm-sphinx-docs > * clang-x86_64-debian-fast > * libcxx-libcxxabi-libunwind-x86_64-linux-debian > * libcxx-libcxxabi-singlethreaded-x86_64-linux-debian > * libcxx-libcxxabi-x86_64-linux-debian > * libcxx-libcxxabi-x86_64-linux-debian-noexceptions > > A friendly reminder. If your bots are using one of these build factories, you > would need either update your build configurations to use one of the > currently supported build factories, or port that factory to work with github > and monorepo. > > * LLVMBuilder (3 bots) > * PollyBuilder (3 bots) > * LLDBBuilder (6 bots) > * SanitizerBuilder (10 bots) > * CUDATestsuiteBuilder (1 bot) - depends on ClangBuilder.getClangBuildFactory > * AOSPBuilder (1 bot) - depends on PollyBuilder > * AnnotatedBuilder (2 bots) > * OpenMPBuilder (2 bots) > * FuchsiaBuilder (1 bot) > > Thanks > > Galina > > > On Fri, Oct 18, 2019 at 12:05 AM Galina Kistanova > wrote: >> >> Hello build bot owners! >> >> The staging master is ready. Please feel free to use it to make sure your >> bots would work well with the monorepo and github. >> >> The following builders could be configured to build monorepo: >> >> * clang-atom-d525-fedora-rel >> * clang-native-arm-lnt-perf >> * clang-cmake-armv7-lnt >> * clang-cmake-armv7-selfhost-neon >> * clang-cmake-armv7-quick >> * clang-cmake-armv7-global-isel >> * clang-cmake-armv7-selfhost >> * clang-cmake-aarch64-quick >> * clang-cmake-aarch64-lld >> * clang-cmake-aarch64-global-isel >> * clang-ppc64be-linux-lnt >> * clang-ppc64be-linux-multistage >> * clang-ppc64le-linux-lnt >> * clang-ppc64le-linux-multistage >> * clang-ppc64be-linux >> * clang-ppc64le-linux >> * clang-s390x-linux >> * clang-s390x-linux-multistage >> * clang-s390x-linux-lnt >> * clang-hexagon-elf >> * clang-cmake-x86_64-avx2-linux >> * clang-cmake-x86_64-avx2-linux-perf >> * clang-cmake-x86_64-sde-avx512-linux >> * clang-solaris11-amd64 >> * clang-x64-ninja-win7 >> * clang-solaris11-sparcv9 >> * clang-cmake-armv7-full >> * clang-cmake-thumbv7-full-sh >> * clang-cmake-armv8-lld >> * clang-cmake-aarch64-full >> * clang-armv7-linux-build-cache >> * clang-aarch64-linux-build-cache >> * libcxx-libcxxabi-x86_64-linux-debian >> * libcxx-libcxxabi-x86_64-linux-debian-noexceptions >> * libcxx-libcxxabi-libunwind-x86_64-linux-debian >> * libcxx-libcxxabi-singlethreaded-x86_64-linux-debian >> * libcxx-libcxxabi-x86_64-linux-ubuntu-cxx03 >> * libcxx-libcxxabi-x86_64-linux-ubuntu-cxx11 >> * libcxx-libcxxabi-x86_64-linux-ubuntu-cxx14 >> * libcxx-libcxxabi-x86_64-linux-ubuntu-cxx17 >> * libcxx-libcxxabi-x86_64-linux-ubuntu-cxx2a >> * libcxx-libcxxabi-x86_64-linux-ubuntu-32bit >> * libcxx-libcxxabi-x86_64-linux-ubuntu-asan >> * libcxx-libcxxabi-x86_64-linux-ubuntu-ubsan >> * libcxx-libcxxabi-x86_64-linux-ubuntu-msan >> * libcxx-libcxxabi-libunwind-x86_64-linux-ubuntu >> * libcxx-libcxxabi-x86_64-linux-ubuntu-tsan >> * libcxx-libcxxabi-x86_64-linux-ubuntu-gcc5-cxx11 >> * libcxx-libcxxabi-x86_64-linux-ubuntu-gcc-tot-latest-std >> * libcxx-libcxxabi-libunwind-armv7-linux >> * libcxx-libcxxabi-libunwind-armv8-linux >> * libcxx-libcxxabi-libunwind-armv7-linux-noexceptions >> * libcxx-libcxxabi-libunwind-armv8-linux-noexceptions >> * libcxx-libcxxabi-libunwind-aarch64-linux >> * libcxx-libcxxabi-libunwind-aarch64-linux-noexceptions >> * ppc64le-lld-multistage-test >> >> These builders are already on the staging master. So, please ping me if you >> would like to configure any of them to work with monorepo: >> >> * clang-freebsd11-amd64 >> >> These builders have been already tested and could be reconfigured without >> staging as soon as public master is ready: >> >> * llvm-sphinx-docs >> * clang-sphinx-docs >> * clang-tools-sphinx-docs >> * lld-sphinx-docs >> * lldb-sphinx-docs >> * libcxx-sphinx-docs >> * libunwind-sphinx-docs >> * clang-x86_64-debian-fast >> * libcxx-libcxxabi-x86_64-linux-debian >> * libcxx-libcxxabi-x86_64-linux-debian-noexceptions >> * libcxx-libcxxabi-libunwind-x86_64-
Re: [llvm-dev] Zorg migration to GitHub/monorepo
Hi Galina, On Tue, 29 Oct 2019 at 04:42, Galina Kistanova wrote: > > Hello Nemanja, > > > a commit to a project that shouldn't trigger builds on a libcxx bot (i.e. > > the change was in llvm). > > With all due respect, this does not sound right. > I'm not sure how changes in a code a particular bot builds and tests > should not trigger builds. In many cases this will lead to false blame > lists, which is very annoying for developers, and hurt a quality of a > bot. Could somebody elaborate a valid use case for this, please? If > this is what Diana meant, of course. Yes, this is what I meant. In the past, we only triggered builds for commits to libcxx, libcxxabi and libunwind. E.g. http://lab.llvm.org:8011/builders/libcxx-libcxxabi-libunwind-armv7-linux/builds/1048 So I actually thought the bots were building without checking out llvm. I now realize I was wrong and they did pull and build llvm as well, so I guess the previous behaviour was buggy. Thanks for helping us clarify this issue! Cheers, Diana > > I have a somewhat orthogonal but related question. In the past, commits to > > compiler-rt did not trigger builds on llvm/clang/sanitizer bots. Has this > > behaviour been rectified with the move to github? > > Before the move we had a set of schedulers with manually specified > list of projects to listen and assigned per group of bots. This was an > error prone as people were adding bots without realizing that a group > they add a bot to does not listen for a changes in some of the > projects that particular bot depends on. You have mentioned an example > of such issues. > > Now we use the dependency list for each of the monorepo-ready build > factory (depends_on_projects param) to figure out what changes should > trigger a build, as well as to configure the "-DLLVM_ENABLE_PROJECTS=" > cmake arg. The dependency list could be redefined per builder, if for > any reason a build factory default doesn't work well. All the > schedulers are configured automatically and every bot is served with > changes to any and all projects it claims a dependency on. This should > give a better and transparent way to define and track what would and > what would not trigger a build. This is the idea at least. Some work > remains to be done as not all of the build factories let redefine the > dependency list yet, not all set "-DLLVM_ENABLE_PROJECTS=" properly, > and such. > > Thanks > > Galina > > On Mon, Oct 28, 2019 at 5:09 PM Nemanja Ivanovic > wrote: > > > > I think what she is referring to was that the build seemed to be triggered > > by a commit to a project that shouldn't trigger builds on a libcxx bot > > (i.e. the change was in llvm). > > > > I have a somewhat orthogonal but related question. In the past, commits to > > compiler-rt did not trigger builds on llvm/clang/sanitizer bots. Has this > > behaviour been rectified with the move to github? I am really sorry if you > > already answered this question and I just missed it. > > > > On Mon, Oct 28, 2019 at 2:37 PM Galina Kistanova via llvm-dev > > wrote: > >> > >> Hi Diana, > >> > >> It is not clear from your description of what is the problem. Could > >> you elaborate, please? > >> > >> I have looked at the build history closer and see that this build > >> configuration depends on libcxx, libcxxabi, libunwind, llvm projects, > >> and changes to any of these would trigger a build. Depending on a bot > >> performance, patches could be grouped to a longer blame list. To me, > >> this is exactly how it supposedly should be. Are you missing any > >> particular changes in libcxx, libcxxabi,or libunwind project which > >> should trigger a build but they didn't? If so, could you point me to > >> such change, please? > >> > >> Thanks > >> > >> Galina > >> > >> > >> > >> On Mon, Oct 28, 2019 at 5:16 AM Diana Picus wrote: > >> > > >> > Hi Galina, > >> > > >> > It seems that our libcxx bots are now triggering builds for any changes > >> > to llvm: > >> > http://lab.llvm.org:8011/builders/libcxx-libcxxabi-libunwind-aarch64-linux/builds/2434 > >> > > >> > Should I file a bug report for this? > >> > > >> > Thanks, > >> > Diana > >> > > >> > On Sat, 19 Oct 2019 at 11:36, Galina Kistanova via cfe-commits > >> > wrote: > >> > > > >> > > Hello everyone, > >> > > > >> > > The staging master is ready to accept bots from the list I have sent > >> > > yesterday. Don't wait too long. > >> > > > >> > > The master has been updated and works with both SVN and Github > >> > > monorepo now. > >> > > > >> > > The following builders are already listening for changes in monorepo > >> > > and building monorepo. More are coming. > >> > > > >> > > * clang-sphinx-docs > >> > > * clang-tools-sphinx-docs > >> > > * clang-x86_64-linux-abi-test > >> > > * clang-lld-x86_64-2stage > >> > > * libcxx-libcxxabi-singlethreaded-x86_64-linux-debian > >> > > * libcxx-sphinx-docs > >> > > * libunwind-sphinx-docs > >> > > * lld-sphinx-docs > >> > > * lld-x86_64-darwin13 > >> > > * lld-x86_64-ubu
Re: r369591 - [LifetimeAnalysis] Support more STL idioms (template forward declaration and DependentNameType)
Hi Matthias, It seems this is breaking some of our AArch64 bots: http://lab.llvm.org:8011/builders/clang-cmake-aarch64-quick/builds/19691 http://lab.llvm.org:8011/builders/clang-cmake-aarch64-global-isel/builds/12022 You probably didn't notice it because something else also failed in that build and then the bots just remained red. I haven't looked into too much detail, but AFAICT this is only happening with gcc-7 (our other AArch64 bots which run clang-6 seem to be ok with it). Is this a problem with the compiler or with the code? Thanks, Diana On Thu, 22 Aug 2019 at 00:07, Matthias Gehre via cfe-commits wrote: > > Author: mgehre > Date: Wed Aug 21 15:08:59 2019 > New Revision: 369591 > > URL: http://llvm.org/viewvc/llvm-project?rev=369591&view=rev > Log: > [LifetimeAnalysis] Support more STL idioms (template forward declaration and > DependentNameType) > > Summary: > This fixes inference of gsl::Pointer on std::set::iterator with libstdc++ > (the typedef for iterator > on the template is a DependentNameType - we can only put the gsl::Pointer > attribute > on the underlaying record after instantiation) > > inference of gsl::Pointer on std::vector::iterator with libc++ (the class was > forward-declared, > we added the gsl::Pointer on the canonical decl (the forward decl), and later > when the > template was instantiated, there was no attribute on the definition so it was > not instantiated). > > and a duplicate gsl::Pointer on some class with libstdc++ (we first added an > attribute to > a incomplete instantiation, and then another was copied from the template > definition > when the instantiation was completed). > > We now add the attributes to all redeclarations to fix thos issues and make > their usage easier. > > Reviewers: gribozavr > > Subscribers: Szelethus, xazax.hun, cfe-commits > > Tags: #clang > > Differential Revision: https://reviews.llvm.org/D66179 > > Added: > cfe/trunk/unittests/Sema/GslOwnerPointerInference.cpp > Modified: > cfe/trunk/lib/Sema/SemaAttr.cpp > cfe/trunk/lib/Sema/SemaDeclAttr.cpp > cfe/trunk/lib/Sema/SemaInit.cpp > cfe/trunk/lib/Sema/SemaTemplateInstantiateDecl.cpp > cfe/trunk/test/SemaCXX/attr-gsl-owner-pointer-std.cpp > cfe/trunk/test/SemaCXX/attr-gsl-owner-pointer.cpp > cfe/trunk/unittests/Sema/CMakeLists.txt > > Modified: cfe/trunk/lib/Sema/SemaAttr.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaAttr.cpp?rev=369591&r1=369590&r2=369591&view=diff > == > --- cfe/trunk/lib/Sema/SemaAttr.cpp (original) > +++ cfe/trunk/lib/Sema/SemaAttr.cpp Wed Aug 21 15:08:59 2019 > @@ -88,13 +88,11 @@ void Sema::AddMsStructLayoutForRecord(Re > template > static void addGslOwnerPointerAttributeIfNotExisting(ASTContext &Context, > CXXRecordDecl *Record) { > - CXXRecordDecl *Canonical = Record->getCanonicalDecl(); > - if (Canonical->hasAttr() || Canonical->hasAttr()) > + if (Record->hasAttr() || Record->hasAttr()) > return; > > - Canonical->addAttr(::new (Context) Attribute(SourceRange{}, Context, > - /*DerefType*/ nullptr, > - /*Spelling=*/0)); > + for (Decl *Redecl : Record->redecls()) > +Redecl->addAttr(Attribute::CreateImplicit(Context, > /*DerefType=*/nullptr)); > } > > void Sema::inferGslPointerAttribute(NamedDecl *ND, > @@ -189,8 +187,7 @@ void Sema::inferGslOwnerPointerAttribute > >// Handle classes that directly appear in std namespace. >if (Record->isInStdNamespace()) { > -CXXRecordDecl *Canonical = Record->getCanonicalDecl(); > -if (Canonical->hasAttr() || Canonical->hasAttr()) > +if (Record->hasAttr() || Record->hasAttr()) >return; > > if (StdOwners.count(Record->getName())) > > Modified: cfe/trunk/lib/Sema/SemaDeclAttr.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaDeclAttr.cpp?rev=369591&r1=369590&r2=369591&view=diff > == > --- cfe/trunk/lib/Sema/SemaDeclAttr.cpp (original) > +++ cfe/trunk/lib/Sema/SemaDeclAttr.cpp Wed Aug 21 15:08:59 2019 > @@ -4592,9 +4592,11 @@ static void handleLifetimeCategoryAttr(S >} >return; > } > -D->addAttr(::new (S.Context) > - OwnerAttr(AL.getRange(), S.Context, DerefTypeLoc, > - AL.getAttributeSpellingListIndex())); > +for (Decl *Redecl : D->redecls()) { > + Redecl->addAttr(::new (S.Context) > + OwnerAttr(AL.getRange(), S.Context, DerefTypeLoc, > +AL.getAttributeSpellingListIndex())); > +} >} else { > if (checkAttrMutualExclusion(S, D, AL)) >return; > @@ -4609,9 +4611,11 @@ static void handleLifetimeCategoryAttr(S >} >return; > } > -
r310464 - Revert "PR19668, PR23034: Fix handling of move constructors and deleted copy constructors when deciding whether classes should be passed indirectly."
Author: rovka Date: Wed Aug 9 05:22:25 2017 New Revision: 310464 URL: http://llvm.org/viewvc/llvm-project?rev=310464&view=rev Log: Revert "PR19668, PR23034: Fix handling of move constructors and deleted copy constructors when deciding whether classes should be passed indirectly." This reverts commit r310401 because it seems to have broken some ARM bot(s). Modified: cfe/trunk/include/clang/AST/DeclCXX.h cfe/trunk/lib/AST/ASTImporter.cpp cfe/trunk/lib/AST/DeclCXX.cpp cfe/trunk/lib/CodeGen/CGCXXABI.cpp cfe/trunk/lib/CodeGen/ItaniumCXXABI.cpp cfe/trunk/lib/CodeGen/MicrosoftCXXABI.cpp cfe/trunk/lib/Sema/SemaDeclCXX.cpp cfe/trunk/lib/Serialization/ASTReaderDecl.cpp cfe/trunk/lib/Serialization/ASTWriter.cpp cfe/trunk/test/CodeGenCXX/uncopyable-args.cpp cfe/trunk/unittests/ASTMatchers/ASTMatchersNarrowingTest.cpp Modified: cfe/trunk/include/clang/AST/DeclCXX.h URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/AST/DeclCXX.h?rev=310464&r1=310463&r2=310464&view=diff == --- cfe/trunk/include/clang/AST/DeclCXX.h (original) +++ cfe/trunk/include/clang/AST/DeclCXX.h Wed Aug 9 05:22:25 2017 @@ -375,7 +375,6 @@ class CXXRecordDecl : public RecordDecl /// \brief These flags are \c true if a defaulted corresponding special /// member can't be fully analyzed without performing overload resolution. /// @{ -unsigned NeedOverloadResolutionForCopyConstructor : 1; unsigned NeedOverloadResolutionForMoveConstructor : 1; unsigned NeedOverloadResolutionForMoveAssignment : 1; unsigned NeedOverloadResolutionForDestructor : 1; @@ -384,7 +383,6 @@ class CXXRecordDecl : public RecordDecl /// \brief These flags are \c true if an implicit defaulted corresponding /// special member would be defined as deleted. /// @{ -unsigned DefaultedCopyConstructorIsDeleted : 1; unsigned DefaultedMoveConstructorIsDeleted : 1; unsigned DefaultedMoveAssignmentIsDeleted : 1; unsigned DefaultedDestructorIsDeleted : 1; @@ -417,12 +415,6 @@ class CXXRecordDecl : public RecordDecl /// constructor. unsigned HasDefaultedDefaultConstructor : 1; -/// \brief True if this class can be passed in a non-address-preserving -/// fashion (such as in registers) according to the C++ language rules. -/// This does not imply anything about how the ABI in use will actually -/// pass an object of this class. -unsigned CanPassInRegisters : 1; - /// \brief True if a defaulted default constructor for this class would /// be constexpr. unsigned DefaultedDefaultConstructorIsConstexpr : 1; @@ -819,50 +811,18 @@ public: return data().FirstFriend.isValid(); } - /// \brief \c true if a defaulted copy constructor for this class would be - /// deleted. - bool defaultedCopyConstructorIsDeleted() const { -assert((!needsOverloadResolutionForCopyConstructor() || -(data().DeclaredSpecialMembers & SMF_CopyConstructor)) && - "this property has not yet been computed by Sema"); -return data().DefaultedCopyConstructorIsDeleted; - } - - /// \brief \c true if a defaulted move constructor for this class would be - /// deleted. - bool defaultedMoveConstructorIsDeleted() const { -assert((!needsOverloadResolutionForMoveConstructor() || -(data().DeclaredSpecialMembers & SMF_MoveConstructor)) && - "this property has not yet been computed by Sema"); -return data().DefaultedMoveConstructorIsDeleted; - } - - /// \brief \c true if a defaulted destructor for this class would be deleted. - bool defaultedDestructorIsDeleted() const { -return !data().DefaultedDestructorIsDeleted; - } - - /// \brief \c true if we know for sure that this class has a single, - /// accessible, unambiguous copy constructor that is not deleted. - bool hasSimpleCopyConstructor() const { -return !hasUserDeclaredCopyConstructor() && - !data().DefaultedCopyConstructorIsDeleted; - } - /// \brief \c true if we know for sure that this class has a single, /// accessible, unambiguous move constructor that is not deleted. bool hasSimpleMoveConstructor() const { return !hasUserDeclaredMoveConstructor() && hasMoveConstructor() && !data().DefaultedMoveConstructorIsDeleted; } - /// \brief \c true if we know for sure that this class has a single, /// accessible, unambiguous move assignment operator that is not deleted. bool hasSimpleMoveAssignment() const { return !hasUserDeclaredMoveAssignment() && hasMoveAssignment() && !data().DefaultedMoveAssignmentIsDeleted; } - /// \brief \c true if we know for sure that this class has an accessible /// destructor that is not deleted. bool hasSimpleDestructor() const { @@ -918,16 +878,7 @@ public: /// \brief Determine whether we need to eagerly declare a defaulted copy /// constructor for
Re: r310401 - PR19668, PR23034: Fix handling of move constructors and deleted copy
Hi Richard, I'm sorry but I've reverted this in r310464 because it was breaking some ASAN tests on this bot: http://lab.llvm.org:8011/builders/clang-cmake-armv7-a15-full/builds/9452 Please let me know if I can help debug this. Cheers, Diana On 8 August 2017 at 21:14, Richard Smith via cfe-commits wrote: > I forgot to say: > > Based on a patch by Vassil Vassilev, which was based on a patch by Bernd > Schmidt, which was based on a patch by Reid Kleckner. > > On 8 August 2017 at 12:12, Richard Smith via cfe-commits > wrote: >> >> Author: rsmith >> Date: Tue Aug 8 12:12:28 2017 >> New Revision: 310401 >> >> URL: http://llvm.org/viewvc/llvm-project?rev=310401&view=rev >> Log: >> PR19668, PR23034: Fix handling of move constructors and deleted copy >> constructors when deciding whether classes should be passed indirectly. >> >> This fixes ABI differences between Clang and GCC: >> >> * Previously, Clang ignored the move constructor when making this >>determination. It now takes the move constructor into account, per >>https://github.com/itanium-cxx-abi/cxx-abi/pull/17 (this change may >>seem recent, but the ABI change was agreed on the Itanium C++ ABI >>list a long time ago). >> >> * Previously, Clang's behavior when the copy constructor was deleted >>was unstable -- depending on whether the lazy declaration of the >>copy constructor had been triggered, you might get different behavior. >>We now eagerly declare the copy constructor whenever its deletedness >>is unclear, and ignore deleted copy/move constructors when looking for >>a trivial such constructor. >> >> This also fixes an ABI difference between Clang and MSVC: >> >> * If the copy constructor would be implicitly deleted (but has not been >>lazily declared yet), for instance because the class has an rvalue >>reference member, we would pass it directly. We now pass such a class >>indirectly, matching MSVC. >> >> Modified: >> cfe/trunk/include/clang/AST/DeclCXX.h >> cfe/trunk/lib/AST/ASTImporter.cpp >> cfe/trunk/lib/AST/DeclCXX.cpp >> cfe/trunk/lib/CodeGen/CGCXXABI.cpp >> cfe/trunk/lib/CodeGen/ItaniumCXXABI.cpp >> cfe/trunk/lib/CodeGen/MicrosoftCXXABI.cpp >> cfe/trunk/lib/Sema/SemaDeclCXX.cpp >> cfe/trunk/lib/Serialization/ASTReaderDecl.cpp >> cfe/trunk/lib/Serialization/ASTWriter.cpp >> cfe/trunk/test/CodeGenCXX/uncopyable-args.cpp >> cfe/trunk/unittests/ASTMatchers/ASTMatchersNarrowingTest.cpp >> >> Modified: cfe/trunk/include/clang/AST/DeclCXX.h >> URL: >> http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/AST/DeclCXX.h?rev=310401&r1=310400&r2=310401&view=diff >> >> == >> --- cfe/trunk/include/clang/AST/DeclCXX.h (original) >> +++ cfe/trunk/include/clang/AST/DeclCXX.h Tue Aug 8 12:12:28 2017 >> @@ -375,6 +375,7 @@ class CXXRecordDecl : public RecordDecl >> /// \brief These flags are \c true if a defaulted corresponding >> special >> /// member can't be fully analyzed without performing overload >> resolution. >> /// @{ >> +unsigned NeedOverloadResolutionForCopyConstructor : 1; >> unsigned NeedOverloadResolutionForMoveConstructor : 1; >> unsigned NeedOverloadResolutionForMoveAssignment : 1; >> unsigned NeedOverloadResolutionForDestructor : 1; >> @@ -383,6 +384,7 @@ class CXXRecordDecl : public RecordDecl >> /// \brief These flags are \c true if an implicit defaulted >> corresponding >> /// special member would be defined as deleted. >> /// @{ >> +unsigned DefaultedCopyConstructorIsDeleted : 1; >> unsigned DefaultedMoveConstructorIsDeleted : 1; >> unsigned DefaultedMoveAssignmentIsDeleted : 1; >> unsigned DefaultedDestructorIsDeleted : 1; >> @@ -415,6 +417,12 @@ class CXXRecordDecl : public RecordDecl >> /// constructor. >> unsigned HasDefaultedDefaultConstructor : 1; >> >> +/// \brief True if this class can be passed in a >> non-address-preserving >> +/// fashion (such as in registers) according to the C++ language >> rules. >> +/// This does not imply anything about how the ABI in use will >> actually >> +/// pass an object of this class. >> +unsigned CanPassInRegisters : 1; >> + >> /// \brief True if a defaulted default constructor for this class >> would >> /// be constexpr. >> unsigned DefaultedDefaultConstructorIsConstexpr : 1; >> @@ -811,18 +819,50 @@ public: >> return data().FirstFriend.isValid(); >>} >> >> + /// \brief \c true if a defaulted copy constructor for this class would >> be >> + /// deleted. >> + bool defaultedCopyConstructorIsDeleted() const { >> +assert((!needsOverloadResolutionForCopyConstructor() || >> +(data().DeclaredSpecialMembers & SMF_CopyConstructor)) && >> + "this property has not yet been computed by Sema"); >> +return data().DefaultedCopyConstructorIsDeleted; >> + } >> + >> + /// \brief
Re: r310401 - PR19668, PR23034: Fix handling of move constructors and deleted copy
Reverting this also fixed the selfhost bots: http://lab.llvm.org:8011/builders/clang-cmake-thumbv7-a15-full-sh/builds/2142 http://lab.llvm.org:8011/builders/clang-cmake-armv7-a15-selfhost/builds/2309 http://lab.llvm.org:8011/builders/clang-cmake-armv7-a15-selfhost-neon/builds/1819 I'm afraid the logs for those look even less helpful. On 9 August 2017 at 16:17, Diana Picus wrote: > Hi, > > See attached. FWIW, when I ran this on a very similar machine, I got > 194 failures, all of which went away after reverting. So there might > be something fishy going on. > > Regards, > Diana > > On 9 August 2017 at 15:02, Vassil Vassilev wrote: >> Hi Diana, >> >> It seems the service is down. Could you send us the details of the >> failures (incl stack traces if any) >> >> Many thanks, >> Vassil >> >> On 09/08/17 15:27, Diana Picus via cfe-commits wrote: >>> >>> Hi Richard, >>> >>> I'm sorry but I've reverted this in r310464 because it was breaking >>> some ASAN tests on this bot: >>> http://lab.llvm.org:8011/builders/clang-cmake-armv7-a15-full/builds/9452 >>> >>> Please let me know if I can help debug this. >>> >>> Cheers, >>> Diana >>> >>> On 8 August 2017 at 21:14, Richard Smith via cfe-commits >>> wrote: >>>> >>>> I forgot to say: >>>> >>>> Based on a patch by Vassil Vassilev, which was based on a patch by Bernd >>>> Schmidt, which was based on a patch by Reid Kleckner. >>>> >>>> On 8 August 2017 at 12:12, Richard Smith via cfe-commits >>>> wrote: >>>>> >>>>> Author: rsmith >>>>> Date: Tue Aug 8 12:12:28 2017 >>>>> New Revision: 310401 >>>>> >>>>> URL: http://llvm.org/viewvc/llvm-project?rev=310401&view=rev >>>>> Log: >>>>> PR19668, PR23034: Fix handling of move constructors and deleted copy >>>>> constructors when deciding whether classes should be passed indirectly. >>>>> >>>>> This fixes ABI differences between Clang and GCC: >>>>> >>>>> * Previously, Clang ignored the move constructor when making this >>>>> determination. It now takes the move constructor into account, per >>>>> https://github.com/itanium-cxx-abi/cxx-abi/pull/17 (this change may >>>>> seem recent, but the ABI change was agreed on the Itanium C++ ABI >>>>> list a long time ago). >>>>> >>>>> * Previously, Clang's behavior when the copy constructor was deleted >>>>> was unstable -- depending on whether the lazy declaration of the >>>>> copy constructor had been triggered, you might get different >>>>> behavior. >>>>> We now eagerly declare the copy constructor whenever its deletedness >>>>> is unclear, and ignore deleted copy/move constructors when looking >>>>> for >>>>> a trivial such constructor. >>>>> >>>>> This also fixes an ABI difference between Clang and MSVC: >>>>> >>>>> * If the copy constructor would be implicitly deleted (but has not >>>>> been >>>>> lazily declared yet), for instance because the class has an rvalue >>>>> reference member, we would pass it directly. We now pass such a >>>>> class >>>>> indirectly, matching MSVC. >>>>> >>>>> Modified: >>>>> cfe/trunk/include/clang/AST/DeclCXX.h >>>>> cfe/trunk/lib/AST/ASTImporter.cpp >>>>> cfe/trunk/lib/AST/DeclCXX.cpp >>>>> cfe/trunk/lib/CodeGen/CGCXXABI.cpp >>>>> cfe/trunk/lib/CodeGen/ItaniumCXXABI.cpp >>>>> cfe/trunk/lib/CodeGen/MicrosoftCXXABI.cpp >>>>> cfe/trunk/lib/Sema/SemaDeclCXX.cpp >>>>> cfe/trunk/lib/Serialization/ASTReaderDecl.cpp >>>>> cfe/trunk/lib/Serialization/ASTWriter.cpp >>>>> cfe/trunk/test/CodeGenCXX/uncopyable-args.cpp >>>>> cfe/trunk/unittests/ASTMatchers/ASTMatchersNarrowingTest.cpp >>>>> >>>>> Modified: cfe/trunk/include/clang/AST/DeclCXX.h >>>>> URL: >>>>> >>>>> http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/AST/DeclCXX.h?rev=310401&r1=310400&r2=310401&view=diff >>>>> >>>>> >>>&g
Re: r310401 - PR19668, PR23034: Fix handling of move constructors and deleted copy
Hi Vassil, My build is in progress, but since it's a full build it's probably going to take another couple of hours to complete. I'll let you know when it's done. Thanks, Diana On 10 August 2017 at 10:09, Vassil Vassilev wrote: > It looks like I can not reproduce it on osx (non-arm)... :( > On 09/08/17 22:54, Diana Picus wrote: >> >> Reverting this also fixed the selfhost bots: >> >> http://lab.llvm.org:8011/builders/clang-cmake-thumbv7-a15-full-sh/builds/2142 >> >> http://lab.llvm.org:8011/builders/clang-cmake-armv7-a15-selfhost/builds/2309 >> >> http://lab.llvm.org:8011/builders/clang-cmake-armv7-a15-selfhost-neon/builds/1819 >> >> I'm afraid the logs for those look even less helpful. >> >> On 9 August 2017 at 16:17, Diana Picus wrote: >>> >>> Hi, >>> >>> See attached. FWIW, when I ran this on a very similar machine, I got >>> 194 failures, all of which went away after reverting. So there might >>> be something fishy going on. >>> >>> Regards, >>> Diana >>> >>> On 9 August 2017 at 15:02, Vassil Vassilev >>> wrote: >>>> >>>> Hi Diana, >>>> >>>>It seems the service is down. Could you send us the details of the >>>> failures (incl stack traces if any) >>>> >>>> Many thanks, >>>> Vassil >>>> >>>> On 09/08/17 15:27, Diana Picus via cfe-commits wrote: >>>>> >>>>> Hi Richard, >>>>> >>>>> I'm sorry but I've reverted this in r310464 because it was breaking >>>>> some ASAN tests on this bot: >>>>> >>>>> http://lab.llvm.org:8011/builders/clang-cmake-armv7-a15-full/builds/9452 >>>>> >>>>> Please let me know if I can help debug this. >>>>> >>>>> Cheers, >>>>> Diana >>>>> >>>>> On 8 August 2017 at 21:14, Richard Smith via cfe-commits >>>>> wrote: >>>>>> >>>>>> I forgot to say: >>>>>> >>>>>> Based on a patch by Vassil Vassilev, which was based on a patch by >>>>>> Bernd >>>>>> Schmidt, which was based on a patch by Reid Kleckner. >>>>>> >>>>>> On 8 August 2017 at 12:12, Richard Smith via cfe-commits >>>>>> wrote: >>>>>>> >>>>>>> Author: rsmith >>>>>>> Date: Tue Aug 8 12:12:28 2017 >>>>>>> New Revision: 310401 >>>>>>> >>>>>>> URL: http://llvm.org/viewvc/llvm-project?rev=310401&view=rev >>>>>>> Log: >>>>>>> PR19668, PR23034: Fix handling of move constructors and deleted copy >>>>>>> constructors when deciding whether classes should be passed >>>>>>> indirectly. >>>>>>> >>>>>>> This fixes ABI differences between Clang and GCC: >>>>>>> >>>>>>>* Previously, Clang ignored the move constructor when making this >>>>>>> determination. It now takes the move constructor into account, >>>>>>> per >>>>>>> https://github.com/itanium-cxx-abi/cxx-abi/pull/17 (this change >>>>>>> may >>>>>>> seem recent, but the ABI change was agreed on the Itanium C++ >>>>>>> ABI >>>>>>> list a long time ago). >>>>>>> >>>>>>>* Previously, Clang's behavior when the copy constructor was >>>>>>> deleted >>>>>>> was unstable -- depending on whether the lazy declaration of the >>>>>>> copy constructor had been triggered, you might get different >>>>>>> behavior. >>>>>>> We now eagerly declare the copy constructor whenever its >>>>>>> deletedness >>>>>>> is unclear, and ignore deleted copy/move constructors when >>>>>>> looking >>>>>>> for >>>>>>> a trivial such constructor. >>>>>>> >>>>>>> This also fixes an ABI difference between Clang and MSVC: >>>>>>> >>>>>>>* If the copy constructor would be implicitly deleted (but has not >>>>>>> been >>>>>>
Re: r310401 - PR19668, PR23034: Fix handling of move constructors and deleted copy
Hi guys, I'm SO sorry about the delays. I've been having all sorts of trouble getting that debug build on the board (from ld running out of memory to the board just crashing on me, in which case I need to ask someone else to reboot it because I can't power cycle it remotely). I can assure you this is one of my top priorities, I'll get those stack traces as soon as I can. Thanks for your patience and sorry again, Diana On 10 August 2017 at 22:55, Richard Smith wrote: > Any news on this? We want this change in Clang 5, so the sooner we can > understand and fix this regression the better... > > On 10 August 2017 at 01:28, Diana Picus via cfe-commits > wrote: >> >> Hi Vassil, >> >> My build is in progress, but since it's a full build it's probably >> going to take another couple of hours to complete. I'll let you know >> when it's done. >> >> Thanks, >> Diana >> >> On 10 August 2017 at 10:09, Vassil Vassilev >> wrote: >> > It looks like I can not reproduce it on osx (non-arm)... :( >> > On 09/08/17 22:54, Diana Picus wrote: >> >> >> >> Reverting this also fixed the selfhost bots: >> >> >> >> >> >> http://lab.llvm.org:8011/builders/clang-cmake-thumbv7-a15-full-sh/builds/2142 >> >> >> >> >> >> http://lab.llvm.org:8011/builders/clang-cmake-armv7-a15-selfhost/builds/2309 >> >> >> >> >> >> http://lab.llvm.org:8011/builders/clang-cmake-armv7-a15-selfhost-neon/builds/1819 >> >> >> >> I'm afraid the logs for those look even less helpful. >> >> >> >> On 9 August 2017 at 16:17, Diana Picus wrote: >> >>> >> >>> Hi, >> >>> >> >>> See attached. FWIW, when I ran this on a very similar machine, I got >> >>> 194 failures, all of which went away after reverting. So there might >> >>> be something fishy going on. >> >>> >> >>> Regards, >> >>> Diana >> >>> >> >>> On 9 August 2017 at 15:02, Vassil Vassilev >> >>> wrote: >> >>>> >> >>>> Hi Diana, >> >>>> >> >>>>It seems the service is down. Could you send us the details of the >> >>>> failures (incl stack traces if any) >> >>>> >> >>>> Many thanks, >> >>>> Vassil >> >>>> >> >>>> On 09/08/17 15:27, Diana Picus via cfe-commits wrote: >> >>>>> >> >>>>> Hi Richard, >> >>>>> >> >>>>> I'm sorry but I've reverted this in r310464 because it was breaking >> >>>>> some ASAN tests on this bot: >> >>>>> >> >>>>> >> >>>>> http://lab.llvm.org:8011/builders/clang-cmake-armv7-a15-full/builds/9452 >> >>>>> >> >>>>> Please let me know if I can help debug this. >> >>>>> >> >>>>> Cheers, >> >>>>> Diana >> >>>>> >> >>>>> On 8 August 2017 at 21:14, Richard Smith via cfe-commits >> >>>>> wrote: >> >>>>>> >> >>>>>> I forgot to say: >> >>>>>> >> >>>>>> Based on a patch by Vassil Vassilev, which was based on a patch by >> >>>>>> Bernd >> >>>>>> Schmidt, which was based on a patch by Reid Kleckner. >> >>>>>> >> >>>>>> On 8 August 2017 at 12:12, Richard Smith via cfe-commits >> >>>>>> wrote: >> >>>>>>> >> >>>>>>> Author: rsmith >> >>>>>>> Date: Tue Aug 8 12:12:28 2017 >> >>>>>>> New Revision: 310401 >> >>>>>>> >> >>>>>>> URL: http://llvm.org/viewvc/llvm-project?rev=310401&view=rev >> >>>>>>> Log: >> >>>>>>> PR19668, PR23034: Fix handling of move constructors and deleted >> >>>>>>> copy >> >>>>>>> constructors when deciding whether classes should be passed >> >>>>>>> indirectly. >> >>>>>>> >> >>>>>>> This fixes ABI differences between Clang and GCC: >> >>>>>>> >> >>>>
Re: r310401 - PR19668, PR23034: Fix handling of move constructors and deleted copy
Hi again, I finally got the debug build, but unfortunately the stack traces that the tests print look the same. My suspicion is that this is because the addresses printed by the tests are funny (i.e. odd numbers instead of divisible by 4). I tried to follow those addresses in an objdump of the executable, but I didn't have much success since most of them weren't really pointing to call instructions. When I try to run the tests manually in the shell or in gdb, they pass. I'm not sure what else to try. Thoughts? Thanks, Diana On 11 August 2017 at 11:14, Diana Picus wrote: > Hi guys, > > I'm SO sorry about the delays. I've been having all sorts of trouble > getting that debug build on the board (from ld running out of memory > to the board just crashing on me, in which case I need to ask someone > else to reboot it because I can't power cycle it remotely). I can > assure you this is one of my top priorities, I'll get those stack > traces as soon as I can. > > Thanks for your patience and sorry again, > Diana > > On 10 August 2017 at 22:55, Richard Smith wrote: >> Any news on this? We want this change in Clang 5, so the sooner we can >> understand and fix this regression the better... >> >> On 10 August 2017 at 01:28, Diana Picus via cfe-commits >> wrote: >>> >>> Hi Vassil, >>> >>> My build is in progress, but since it's a full build it's probably >>> going to take another couple of hours to complete. I'll let you know >>> when it's done. >>> >>> Thanks, >>> Diana >>> >>> On 10 August 2017 at 10:09, Vassil Vassilev >>> wrote: >>> > It looks like I can not reproduce it on osx (non-arm)... :( >>> > On 09/08/17 22:54, Diana Picus wrote: >>> >> >>> >> Reverting this also fixed the selfhost bots: >>> >> >>> >> >>> >> http://lab.llvm.org:8011/builders/clang-cmake-thumbv7-a15-full-sh/builds/2142 >>> >> >>> >> >>> >> http://lab.llvm.org:8011/builders/clang-cmake-armv7-a15-selfhost/builds/2309 >>> >> >>> >> >>> >> http://lab.llvm.org:8011/builders/clang-cmake-armv7-a15-selfhost-neon/builds/1819 >>> >> >>> >> I'm afraid the logs for those look even less helpful. >>> >> >>> >> On 9 August 2017 at 16:17, Diana Picus wrote: >>> >>> >>> >>> Hi, >>> >>> >>> >>> See attached. FWIW, when I ran this on a very similar machine, I got >>> >>> 194 failures, all of which went away after reverting. So there might >>> >>> be something fishy going on. >>> >>> >>> >>> Regards, >>> >>> Diana >>> >>> >>> >>> On 9 August 2017 at 15:02, Vassil Vassilev >>> >>> wrote: >>> >>>> >>> >>>> Hi Diana, >>> >>>> >>> >>>>It seems the service is down. Could you send us the details of the >>> >>>> failures (incl stack traces if any) >>> >>>> >>> >>>> Many thanks, >>> >>>> Vassil >>> >>>> >>> >>>> On 09/08/17 15:27, Diana Picus via cfe-commits wrote: >>> >>>>> >>> >>>>> Hi Richard, >>> >>>>> >>> >>>>> I'm sorry but I've reverted this in r310464 because it was breaking >>> >>>>> some ASAN tests on this bot: >>> >>>>> >>> >>>>> >>> >>>>> http://lab.llvm.org:8011/builders/clang-cmake-armv7-a15-full/builds/9452 >>> >>>>> >>> >>>>> Please let me know if I can help debug this. >>> >>>>> >>> >>>>> Cheers, >>> >>>>> Diana >>> >>>>> >>> >>>>> On 8 August 2017 at 21:14, Richard Smith via cfe-commits >>> >>>>> wrote: >>> >>>>>> >>> >>>>>> I forgot to say: >>> >>>>>> >>> >>>>>> Based on a patch by Vassil Vassilev, which was based on a patch by >>> >>>>>> Bernd >>> >>>>>> Schmidt, which was based on a patch by Reid Kleckner. >>> >>>>>> >>> >>>>>> On
Re: r310401 - PR19668, PR23034: Fix handling of move constructors and deleted copy
Well, these are ASAN tests, I'm not sure how that would interact with Valgrind. Anyway, I'll try to reproduce the environment, I'm guessing it would be best to catch this in gdb so I can actually see what's going on. On 11 August 2017 at 15:21, Vassil Vassilev wrote: > That's really strange. It looks like some random behavior. Did you run some > memory checker like valgrind? > > Do the environment provided by the test runner and yours match? > > Sent from my phone. Please excuse my brevity. > >> On 11 Aug 2017, at 15:58, Diana Picus wrote: >> >> Hi again, >> >> I finally got the debug build, but unfortunately the stack traces that >> the tests print look the same. My suspicion is that this is because >> the addresses printed by the tests are funny (i.e. odd numbers instead >> of divisible by 4). I tried to follow those addresses in an objdump of >> the executable, but I didn't have much success since most of them >> weren't really pointing to call instructions. >> >> When I try to run the tests manually in the shell or in gdb, they pass. >> >> I'm not sure what else to try. Thoughts? >> >> Thanks, >> Diana >> >>> On 11 August 2017 at 11:14, Diana Picus wrote: >>> Hi guys, >>> >>> I'm SO sorry about the delays. I've been having all sorts of trouble >>> getting that debug build on the board (from ld running out of memory >>> to the board just crashing on me, in which case I need to ask someone >>> else to reboot it because I can't power cycle it remotely). I can >>> assure you this is one of my top priorities, I'll get those stack >>> traces as soon as I can. >>> >>> Thanks for your patience and sorry again, >>> Diana >>> >>>> On 10 August 2017 at 22:55, Richard Smith wrote: >>>> Any news on this? We want this change in Clang 5, so the sooner we can >>>> understand and fix this regression the better... >>>> >>>> On 10 August 2017 at 01:28, Diana Picus via cfe-commits >>>> wrote: >>>>> >>>>> Hi Vassil, >>>>> >>>>> My build is in progress, but since it's a full build it's probably >>>>> going to take another couple of hours to complete. I'll let you know >>>>> when it's done. >>>>> >>>>> Thanks, >>>>> Diana >>>>> >>>>> On 10 August 2017 at 10:09, Vassil Vassilev >>>>> wrote: >>>>>> It looks like I can not reproduce it on osx (non-arm)... :( >>>>>>> On 09/08/17 22:54, Diana Picus wrote: >>>>>>> >>>>>>> Reverting this also fixed the selfhost bots: >>>>>>> >>>>>>> >>>>>>> http://lab.llvm.org:8011/builders/clang-cmake-thumbv7-a15-full-sh/builds/2142 >>>>>>> >>>>>>> >>>>>>> http://lab.llvm.org:8011/builders/clang-cmake-armv7-a15-selfhost/builds/2309 >>>>>>> >>>>>>> >>>>>>> http://lab.llvm.org:8011/builders/clang-cmake-armv7-a15-selfhost-neon/builds/1819 >>>>>>> >>>>>>> I'm afraid the logs for those look even less helpful. >>>>>>> >>>>>>>> On 9 August 2017 at 16:17, Diana Picus wrote: >>>>>>>> >>>>>>>> Hi, >>>>>>>> >>>>>>>> See attached. FWIW, when I ran this on a very similar machine, I got >>>>>>>> 194 failures, all of which went away after reverting. So there might >>>>>>>> be something fishy going on. >>>>>>>> >>>>>>>> Regards, >>>>>>>> Diana >>>>>>>> >>>>>>>> On 9 August 2017 at 15:02, Vassil Vassilev >>>>>>>> wrote: >>>>>>>>> >>>>>>>>> Hi Diana, >>>>>>>>> >>>>>>>>> It seems the service is down. Could you send us the details of the >>>>>>>>> failures (incl stack traces if any) >>>>>>>>> >>>>>>>>> Many thanks, >>>>>>>>> Vassil >>>>>>>>> >>>>>>>>>> On 09/08/17 15:27, Diana Picus via cfe-commits wrote: >>
Re: r310401 - PR19668, PR23034: Fix handling of move constructors and deleted copy
Hi, Strangely enough, it turns out that if I run Asan-armhf-with-calls-Noinst-Test on the command line it fails, although it doesn't fail when run with lit. I've attached the stack trace from gdb. It looks like some trouble passing down va_arg parameters, but I haven't looked into too much details. The segfault happens when we try to do a ldrb r3, [r0, r1], with r1 set to 0 by the current function and r0 passed down from the caller. I'm not sure if this is the exact same problem as the other tests, but feel free to have a look at that code. Meanwhile, I've removed some clutter from Asan-armhf-with-calls-Test (which is the original failure that we were seeing) and left only one failing test that seemed small enough. I'll try to look at the disassembly before/after the patch and maybe even run valgrind on it (running it on the original binary naturally takes forever). Let me know if there's anything else I could try. I can also send you disassembly or even LLVM IR for the Asan-armhf-with-calls-Noinst-Test if you think it helps. Cheers, Diana On 11 August 2017 at 15:34, Diana Picus wrote: > Well, these are ASAN tests, I'm not sure how that would interact with > Valgrind. > Anyway, I'll try to reproduce the environment, I'm guessing it would > be best to catch this in gdb so I can actually see what's going on. > > On 11 August 2017 at 15:21, Vassil Vassilev wrote: >> That's really strange. It looks like some random behavior. Did you run some >> memory checker like valgrind? >> >> Do the environment provided by the test runner and yours match? >> >> Sent from my phone. Please excuse my brevity. >> >>> On 11 Aug 2017, at 15:58, Diana Picus wrote: >>> >>> Hi again, >>> >>> I finally got the debug build, but unfortunately the stack traces that >>> the tests print look the same. My suspicion is that this is because >>> the addresses printed by the tests are funny (i.e. odd numbers instead >>> of divisible by 4). I tried to follow those addresses in an objdump of >>> the executable, but I didn't have much success since most of them >>> weren't really pointing to call instructions. >>> >>> When I try to run the tests manually in the shell or in gdb, they pass. >>> >>> I'm not sure what else to try. Thoughts? >>> >>> Thanks, >>> Diana >>> >>>> On 11 August 2017 at 11:14, Diana Picus wrote: >>>> Hi guys, >>>> >>>> I'm SO sorry about the delays. I've been having all sorts of trouble >>>> getting that debug build on the board (from ld running out of memory >>>> to the board just crashing on me, in which case I need to ask someone >>>> else to reboot it because I can't power cycle it remotely). I can >>>> assure you this is one of my top priorities, I'll get those stack >>>> traces as soon as I can. >>>> >>>> Thanks for your patience and sorry again, >>>> Diana >>>> >>>>> On 10 August 2017 at 22:55, Richard Smith wrote: >>>>> Any news on this? We want this change in Clang 5, so the sooner we can >>>>> understand and fix this regression the better... >>>>> >>>>> On 10 August 2017 at 01:28, Diana Picus via cfe-commits >>>>> wrote: >>>>>> >>>>>> Hi Vassil, >>>>>> >>>>>> My build is in progress, but since it's a full build it's probably >>>>>> going to take another couple of hours to complete. I'll let you know >>>>>> when it's done. >>>>>> >>>>>> Thanks, >>>>>> Diana >>>>>> >>>>>> On 10 August 2017 at 10:09, Vassil Vassilev >>>>>> wrote: >>>>>>> It looks like I can not reproduce it on osx (non-arm)... :( >>>>>>>> On 09/08/17 22:54, Diana Picus wrote: >>>>>>>> >>>>>>>> Reverting this also fixed the selfhost bots: >>>>>>>> >>>>>>>> >>>>>>>> http://lab.llvm.org:8011/builders/clang-cmake-thumbv7-a15-full-sh/builds/2142 >>>>>>>> >>>>>>>> >>>>>>>> http://lab.llvm.org:8011/builders/clang-cmake-armv7-a15-selfhost/builds/2309 >>>>>>>> >>>>>>>> >>>>>>>> http://lab.llvm.org:8011/builders/clang-cmake-armv7-a15-selfhost-neon/builds/
Re: r310401 - PR19668, PR23034: Fix handling of move constructors and deleted copy
Also if you want the disassembly for the whole test executable (with just that test in it): https://goo.gl/pjULbN It's 177MB though. On 14 August 2017 at 14:04, Diana Picus wrote: > See attached. > > On 14 August 2017 at 13:30, Vassil Vassilev wrote: >> On 14/08/17 11:27, Diana Picus wrote: >>> >>> Hi, >>> >>> Strangely enough, it turns out that if I run >>> Asan-armhf-with-calls-Noinst-Test on the command line it fails, >>> although it doesn't fail when run with lit. I've attached the stack >>> trace from gdb. It looks like some trouble passing down va_arg >>> parameters, but I haven't looked into too much details. The segfault >>> happens when we try to do a ldrb r3, [r0, r1], with r1 set to 0 by >>> the current function and r0 passed down from the caller. I'm not sure >>> if this is the exact same problem as the other tests, but feel free to >>> have a look at that code. >>> >>> Meanwhile, I've removed some clutter from Asan-armhf-with-calls-Test >>> (which is the original failure that we were seeing) and left only one >>> failing test that seemed small enough. I'll try to look at the >>> disassembly before/after the patch and maybe even run valgrind on it >>> (running it on the original binary naturally takes forever). >>> >>> Let me know if there's anything else I could try. I can also send you >>> disassembly or even LLVM IR for the Asan-armhf-with-calls-Noinst-Test >>> if you think it helps. >> >> disassembly and LLVM will greatly help as well. >> >>> >>> Cheers, >>> Diana >>> >>> On 11 August 2017 at 15:34, Diana Picus wrote: >>>> >>>> Well, these are ASAN tests, I'm not sure how that would interact with >>>> Valgrind. >>>> Anyway, I'll try to reproduce the environment, I'm guessing it would >>>> be best to catch this in gdb so I can actually see what's going on. >>>> >>>> On 11 August 2017 at 15:21, Vassil Vassilev >>>> wrote: >>>>> >>>>> That's really strange. It looks like some random behavior. Did you run >>>>> some memory checker like valgrind? >>>>> >>>>> Do the environment provided by the test runner and yours match? >>>>> >>>>> Sent from my phone. Please excuse my brevity. >>>>> >>>>>> On 11 Aug 2017, at 15:58, Diana Picus wrote: >>>>>> >>>>>> Hi again, >>>>>> >>>>>> I finally got the debug build, but unfortunately the stack traces that >>>>>> the tests print look the same. My suspicion is that this is because >>>>>> the addresses printed by the tests are funny (i.e. odd numbers instead >>>>>> of divisible by 4). I tried to follow those addresses in an objdump of >>>>>> the executable, but I didn't have much success since most of them >>>>>> weren't really pointing to call instructions. >>>>>> >>>>>> When I try to run the tests manually in the shell or in gdb, they pass. >>>>>> >>>>>> I'm not sure what else to try. Thoughts? >>>>>> >>>>>> Thanks, >>>>>> Diana >>>>>> >>>>>>> On 11 August 2017 at 11:14, Diana Picus >>>>>>> wrote: >>>>>>> Hi guys, >>>>>>> >>>>>>> I'm SO sorry about the delays. I've been having all sorts of trouble >>>>>>> getting that debug build on the board (from ld running out of memory >>>>>>> to the board just crashing on me, in which case I need to ask someone >>>>>>> else to reboot it because I can't power cycle it remotely). I can >>>>>>> assure you this is one of my top priorities, I'll get those stack >>>>>>> traces as soon as I can. >>>>>>> >>>>>>> Thanks for your patience and sorry again, >>>>>>> Diana >>>>>>> >>>>>>>> On 10 August 2017 at 22:55, Richard Smith >>>>>>>> wrote: >>>>>>>> Any news on this? We want this change in Clang 5, so the sooner we >>>>>>>> can >>>>>>>> understand and fix this regression the better... >>>>>&
Re: r310401 - PR19668, PR23034: Fix handling of move constructors and deleted copy
:58, Diana Picus >>>>>>>> wrote: >>>>>>>> >>>>>>>> Hi again, >>>>>>>> >>>>>>>> I finally got the debug build, but unfortunately the stack traces >>>>>>>> that >>>>>>>> the tests print look the same. My suspicion is that this is because >>>>>>>> the addresses printed by the tests are funny (i.e. odd numbers >>>>>>>> instead >>>>>>>> of divisible by 4). I tried to follow those addresses in an objdump >>>>>>>> of >>>>>>>> the executable, but I didn't have much success since most of them >>>>>>>> weren't really pointing to call instructions. >>>>>>>> >>>>>>>> When I try to run the tests manually in the shell or in gdb, they >>>>>>>> pass. >>>>>>>> >>>>>>>> I'm not sure what else to try. Thoughts? >>>>>>>> >>>>>>>> Thanks, >>>>>>>> Diana >>>>>>>> >>>>>>>>> On 11 August 2017 at 11:14, Diana Picus >>>>>>>>> wrote: >>>>>>>>> Hi guys, >>>>>>>>> >>>>>>>>> I'm SO sorry about the delays. I've been having all sorts of >>>>>>>>> trouble >>>>>>>>> getting that debug build on the board (from ld running out of >>>>>>>>> memory >>>>>>>>> to the board just crashing on me, in which case I need to ask >>>>>>>>> someone >>>>>>>>> else to reboot it because I can't power cycle it remotely). I can >>>>>>>>> assure you this is one of my top priorities, I'll get those stack >>>>>>>>> traces as soon as I can. >>>>>>>>> >>>>>>>>> Thanks for your patience and sorry again, >>>>>>>>> Diana >>>>>>>>> >>>>>>>>>> On 10 August 2017 at 22:55, Richard Smith >>>>>>>>>> wrote: >>>>>>>>>> Any news on this? We want this change in Clang 5, so the sooner we >>>>>>>>>> can >>>>>>>>>> understand and fix this regression the better... >>>>>>>>>> >>>>>>>>>> On 10 August 2017 at 01:28, Diana Picus via cfe-commits >>>>>>>>>> wrote: >>>>>>>>>>> >>>>>>>>>>> Hi Vassil, >>>>>>>>>>> >>>>>>>>>>> My build is in progress, but since it's a full build it's >>>>>>>>>>> probably >>>>>>>>>>> going to take another couple of hours to complete. I'll let you >>>>>>>>>>> know >>>>>>>>>>> when it's done. >>>>>>>>>>> >>>>>>>>>>> Thanks, >>>>>>>>>>> Diana >>>>>>>>>>> >>>>>>>>>>> On 10 August 2017 at 10:09, Vassil Vassilev >>>>>>>>>>> >>>>>>>>>>> wrote: >>>>>>>>>>>> >>>>>>>>>>>> It looks like I can not reproduce it on osx (non-arm)... :( >>>>>>>>>>>>> >>>>>>>>>>>>> On 09/08/17 22:54, Diana Picus wrote: >>>>>>>>>>>>> >>>>>>>>>>>>> Reverting this also fixed the selfhost bots: >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> http://lab.llvm.org:8011/builders/clang-cmake-thumbv7-a15-full-sh/builds/2142 >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> http://lab.llvm.org:8011/builders/clan
Re: r310401 - PR19668, PR23034: Fix handling of move constructors and deleted copy
rmhf-with-calls-Noinst-Test >>>>>> if you think it helps. >>>>> >>>>>disassembly and LLVM will greatly help as well. >>>>> >>>>>> Cheers, >>>>>> Diana >>>>>> >>>>>> On 11 August 2017 at 15:34, Diana Picus wrote: >>>>>>> >>>>>>> Well, these are ASAN tests, I'm not sure how that would interact with >>>>>>> Valgrind. >>>>>>> Anyway, I'll try to reproduce the environment, I'm guessing it would >>>>>>> be best to catch this in gdb so I can actually see what's going on. >>>>>>> >>>>>>> On 11 August 2017 at 15:21, Vassil Vassilev >>>>>>> wrote: >>>>>>>> >>>>>>>> That's really strange. It looks like some random behavior. Did you >>>>>>>> run >>>>>>>> some memory checker like valgrind? >>>>>>>> >>>>>>>> Do the environment provided by the test runner and yours match? >>>>>>>> >>>>>>>> Sent from my phone. Please excuse my brevity. >>>>>>>> >>>>>>>>> On 11 Aug 2017, at 15:58, Diana Picus >>>>>>>>> wrote: >>>>>>>>> >>>>>>>>> Hi again, >>>>>>>>> >>>>>>>>> I finally got the debug build, but unfortunately the stack traces >>>>>>>>> that >>>>>>>>> the tests print look the same. My suspicion is that this is because >>>>>>>>> the addresses printed by the tests are funny (i.e. odd numbers >>>>>>>>> instead >>>>>>>>> of divisible by 4). I tried to follow those addresses in an objdump >>>>>>>>> of >>>>>>>>> the executable, but I didn't have much success since most of them >>>>>>>>> weren't really pointing to call instructions. >>>>>>>>> >>>>>>>>> When I try to run the tests manually in the shell or in gdb, they >>>>>>>>> pass. >>>>>>>>> >>>>>>>>> I'm not sure what else to try. Thoughts? >>>>>>>>> >>>>>>>>> Thanks, >>>>>>>>> Diana >>>>>>>>> >>>>>>>>>> On 11 August 2017 at 11:14, Diana Picus >>>>>>>>>> wrote: >>>>>>>>>> Hi guys, >>>>>>>>>> >>>>>>>>>> I'm SO sorry about the delays. I've been having all sorts of >>>>>>>>>> trouble >>>>>>>>>> getting that debug build on the board (from ld running out of >>>>>>>>>> memory >>>>>>>>>> to the board just crashing on me, in which case I need to ask >>>>>>>>>> someone >>>>>>>>>> else to reboot it because I can't power cycle it remotely). I can >>>>>>>>>> assure you this is one of my top priorities, I'll get those stack >>>>>>>>>> traces as soon as I can. >>>>>>>>>> >>>>>>>>>> Thanks for your patience and sorry again, >>>>>>>>>> Diana >>>>>>>>>> >>>>>>>>>>> On 10 August 2017 at 22:55, Richard Smith >>>>>>>>>>> wrote: >>>>>>>>>>> Any news on this? We want this change in Clang 5, so the sooner we >>>>>>>>>>> can >>>>>>>>>>> understand and fix this regression the better... >>>>>>>>>>> >>>>>>>>>>> On 10 August 2017 at 01:28, Diana Picus via cfe-commits >>>>>>>>>>> wrote: >>>>>>>>>>>> >>>>>>>>>>>> Hi Vassil, >>>>>>>>>>>> >>>>>>>>>>>> My build is in progress, but since it's a full build it's >>>>>>>>>>>> probably >>>>>>>>>&g
Re: r310401 - PR19668, PR23034: Fix handling of move constructors and deleted copy
t;>>>>>> Cheers, >>>>>>> Diana >>>>>>> >>>>>>> On 11 August 2017 at 15:34, Diana Picus >>>>>>> wrote: >>>>>>>> >>>>>>>> Well, these are ASAN tests, I'm not sure how that would interact >>>>>>>> with >>>>>>>> Valgrind. >>>>>>>> Anyway, I'll try to reproduce the environment, I'm guessing it would >>>>>>>> be best to catch this in gdb so I can actually see what's going on. >>>>>>>> >>>>>>>> On 11 August 2017 at 15:21, Vassil Vassilev >>>>>>>> wrote: >>>>>>>>> >>>>>>>>> That's really strange. It looks like some random behavior. Did you >>>>>>>>> run >>>>>>>>> some memory checker like valgrind? >>>>>>>>> >>>>>>>>> Do the environment provided by the test runner and yours match? >>>>>>>>> >>>>>>>>> Sent from my phone. Please excuse my brevity. >>>>>>>>> >>>>>>>>>> On 11 Aug 2017, at 15:58, Diana Picus >>>>>>>>>> wrote: >>>>>>>>>> >>>>>>>>>> Hi again, >>>>>>>>>> >>>>>>>>>> I finally got the debug build, but unfortunately the stack traces >>>>>>>>>> that >>>>>>>>>> the tests print look the same. My suspicion is that this is >>>>>>>>>> because >>>>>>>>>> the addresses printed by the tests are funny (i.e. odd numbers >>>>>>>>>> instead >>>>>>>>>> of divisible by 4). I tried to follow those addresses in an >>>>>>>>>> objdump >>>>>>>>>> of >>>>>>>>>> the executable, but I didn't have much success since most of them >>>>>>>>>> weren't really pointing to call instructions. >>>>>>>>>> >>>>>>>>>> When I try to run the tests manually in the shell or in gdb, they >>>>>>>>>> pass. >>>>>>>>>> >>>>>>>>>> I'm not sure what else to try. Thoughts? >>>>>>>>>> >>>>>>>>>> Thanks, >>>>>>>>>> Diana >>>>>>>>>> >>>>>>>>>>> On 11 August 2017 at 11:14, Diana Picus >>>>>>>>>>> wrote: >>>>>>>>>>> Hi guys, >>>>>>>>>>> >>>>>>>>>>> I'm SO sorry about the delays. I've been having all sorts of >>>>>>>>>>> trouble >>>>>>>>>>> getting that debug build on the board (from ld running out of >>>>>>>>>>> memory >>>>>>>>>>> to the board just crashing on me, in which case I need to ask >>>>>>>>>>> someone >>>>>>>>>>> else to reboot it because I can't power cycle it remotely). I can >>>>>>>>>>> assure you this is one of my top priorities, I'll get those stack >>>>>>>>>>> traces as soon as I can. >>>>>>>>>>> >>>>>>>>>>> Thanks for your patience and sorry again, >>>>>>>>>>> Diana >>>>>>>>>>> >>>>>>>>>>>> On 10 August 2017 at 22:55, Richard Smith >>>>>>>>>>>> >>>>>>>>>>>> wrote: >>>>>>>>>>>> Any news on this? We want this change in Clang 5, so the sooner >>>>>>>>>>>> we >>>>>>>>>>>> can >>>>>>>>>>>> understand and fix this regression the better... >>>>>>>>>>>> >>>>>>>>>>>> On 10 August 2017 at 01:28, Diana Picus via cfe-commits >>>>>>>>>>>> wrote: >>>>>>>>>>>>> >>>&g
Re: r310401 - PR19668, PR23034: Fix handling of move constructors and deleted copy
On 15 August 2017 at 01:25, Richard Smith wrote: > On 14 August 2017 at 03:27, Diana Picus via cfe-commits > wrote: >> >> Hi, >> >> Strangely enough, it turns out that if I run >> Asan-armhf-with-calls-Noinst-Test on the command line it fails, >> although it doesn't fail when run with lit. > > > Looks like the crash is within the "use_colors == true" portion of > ColoredPrintf, so this would make sense if running the test within lit turns > off color support (perhaps because the output is not a terminal). > That's a good catch, it seems if I run it with --gtest-color=no it still passes, but prints some garbage at the end: [ PASSED ] 97 tests. YOU HAVE -1094542056 DISABLED F]�뀼��_8�pGD2 >> >> I've attached the stack >> trace from gdb. It looks like some trouble passing down va_arg >> parameters, but I haven't looked into too much details. The segfault >> happens when we try to do a ldrb r3, [r0, r1], with r1 set to 0 by >> the current function and r0 passed down from the caller. I'm not sure >> if this is the exact same problem as the other tests, but feel free to >> have a look at that code. > > > Have you tried running Asan-armhf-with-calls-Noinst-Test on the command line > without this patch applied? (It's possible that this is a pre-existing bug > in ARM varargs call lowering, and is unrelated to the bug we're trying to > track down. This code path performs an unrelated varargs call between a > va_start / va_end pair, which seems like quite a rare situation, and I could > easily believe there's something wrong with our lowering that allows some > portion of the outer va_list state to be clobbered in that scenario.) > It seems to work without the patch. I'm currently trying to reduce Asan-armhf-with-calls-Test and I'll get back to you with the IR or assembly files (whichever makes any difference). >> Meanwhile, I've removed some clutter from Asan-armhf-with-calls-Test >> (which is the original failure that we were seeing) and left only one >> failing test that seemed small enough. I'll try to look at the >> disassembly before/after the patch and maybe even run valgrind on it >> (running it on the original binary naturally takes forever). >> >> Let me know if there's anything else I could try. I can also send you >> disassembly or even LLVM IR for the Asan-armhf-with-calls-Noinst-Test >> if you think it helps. >> >> Cheers, >> Diana ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
Re: r310401 - PR19668, PR23034: Fix handling of move constructors and deleted copy
Ugh, I'm not sure that last email made it through. Here's the IR with -Xclang -disable-llvm-passes, at r310400 and r310401: https://goo.gl/4n84SR https://goo.gl/gxhxp9 The diff between them is small enough so I don't think there's much point in reducing it further. Hope that helps. On 15 August 2017 at 17:51, Diana Picus wrote: > Actually, I'm not sure I need to reduce it, the diff between the IR > with -Xclang -no-llvm-passes is pretty small for the version > with/without the patch. See attached. I hope this helps, it does look > like a problem with va_arg handling. > > Sorry again that this is going so slowly... > > On 15 August 2017 at 16:52, Diana Picus wrote: >> On 15 August 2017 at 01:25, Richard Smith wrote: >>> On 14 August 2017 at 03:27, Diana Picus via cfe-commits >>> wrote: >>>> >>>> Hi, >>>> >>>> Strangely enough, it turns out that if I run >>>> Asan-armhf-with-calls-Noinst-Test on the command line it fails, >>>> although it doesn't fail when run with lit. >>> >>> >>> Looks like the crash is within the "use_colors == true" portion of >>> ColoredPrintf, so this would make sense if running the test within lit turns >>> off color support (perhaps because the output is not a terminal). >>> >> >> That's a good catch, it seems if I run it with --gtest-color=no it >> still passes, but prints some garbage at the end: >> [ PASSED ] 97 tests. >> YOU HAVE -1094542056 DISABLED F]�뀼��_8�pGD2 >> >> >>>> >>>> I've attached the stack >>>> trace from gdb. It looks like some trouble passing down va_arg >>>> parameters, but I haven't looked into too much details. The segfault >>>> happens when we try to do a ldrb r3, [r0, r1], with r1 set to 0 by >>>> the current function and r0 passed down from the caller. I'm not sure >>>> if this is the exact same problem as the other tests, but feel free to >>>> have a look at that code. >>> >>> >>> Have you tried running Asan-armhf-with-calls-Noinst-Test on the command line >>> without this patch applied? (It's possible that this is a pre-existing bug >>> in ARM varargs call lowering, and is unrelated to the bug we're trying to >>> track down. This code path performs an unrelated varargs call between a >>> va_start / va_end pair, which seems like quite a rare situation, and I could >>> easily believe there's something wrong with our lowering that allows some >>> portion of the outer va_list state to be clobbered in that scenario.) >>> >> >> It seems to work without the patch. I'm currently trying to reduce >> Asan-armhf-with-calls-Test and I'll get back to you with the IR or >> assembly files (whichever makes any difference). >> >>>> Meanwhile, I've removed some clutter from Asan-armhf-with-calls-Test >>>> (which is the original failure that we were seeing) and left only one >>>> failing test that seemed small enough. I'll try to look at the >>>> disassembly before/after the patch and maybe even run valgrind on it >>>> (running it on the original binary naturally takes forever). >>>> >>>> Let me know if there's anything else I could try. I can also send you >>>> disassembly or even LLVM IR for the Asan-armhf-with-calls-Noinst-Test >>>> if you think it helps. >>>> >>>> Cheers, >>>> Diana ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] 26041e1 - Update link job for flang on windows
Author: Diana Picus Date: 2022-06-20T07:25:10Z New Revision: 26041e17006cf30e9c2d06706fe6bd3fa818e356 URL: https://github.com/llvm/llvm-project/commit/26041e17006cf30e9c2d06706fe6bd3fa818e356 DIFF: https://github.com/llvm/llvm-project/commit/26041e17006cf30e9c2d06706fe6bd3fa818e356.diff LOG: Update link job for flang on windows When linking a Fortran program, we need to add the runtime libraries to the command line. This is exactly what we do for Linux/Darwin, but the MSVC interface is slightly different (e.g. -libpath instead of -L). We also remove oldnames and libcmt, since they're not needed at the moment and they bring in more dependencies. We also pass `/subsystem:console` to the linker so it can figure out the right entry point. This is only needed for MSVC's `link.exe`. For LLD it is redundant but doesn't hurt. Differential Revision: https://reviews.llvm.org/D126291 Co-authored-by: Markus Mützel Added: Modified: clang/lib/Driver/ToolChains/CommonArgs.cpp clang/lib/Driver/ToolChains/CommonArgs.h clang/lib/Driver/ToolChains/Darwin.cpp clang/lib/Driver/ToolChains/Gnu.cpp clang/lib/Driver/ToolChains/MSVC.cpp clang/lib/Driver/ToolChains/MinGW.cpp flang/test/Driver/linker-flags.f90 Removed: diff --git a/clang/lib/Driver/ToolChains/CommonArgs.cpp b/clang/lib/Driver/ToolChains/CommonArgs.cpp index e2437e5787fd7..d297b808b567f 100644 --- a/clang/lib/Driver/ToolChains/CommonArgs.cpp +++ b/clang/lib/Driver/ToolChains/CommonArgs.cpp @@ -739,15 +739,28 @@ bool tools::addOpenMPRuntime(ArgStringList &CmdArgs, const ToolChain &TC, return true; } -void tools::addFortranRuntimeLibs(llvm::opt::ArgStringList &CmdArgs) { - CmdArgs.push_back("-lFortran_main"); - CmdArgs.push_back("-lFortranRuntime"); - CmdArgs.push_back("-lFortranDecimal"); +void tools::addFortranRuntimeLibs(const ToolChain &TC, + llvm::opt::ArgStringList &CmdArgs) { + if (TC.getTriple().isKnownWindowsMSVCEnvironment()) { +CmdArgs.push_back("Fortran_main.lib"); +CmdArgs.push_back("FortranRuntime.lib"); +CmdArgs.push_back("FortranDecimal.lib"); + } else { +CmdArgs.push_back("-lFortran_main"); +CmdArgs.push_back("-lFortranRuntime"); +CmdArgs.push_back("-lFortranDecimal"); + } } void tools::addFortranRuntimeLibraryPath(const ToolChain &TC, const llvm::opt::ArgList &Args, ArgStringList &CmdArgs) { + // NOTE: Generating executables by Flang is considered an "experimental" + // feature and hence this is guarded with a command line option. + // TODO: Make this work unconditionally once Flang is mature enough. + if (!Args.hasArg(options::OPT_flang_experimental_exec)) +return; + // Default to the /../lib directory. This works fine on the // platforms that we have tested so far. We will probably have to re-fine // this in the future. In particular, on some platforms, we may need to use @@ -755,7 +768,10 @@ void tools::addFortranRuntimeLibraryPath(const ToolChain &TC, SmallString<256> DefaultLibPath = llvm::sys::path::parent_path(TC.getDriver().Dir); llvm::sys::path::append(DefaultLibPath, "lib"); - CmdArgs.push_back(Args.MakeArgString("-L" + DefaultLibPath)); + if (TC.getTriple().isKnownWindowsMSVCEnvironment()) +CmdArgs.push_back(Args.MakeArgString("-libpath:" + DefaultLibPath)); + else +CmdArgs.push_back(Args.MakeArgString("-L" + DefaultLibPath)); } static void addSanitizerRuntime(const ToolChain &TC, const ArgList &Args, diff --git a/clang/lib/Driver/ToolChains/CommonArgs.h b/clang/lib/Driver/ToolChains/CommonArgs.h index 3052cbf1a3c38..8e62af70ff7f7 100644 --- a/clang/lib/Driver/ToolChains/CommonArgs.h +++ b/clang/lib/Driver/ToolChains/CommonArgs.h @@ -121,7 +121,8 @@ bool addOpenMPRuntime(llvm::opt::ArgStringList &CmdArgs, const ToolChain &TC, bool IsOffloadingHost = false, bool GompNeedsRT = false); /// Adds Fortran runtime libraries to \p CmdArgs. -void addFortranRuntimeLibs(llvm::opt::ArgStringList &CmdArgs); +void addFortranRuntimeLibs(const ToolChain &TC, + llvm::opt::ArgStringList &CmdArgs); /// Adds the path for the Fortran runtime libraries to \p CmdArgs. void addFortranRuntimeLibraryPath(const ToolChain &TC, diff --git a/clang/lib/Driver/ToolChains/Darwin.cpp b/clang/lib/Driver/ToolChains/Darwin.cpp index 5d98a6497827f..0a8a9c6eb6ff0 100644 --- a/clang/lib/Driver/ToolChains/Darwin.cpp +++ b/clang/lib/Driver/ToolChains/Darwin.cpp @@ -637,14 +637,9 @@ void darwin::Linker::ConstructJob(Compilation &C, const JobAction &JA, // Additional linker set-up and flags for Fortran. This is required in order // to generate executables. - // - // NOTE: Generating executables by Flang is considered an "experimental" - // feature and hence this is guarded
Re: [PATCH] D23528: [OpenMP] Sema and parsing for 'teams distribute simd' pragma
Hi, I had to revert this (r279045) because it breaks some of our buildbots (e.g. clang-cmake-aarch64-quick, clang-x86_64-linux-selfhost-modules). The error is in OpenMP/teams_distribute_simd_ast_print.cpp: clang: /home/buildslave/buildslave/clang-cmake-aarch64-quick/llvm/include/llvm/ADT/DenseMap.h:527: bool llvm::DenseMapBase::LookupBucketFor(const LookupKeyT&, const BucketT*&) const [with LookupKeyT = clang::Stmt*; DerivedT = llvm::DenseMap; KeyT = clang::Stmt*; ValueT = long unsigned int; KeyInfoT = llvm::DenseMapInfo; BucketT = llvm::detail::DenseMapPair]: Assertion `!KeyInfoT::isEqual(Val, EmptyKey) && !KeyInfoT::isEqual(Val, TombstoneKey) && "Empty/Tombstone value shouldn't be inserted into map!"' failed. On 18 August 2016 at 02:21, Phabricator via cfe-commits < cfe-commits@lists.llvm.org> wrote: > This revision was automatically updated to reflect the committed changes. > Closed by commit rL279003: [OpenMP] Sema and parsing for 'teams distribute > simd’ pragma (authored by kli). > > Changed prior to commit: > https://reviews.llvm.org/D23528?vs=68216&id=68448#toc > > Repository: > rL LLVM > > https://reviews.llvm.org/D23528 > > Files: > cfe/trunk/include/clang-c/Index.h > cfe/trunk/include/clang/AST/RecursiveASTVisitor.h > cfe/trunk/include/clang/AST/StmtOpenMP.h > cfe/trunk/include/clang/Basic/OpenMPKinds.def > cfe/trunk/include/clang/Basic/StmtNodes.td > cfe/trunk/include/clang/Sema/Sema.h > cfe/trunk/include/clang/Serialization/ASTBitCodes.h > cfe/trunk/lib/AST/StmtOpenMP.cpp > cfe/trunk/lib/AST/StmtPrinter.cpp > cfe/trunk/lib/AST/StmtProfile.cpp > cfe/trunk/lib/Basic/OpenMPKinds.cpp > cfe/trunk/lib/CodeGen/CGStmt.cpp > cfe/trunk/lib/CodeGen/CGStmtOpenMP.cpp > cfe/trunk/lib/CodeGen/CodeGenFunction.h > cfe/trunk/lib/Parse/ParseOpenMP.cpp > cfe/trunk/lib/Sema/SemaOpenMP.cpp > cfe/trunk/lib/Sema/TreeTransform.h > cfe/trunk/lib/Serialization/ASTReaderStmt.cpp > cfe/trunk/lib/Serialization/ASTWriterStmt.cpp > cfe/trunk/lib/StaticAnalyzer/Core/ExprEngine.cpp > cfe/trunk/test/OpenMP/nesting_of_regions.cpp > cfe/trunk/test/OpenMP/teams_distribute_simd_aligned_messages.cpp > cfe/trunk/test/OpenMP/teams_distribute_simd_ast_print.cpp > cfe/trunk/test/OpenMP/teams_distribute_simd_collapse_messages.cpp > cfe/trunk/test/OpenMP/teams_distribute_simd_default_messages.cpp > cfe/trunk/test/OpenMP/teams_distribute_simd_dist_schedule_messages.cpp > cfe/trunk/test/OpenMP/teams_distribute_simd_firstprivate_messages.cpp > cfe/trunk/test/OpenMP/teams_distribute_simd_lastprivate_messages.cpp > cfe/trunk/test/OpenMP/teams_distribute_simd_linear_messages.cpp > cfe/trunk/test/OpenMP/teams_distribute_simd_loop_messages.cpp > cfe/trunk/test/OpenMP/teams_distribute_simd_messages.cpp > cfe/trunk/test/OpenMP/teams_distribute_simd_num_teams_messages.cpp > cfe/trunk/test/OpenMP/teams_distribute_simd_private_messages.cpp > cfe/trunk/test/OpenMP/teams_distribute_simd_reduction_messages.cpp > cfe/trunk/test/OpenMP/teams_distribute_simd_safelen_messages.cpp > cfe/trunk/test/OpenMP/teams_distribute_simd_shared_messages.cpp > cfe/trunk/test/OpenMP/teams_distribute_simd_simdlen_messages.cpp > cfe/trunk/test/OpenMP/teams_distribute_simd_thread_limit_messages.cpp > cfe/trunk/tools/libclang/CIndex.cpp > cfe/trunk/tools/libclang/CXCursor.cpp > > > ___ > cfe-commits mailing list > cfe-commits@lists.llvm.org > http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits > > ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
Re: r280575 - Add plumbing for new attribute type "Microsoft".
Hi Nico, One of our thumb bots [1] is having issues building lately and it looks like it might be related to one of the commits in this series. Could you please have a look? Thanks, Diana [1] http://lab.llvm.org:8011/builders/clang-cmake-thumbv7-a15/builds/15286/steps/build%20stage%201/logs/stdio On 3 September 2016 at 05:55, Nico Weber via cfe-commits wrote: > Author: nico > Date: Fri Sep 2 21:55:10 2016 > New Revision: 280575 > > URL: http://llvm.org/viewvc/llvm-project?rev=280575&view=rev > Log: > Add plumbing for new attribute type "Microsoft". > > This is for attributes in []-delimited lists preceding a class, like e.g. > `[uuid("...")] class Foo {};` Not used by anything yet, so no behavior > change. > Part of https://reviews.llvm.org/D23895 > > Modified: > cfe/trunk/include/clang/Basic/Attributes.h > cfe/trunk/include/clang/Sema/AttributeList.h > cfe/trunk/utils/TableGen/ClangAttrEmitter.cpp > > Modified: cfe/trunk/include/clang/Basic/Attributes.h > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/Attributes.h?rev=280575&r1=280574&r2=280575&view=diff > == > --- cfe/trunk/include/clang/Basic/Attributes.h (original) > +++ cfe/trunk/include/clang/Basic/Attributes.h Fri Sep 2 21:55:10 2016 > @@ -22,6 +22,8 @@ enum class AttrSyntax { >GNU, >/// Is the identifier known as a __declspec-style attribute? >Declspec, > + /// Is the identifier known as a [] Microsoft-style attribute? > + Microsoft, >// Is the identifier known as a C++-style attribute? >CXX, >// Is the identifier known as a pragma attribute? > > Modified: cfe/trunk/include/clang/Sema/AttributeList.h > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Sema/AttributeList.h?rev=280575&r1=280574&r2=280575&view=diff > == > --- cfe/trunk/include/clang/Sema/AttributeList.h (original) > +++ cfe/trunk/include/clang/Sema/AttributeList.h Fri Sep 2 21:55:10 2016 > @@ -101,12 +101,14 @@ public: > AS_CXX11, > /// __declspec(...) > AS_Declspec, > +/// [uuid("...")] class Foo > +AS_Microsoft, > /// __ptr16, alignas(...), etc. > AS_Keyword, > /// Context-sensitive version of a keyword attribute. > AS_ContextSensitiveKeyword, > /// #pragma ... > -AS_Pragma > +AS_Pragma, >}; > > private: > @@ -369,6 +371,7 @@ public: >} > >bool isDeclspecAttribute() const { return SyntaxUsed == AS_Declspec; } > + bool isMicrosoftAttribute() const { return SyntaxUsed == AS_Microsoft; } >bool isCXX11Attribute() const { > return SyntaxUsed == AS_CXX11 || isAlignasAttribute(); >} > > Modified: cfe/trunk/utils/TableGen/ClangAttrEmitter.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/utils/TableGen/ClangAttrEmitter.cpp?rev=280575&r1=280574&r2=280575&view=diff > == > --- cfe/trunk/utils/TableGen/ClangAttrEmitter.cpp (original) > +++ cfe/trunk/utils/TableGen/ClangAttrEmitter.cpp Fri Sep 2 21:55:10 2016 > @@ -1312,6 +1312,9 @@ writePrettyPrintFunction(Record &R, > } else if (Variety == "Declspec") { >Prefix = " __declspec("; >Suffix = ")"; > +} else if (Variety == "Microsoft") { > + Prefix = "["; > + Suffix = "]"; > } else if (Variety == "Keyword") { >Prefix = " "; >Suffix = ""; > @@ -2295,7 +2298,7 @@ void EmitClangAttrHasAttrImpl(RecordKeep >// Separate all of the attributes out into four group: generic, C++11, GNU, >// and declspecs. Then generate a big switch statement for each of them. >std::vector Attrs = Records.getAllDerivedDefinitions("Attr"); > - std::vector Declspec, GNU, Pragma; > + std::vector Declspec, Microsoft, GNU, Pragma; >std::map> CXX; > >// Walk over the list of all attributes, and split them out based on the > @@ -2308,6 +2311,8 @@ void EmitClangAttrHasAttrImpl(RecordKeep > GNU.push_back(R); >else if (Variety == "Declspec") > Declspec.push_back(R); > + else if (Variety == "Microsoft") > +Microsoft.push_back(R); >else if (Variety == "CXX11") > CXX[SI.nameSpace()].push_back(R); >else if (Variety == "Pragma") > @@ -2323,6 +2328,9 @@ void EmitClangAttrHasAttrImpl(RecordKeep >OS << "case AttrSyntax::Declspec:\n"; >OS << " return llvm::StringSwitch(Name)\n"; >GenerateHasAttrSpellingStringSwitch(Declspec, OS, "Declspec"); > + OS << "case AttrSyntax::Microsoft:\n"; > + OS << " return llvm::StringSwitch(Name)\n"; > + GenerateHasAttrSpellingStringSwitch(Microsoft, OS, "Microsoft"); >OS << "case AttrSyntax::Pragma:\n"; >OS << " return llvm::StringSwitch(Name)\n"; >GenerateHasAttrSpellingStringSwitch(Pragma, OS, "Pragma"); > @@ -2361,8 +2369,9 @@ void EmitClangAttrSpellingListIndex(Reco >
Re: r280575 - Add plumbing for new attribute type "Microsoft".
Scratch that, apparently it fixed itself after I removed the build directory and restarted the bot. Sorry about the noise. Diana On 7 September 2016 at 11:10, Diana Picus wrote: > Hi Nico, > > One of our thumb bots [1] is having issues building lately and it > looks like it might be related to one of the commits in this series. > Could you please have a look? > > Thanks, > Diana > > [1] > http://lab.llvm.org:8011/builders/clang-cmake-thumbv7-a15/builds/15286/steps/build%20stage%201/logs/stdio > > On 3 September 2016 at 05:55, Nico Weber via cfe-commits > wrote: >> Author: nico >> Date: Fri Sep 2 21:55:10 2016 >> New Revision: 280575 >> >> URL: http://llvm.org/viewvc/llvm-project?rev=280575&view=rev >> Log: >> Add plumbing for new attribute type "Microsoft". >> >> This is for attributes in []-delimited lists preceding a class, like e.g. >> `[uuid("...")] class Foo {};` Not used by anything yet, so no behavior >> change. >> Part of https://reviews.llvm.org/D23895 >> >> Modified: >> cfe/trunk/include/clang/Basic/Attributes.h >> cfe/trunk/include/clang/Sema/AttributeList.h >> cfe/trunk/utils/TableGen/ClangAttrEmitter.cpp >> >> Modified: cfe/trunk/include/clang/Basic/Attributes.h >> URL: >> http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/Attributes.h?rev=280575&r1=280574&r2=280575&view=diff >> == >> --- cfe/trunk/include/clang/Basic/Attributes.h (original) >> +++ cfe/trunk/include/clang/Basic/Attributes.h Fri Sep 2 21:55:10 2016 >> @@ -22,6 +22,8 @@ enum class AttrSyntax { >>GNU, >>/// Is the identifier known as a __declspec-style attribute? >>Declspec, >> + /// Is the identifier known as a [] Microsoft-style attribute? >> + Microsoft, >>// Is the identifier known as a C++-style attribute? >>CXX, >>// Is the identifier known as a pragma attribute? >> >> Modified: cfe/trunk/include/clang/Sema/AttributeList.h >> URL: >> http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Sema/AttributeList.h?rev=280575&r1=280574&r2=280575&view=diff >> == >> --- cfe/trunk/include/clang/Sema/AttributeList.h (original) >> +++ cfe/trunk/include/clang/Sema/AttributeList.h Fri Sep 2 21:55:10 2016 >> @@ -101,12 +101,14 @@ public: >> AS_CXX11, >> /// __declspec(...) >> AS_Declspec, >> +/// [uuid("...")] class Foo >> +AS_Microsoft, >> /// __ptr16, alignas(...), etc. >> AS_Keyword, >> /// Context-sensitive version of a keyword attribute. >> AS_ContextSensitiveKeyword, >> /// #pragma ... >> -AS_Pragma >> +AS_Pragma, >>}; >> >> private: >> @@ -369,6 +371,7 @@ public: >>} >> >>bool isDeclspecAttribute() const { return SyntaxUsed == AS_Declspec; } >> + bool isMicrosoftAttribute() const { return SyntaxUsed == AS_Microsoft; } >>bool isCXX11Attribute() const { >> return SyntaxUsed == AS_CXX11 || isAlignasAttribute(); >>} >> >> Modified: cfe/trunk/utils/TableGen/ClangAttrEmitter.cpp >> URL: >> http://llvm.org/viewvc/llvm-project/cfe/trunk/utils/TableGen/ClangAttrEmitter.cpp?rev=280575&r1=280574&r2=280575&view=diff >> == >> --- cfe/trunk/utils/TableGen/ClangAttrEmitter.cpp (original) >> +++ cfe/trunk/utils/TableGen/ClangAttrEmitter.cpp Fri Sep 2 21:55:10 2016 >> @@ -1312,6 +1312,9 @@ writePrettyPrintFunction(Record &R, >> } else if (Variety == "Declspec") { >>Prefix = " __declspec("; >>Suffix = ")"; >> +} else if (Variety == "Microsoft") { >> + Prefix = "["; >> + Suffix = "]"; >> } else if (Variety == "Keyword") { >>Prefix = " "; >>Suffix = ""; >> @@ -2295,7 +2298,7 @@ void EmitClangAttrHasAttrImpl(RecordKeep >>// Separate all of the attributes out into four group: generic, C++11, >> GNU, >>// and declspecs. Then generate a big switch statement for each of them. >>std::vector Attrs = Records.getAllDerivedDefinitions("Attr"); >> - std::vector Declspec, GNU, Pragma; >> + std::vector Declspec, Microsoft, GNU, Pragma; >>std::map> CXX; >> >>// Walk over the list of all attributes, and split them out based on the >> @@ -2308,6 +2311,8 @@ void EmitClangAttrHasAttrImpl(RecordKeep >> GNU.push_back(R); >>else if (Variety == "Declspec") >> Declspec.push_back(R); >> + else if (Variety == "Microsoft") >> +Microsoft.push_back(R); >>else if (Variety == "CXX11") >> CXX[SI.nameSpace()].push_back(R); >>else if (Variety == "Pragma") >> @@ -2323,6 +2328,9 @@ void EmitClangAttrHasAttrImpl(RecordKeep >>OS << "case AttrSyntax::Declspec:\n"; >>OS << " return llvm::StringSwitch(Name)\n"; >>GenerateHasAttrSpellingStringSwitch(Declspec, OS, "Declspec"); >> + OS << "case AttrSyntax::Microsoft:\n"; >> + OS << " return llvm::StringSwitch(Na
Re: [PATCH] D24245: [ARM] ARM-specific attributes should be accepted for big-endian
rovka added a subscriber: rovka. rovka accepted this revision. rovka added a reviewer: rovka. rovka added a comment. This revision is now accepted and ready to land. Looks like a sensible thing to do. Repository: rL LLVM https://reviews.llvm.org/D24245 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
r293026 - Try to fix test from r293004
Author: rovka Date: Wed Jan 25 00:23:50 2017 New Revision: 293026 URL: http://llvm.org/viewvc/llvm-project?rev=293026&view=rev Log: Try to fix test from r293004 This test broke on a lot of non-x86 buildbots with "unknowm CPU" errors. I don't see anything platform-specific about this test, and it seems to work fine on ARM if we just remove the -triple i686 flags from the run line. Modified: cfe/trunk/test/Frontend/preprocessed-input.c Modified: cfe/trunk/test/Frontend/preprocessed-input.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Frontend/preprocessed-input.c?rev=293026&r1=293025&r2=293026&view=diff == --- cfe/trunk/test/Frontend/preprocessed-input.c (original) +++ cfe/trunk/test/Frontend/preprocessed-input.c Wed Jan 25 00:23:50 2017 @@ -1,4 +1,4 @@ // RUN: %clang -E -o %t.i %s -// RUN: %clang -Xclang -triple -Xclang i686-linux-gnu -c -o %t.o %t.i +// RUN: %clang -c -o %t.o %t.i // RUN: llvm-objdump -t %t.o | FileCheck %s // CHECK: l{{ +}}df{{ +}}*ABS*{{ +}}{{0+}}{{.+}}preprocessed-input.c{{$}} ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
Re: r293004 - Use filename in linemarker when compiling preprocessed source
Hi David, Sorry, but I had to revert this (r283029) because it was breaking the non-x86 buildbots (arm, powerpc, hexagon), with errors along the lines of: error: unknown target CPU 'cortex-a8' Please recommit after you've fixed the issue. Thanks, Diana PS: I tried to fix it in r293024, but that broke on Green Dragon. I'll let you come up with a more principled fix. On 25 January 2017 at 03:55, David Callahan via cfe-commits wrote: > Author: david2050 > Date: Tue Jan 24 19:55:28 2017 > New Revision: 293004 > > URL: http://llvm.org/viewvc/llvm-project?rev=293004&view=rev > Log: > Use filename in linemarker when compiling preprocessed source > > Summary: > Clang appears to always use name as specified on the command > line, whereas gcc uses the name as specified in the linemarker at the > first line when compiling a preprocessed source. This results mismatch > between two compilers in FILE symbol table entry. This patch makes clang > to resemble gcc's behavior in finding the original source file name and > use it as an input file name. > > Even with this patch, values of FILE symbol table entry may still be > different because clang uses dirname+basename for the entry whlie gcc > uses basename only. I'll write a patch for that once this patch is > committed. > > Reviewers: dblaikie, inglorion > > Reviewed By: inglorion > > Subscribers: inglorion, aprantl, bruno > > Differential Revision: https://reviews.llvm.org/D28796 > > Added: > cfe/trunk/test/Frontend/preprocessed-input.c > Modified: > cfe/trunk/include/clang/Frontend/FrontendOptions.h > cfe/trunk/lib/Frontend/FrontendAction.cpp > > Modified: cfe/trunk/include/clang/Frontend/FrontendOptions.h > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Frontend/FrontendOptions.h?rev=293004&r1=293003&r2=293004&view=diff > == > --- cfe/trunk/include/clang/Frontend/FrontendOptions.h (original) > +++ cfe/trunk/include/clang/Frontend/FrontendOptions.h Tue Jan 24 19:55:28 > 2017 > @@ -81,7 +81,7 @@ enum InputKind { >IK_LLVM_IR > }; > > - > + > /// \brief An input file for the front end. > class FrontendInputFile { >/// \brief The file name, or "-" to read from standard input. > @@ -109,6 +109,13 @@ public: >bool isEmpty() const { return File.empty() && Buffer == nullptr; } >bool isFile() const { return !isBuffer(); } >bool isBuffer() const { return Buffer != nullptr; } > + bool isPreprocessed() const { > +return Kind == IK_PreprocessedC || > + Kind == IK_PreprocessedCXX || > + Kind == IK_PreprocessedObjC || > + Kind == IK_PreprocessedObjCXX || > + Kind == IK_PreprocessedCuda; > + } > >StringRef getFile() const { > assert(isFile()); > > Modified: cfe/trunk/lib/Frontend/FrontendAction.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/FrontendAction.cpp?rev=293004&r1=293003&r2=293004&view=diff > == > --- cfe/trunk/lib/Frontend/FrontendAction.cpp (original) > +++ cfe/trunk/lib/Frontend/FrontendAction.cpp Tue Jan 24 19:55:28 2017 > @@ -19,6 +19,7 @@ > #include "clang/Frontend/MultiplexConsumer.h" > #include "clang/Frontend/Utils.h" > #include "clang/Lex/HeaderSearch.h" > +#include "clang/Lex/LiteralSupport.h" > #include "clang/Lex/Preprocessor.h" > #include "clang/Lex/PreprocessorOptions.h" > #include "clang/Parse/ParseAST.h" > @@ -187,6 +188,42 @@ FrontendAction::CreateWrappedASTConsumer >return llvm::make_unique(std::move(Consumers)); > } > > +// For preprocessed files, if the first line is the linemarker and specifies > +// the original source file name, use that name as the input file name. > +static bool ReadOriginalFileName(CompilerInstance &CI, std::string > &InputFile) > +{ > + bool Invalid = false; > + auto &SourceMgr = CI.getSourceManager(); > + auto MainFileID = SourceMgr.getMainFileID(); > + const auto *MainFileBuf = SourceMgr.getBuffer(MainFileID, &Invalid); > + if (Invalid) > +return false; > + > + std::unique_ptr RawLexer( > + new Lexer(MainFileID, MainFileBuf, SourceMgr, CI.getLangOpts())); > + > + // If the first line has the syntax of > + // > + // # NUM "FILENAME" > + // > + // we use FILENAME as the input file name. > + Token T; > + if (RawLexer->LexFromRawLexer(T) || T.getKind() != tok::hash) > +return false; > + if (RawLexer->LexFromRawLexer(T) || T.isAtStartOfLine() || > + T.getKind() != tok::numeric_constant) > +return false; > + RawLexer->LexFromRawLexer(T); > + if (T.isAtStartOfLine() || T.getKind() != tok::string_literal) > +return false; > + > + StringLiteralParser Literal(T, CI.getPreprocessor()); > + if (Literal.hadError) > +return false; > + InputFile = Literal.GetString().str(); > + return true; > +} > + > bool FrontendAction::BeginSourceFile(CompilerInstance &CI, >
r293032 - Revert "Use filename in linemarker when compiling preprocessed source"
Author: rovka Date: Wed Jan 25 01:27:05 2017 New Revision: 293032 URL: http://llvm.org/viewvc/llvm-project?rev=293032&view=rev Log: Revert "Use filename in linemarker when compiling preprocessed source" This reverts commit r293004 because it broke the buildbots with "unknown CPU" errors. I tried to fix it in r293026, but that broke on Green Dragon with this kind of error: error: expected string not found in input // CHECK: l{{ +}}df{{ +}}*ABS*{{ +}}{{0+}}{{.+}}preprocessed-input.c{{$}} ^ :2:1: note: scanning from here /Users/buildslave/jenkins/sharedspace/incremental@2/clang-build/tools/clang/test/Frontend/Output/preprocessed-input.c.tmp.o: file format Mach-O 64-bit x86-64 ^ :2:67: note: possible intended match here /Users/buildslave/jenkins/sharedspace/incremental@2/clang-build/tools/clang/test/Frontend/Output/preprocessed-input.c.tmp.o: file format Mach-O 64-bit x86-64 I suppose this means that llvm-objdump doesn't support Mach-O, so the test should indeed check for linux (but not for x86). I'll leave it to someone that knows better. Removed: cfe/trunk/test/Frontend/preprocessed-input.c Modified: cfe/trunk/include/clang/Frontend/FrontendOptions.h cfe/trunk/lib/Frontend/FrontendAction.cpp Modified: cfe/trunk/include/clang/Frontend/FrontendOptions.h URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Frontend/FrontendOptions.h?rev=293032&r1=293031&r2=293032&view=diff == --- cfe/trunk/include/clang/Frontend/FrontendOptions.h (original) +++ cfe/trunk/include/clang/Frontend/FrontendOptions.h Wed Jan 25 01:27:05 2017 @@ -81,7 +81,7 @@ enum InputKind { IK_LLVM_IR }; - + /// \brief An input file for the front end. class FrontendInputFile { /// \brief The file name, or "-" to read from standard input. @@ -109,13 +109,6 @@ public: bool isEmpty() const { return File.empty() && Buffer == nullptr; } bool isFile() const { return !isBuffer(); } bool isBuffer() const { return Buffer != nullptr; } - bool isPreprocessed() const { -return Kind == IK_PreprocessedC || - Kind == IK_PreprocessedCXX || - Kind == IK_PreprocessedObjC || - Kind == IK_PreprocessedObjCXX || - Kind == IK_PreprocessedCuda; - } StringRef getFile() const { assert(isFile()); Modified: cfe/trunk/lib/Frontend/FrontendAction.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/FrontendAction.cpp?rev=293032&r1=293031&r2=293032&view=diff == --- cfe/trunk/lib/Frontend/FrontendAction.cpp (original) +++ cfe/trunk/lib/Frontend/FrontendAction.cpp Wed Jan 25 01:27:05 2017 @@ -19,7 +19,6 @@ #include "clang/Frontend/MultiplexConsumer.h" #include "clang/Frontend/Utils.h" #include "clang/Lex/HeaderSearch.h" -#include "clang/Lex/LiteralSupport.h" #include "clang/Lex/Preprocessor.h" #include "clang/Lex/PreprocessorOptions.h" #include "clang/Parse/ParseAST.h" @@ -188,42 +187,6 @@ FrontendAction::CreateWrappedASTConsumer return llvm::make_unique(std::move(Consumers)); } -// For preprocessed files, if the first line is the linemarker and specifies -// the original source file name, use that name as the input file name. -static bool ReadOriginalFileName(CompilerInstance &CI, std::string &InputFile) -{ - bool Invalid = false; - auto &SourceMgr = CI.getSourceManager(); - auto MainFileID = SourceMgr.getMainFileID(); - const auto *MainFileBuf = SourceMgr.getBuffer(MainFileID, &Invalid); - if (Invalid) -return false; - - std::unique_ptr RawLexer( - new Lexer(MainFileID, MainFileBuf, SourceMgr, CI.getLangOpts())); - - // If the first line has the syntax of - // - // # NUM "FILENAME" - // - // we use FILENAME as the input file name. - Token T; - if (RawLexer->LexFromRawLexer(T) || T.getKind() != tok::hash) -return false; - if (RawLexer->LexFromRawLexer(T) || T.isAtStartOfLine() || - T.getKind() != tok::numeric_constant) -return false; - RawLexer->LexFromRawLexer(T); - if (T.isAtStartOfLine() || T.getKind() != tok::string_literal) -return false; - - StringLiteralParser Literal(T, CI.getPreprocessor()); - if (Literal.hadError) -return false; - InputFile = Literal.GetString().str(); - return true; -} - bool FrontendAction::BeginSourceFile(CompilerInstance &CI, const FrontendInputFile &Input) { assert(!Instance && "Already processing a source file!"); @@ -372,13 +335,6 @@ bool FrontendAction::BeginSourceFile(Com if (!isModelParsingAction()) CI.createASTContext(); -// For preprocessed files, check if the first line specifies the original -// source file name with a linemarker. -std::string OrigFile; -if (Input.isPreprocessed()) - if (ReadOriginalFileName(CI, OrigFile)) -InputFile = OrigFile; - std::unique_ptr Consumer = CreateWrappedASTConsume
Re: r293004 - Use filename in linemarker when compiling preprocessed source
Erm, the revert was actually r293032, sorry about the confusion. On 25 January 2017 at 09:34, Diana Picus wrote: > Hi David, > > Sorry, but I had to revert this (r283029) because it was breaking the > non-x86 buildbots (arm, powerpc, hexagon), with errors along the lines > of: > error: unknown target CPU 'cortex-a8' > > Please recommit after you've fixed the issue. > > Thanks, > Diana > > PS: I tried to fix it in r293024, but that broke on Green Dragon. I'll > let you come up with a more principled fix. > > On 25 January 2017 at 03:55, David Callahan via cfe-commits > wrote: >> Author: david2050 >> Date: Tue Jan 24 19:55:28 2017 >> New Revision: 293004 >> >> URL: http://llvm.org/viewvc/llvm-project?rev=293004&view=rev >> Log: >> Use filename in linemarker when compiling preprocessed source >> >> Summary: >> Clang appears to always use name as specified on the command >> line, whereas gcc uses the name as specified in the linemarker at the >> first line when compiling a preprocessed source. This results mismatch >> between two compilers in FILE symbol table entry. This patch makes clang >> to resemble gcc's behavior in finding the original source file name and >> use it as an input file name. >> >> Even with this patch, values of FILE symbol table entry may still be >> different because clang uses dirname+basename for the entry whlie gcc >> uses basename only. I'll write a patch for that once this patch is >> committed. >> >> Reviewers: dblaikie, inglorion >> >> Reviewed By: inglorion >> >> Subscribers: inglorion, aprantl, bruno >> >> Differential Revision: https://reviews.llvm.org/D28796 >> >> Added: >> cfe/trunk/test/Frontend/preprocessed-input.c >> Modified: >> cfe/trunk/include/clang/Frontend/FrontendOptions.h >> cfe/trunk/lib/Frontend/FrontendAction.cpp >> >> Modified: cfe/trunk/include/clang/Frontend/FrontendOptions.h >> URL: >> http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Frontend/FrontendOptions.h?rev=293004&r1=293003&r2=293004&view=diff >> == >> --- cfe/trunk/include/clang/Frontend/FrontendOptions.h (original) >> +++ cfe/trunk/include/clang/Frontend/FrontendOptions.h Tue Jan 24 19:55:28 >> 2017 >> @@ -81,7 +81,7 @@ enum InputKind { >>IK_LLVM_IR >> }; >> >> - >> + >> /// \brief An input file for the front end. >> class FrontendInputFile { >>/// \brief The file name, or "-" to read from standard input. >> @@ -109,6 +109,13 @@ public: >>bool isEmpty() const { return File.empty() && Buffer == nullptr; } >>bool isFile() const { return !isBuffer(); } >>bool isBuffer() const { return Buffer != nullptr; } >> + bool isPreprocessed() const { >> +return Kind == IK_PreprocessedC || >> + Kind == IK_PreprocessedCXX || >> + Kind == IK_PreprocessedObjC || >> + Kind == IK_PreprocessedObjCXX || >> + Kind == IK_PreprocessedCuda; >> + } >> >>StringRef getFile() const { >> assert(isFile()); >> >> Modified: cfe/trunk/lib/Frontend/FrontendAction.cpp >> URL: >> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/FrontendAction.cpp?rev=293004&r1=293003&r2=293004&view=diff >> == >> --- cfe/trunk/lib/Frontend/FrontendAction.cpp (original) >> +++ cfe/trunk/lib/Frontend/FrontendAction.cpp Tue Jan 24 19:55:28 2017 >> @@ -19,6 +19,7 @@ >> #include "clang/Frontend/MultiplexConsumer.h" >> #include "clang/Frontend/Utils.h" >> #include "clang/Lex/HeaderSearch.h" >> +#include "clang/Lex/LiteralSupport.h" >> #include "clang/Lex/Preprocessor.h" >> #include "clang/Lex/PreprocessorOptions.h" >> #include "clang/Parse/ParseAST.h" >> @@ -187,6 +188,42 @@ FrontendAction::CreateWrappedASTConsumer >>return llvm::make_unique(std::move(Consumers)); >> } >> >> +// For preprocessed files, if the first line is the linemarker and specifies >> +// the original source file name, use that name as the input file name. >> +static bool ReadOriginalFileName(CompilerInstance &CI, std::string >> &InputFile) >> +{ >> + bool Invalid = false; >> + auto &SourceMgr = CI.getSourceManager(); >> + auto MainFileID = SourceMgr.getMainFileID(); >> + const auto *MainFileBuf = SourceMgr.getBuffer(MainFileID, &Invalid); >> + if (Invalid) >> +return false; >> + >> + std::unique_ptr RawLexer( >> + new Lexer(MainFileID, MainFileBuf, SourceMgr, CI.getLangOpts())); >> + >> + // If the first line has the syntax of >> + // >> + // # NUM "FILENAME" >> + // >> + // we use FILENAME as the input file name. >> + Token T; >> + if (RawLexer->LexFromRawLexer(T) || T.getKind() != tok::hash) >> +return false; >> + if (RawLexer->LexFromRawLexer(T) || T.isAtStartOfLine() || >> + T.getKind() != tok::numeric_constant) >> +return false; >> + RawLexer->LexFromRawLexer(T); >> + if (T.isAtStartOfLine() || T.getKind() != tok::string_literal) >> +return false; >> + >> + StringLit
[clang-tools-extra] r293267 - Revert "Implement a new clang-tidy check that suggests users replace dynamic exception specifications with noexcept exception specifications."
Author: rovka Date: Fri Jan 27 01:19:22 2017 New Revision: 293267 URL: http://llvm.org/viewvc/llvm-project?rev=293267&view=rev Log: Revert "Implement a new clang-tidy check that suggests users replace dynamic exception specifications with noexcept exception specifications." This reverts commit r293217, its follow-up 293218 and part of 293234 because it broke all bots that build clang-tools-extra. Removed: clang-tools-extra/trunk/clang-tidy/modernize/UseNoexceptCheck.cpp clang-tools-extra/trunk/clang-tidy/modernize/UseNoexceptCheck.h clang-tools-extra/trunk/docs/clang-tidy/checks/modernize-use-noexcept.rst clang-tools-extra/trunk/test/clang-tidy/modernize-use-noexcept-macro.cpp clang-tools-extra/trunk/test/clang-tidy/modernize-use-noexcept-opt.cpp clang-tools-extra/trunk/test/clang-tidy/modernize-use-noexcept.cpp Modified: clang-tools-extra/trunk/clang-tidy/modernize/CMakeLists.txt clang-tools-extra/trunk/clang-tidy/modernize/ModernizeTidyModule.cpp clang-tools-extra/trunk/docs/ReleaseNotes.rst clang-tools-extra/trunk/docs/clang-tidy/checks/list.rst Modified: clang-tools-extra/trunk/clang-tidy/modernize/CMakeLists.txt URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/modernize/CMakeLists.txt?rev=293267&r1=293266&r2=293267&view=diff == --- clang-tools-extra/trunk/clang-tidy/modernize/CMakeLists.txt (original) +++ clang-tools-extra/trunk/clang-tidy/modernize/CMakeLists.txt Fri Jan 27 01:19:22 2017 @@ -20,7 +20,6 @@ add_clang_library(clangTidyModernizeModu UseEmplaceCheck.cpp UseEqualsDefaultCheck.cpp UseEqualsDeleteCheck.cpp - UseNoexceptCheck.cpp UseNullptrCheck.cpp UseOverrideCheck.cpp UseTransparentFunctorsCheck.cpp Modified: clang-tools-extra/trunk/clang-tidy/modernize/ModernizeTidyModule.cpp URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/modernize/ModernizeTidyModule.cpp?rev=293267&r1=293266&r2=293267&view=diff == --- clang-tools-extra/trunk/clang-tidy/modernize/ModernizeTidyModule.cpp (original) +++ clang-tools-extra/trunk/clang-tidy/modernize/ModernizeTidyModule.cpp Fri Jan 27 01:19:22 2017 @@ -26,7 +26,6 @@ #include "UseEmplaceCheck.h" #include "UseEqualsDefaultCheck.h" #include "UseEqualsDeleteCheck.h" -#include "UseNoexceptCheck.h" #include "UseNullptrCheck.h" #include "UseOverrideCheck.h" #include "UseTransparentFunctorsCheck.h" @@ -64,7 +63,6 @@ public: CheckFactories.registerCheck("modernize-use-equals-default"); CheckFactories.registerCheck( "modernize-use-equals-delete"); -CheckFactories.registerCheck("modernize-use-noexcept"); CheckFactories.registerCheck("modernize-use-nullptr"); CheckFactories.registerCheck("modernize-use-override"); CheckFactories.registerCheck( Removed: clang-tools-extra/trunk/clang-tidy/modernize/UseNoexceptCheck.cpp URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/modernize/UseNoexceptCheck.cpp?rev=293266&view=auto == --- clang-tools-extra/trunk/clang-tidy/modernize/UseNoexceptCheck.cpp (original) +++ clang-tools-extra/trunk/clang-tidy/modernize/UseNoexceptCheck.cpp (removed) @@ -1,114 +0,0 @@ -//===--- UseNoexceptCheck.cpp - clang-tidy-===// -// -// The LLVM Compiler Infrastructure -// -// This file is distributed under the University of Illinois Open Source -// License. See LICENSE.TXT for details. -// -//===--===// - -#include "UseNoexceptCheck.h" -#include "clang/AST/ASTContext.h" -#include "clang/Lex/Lexer.h" - -using namespace clang::ast_matchers; - -namespace clang { -namespace tidy { -namespace modernize { - -UseNoexceptCheck::UseNoexceptCheck(StringRef Name, ClangTidyContext *Context) -: ClangTidyCheck(Name, Context), - NoexceptMacro(Options.get("ReplacementString", "")), - UseNoexceptFalse(Options.get("UseNoexceptFalse", true)) {} - -void UseNoexceptCheck::storeOptions(ClangTidyOptions::OptionMap &Opts) { - Options.store(Opts, "ReplacementString", NoexceptMacro); - Options.store(Opts, "UseNoexceptFalse", UseNoexceptFalse); -} - -void UseNoexceptCheck::registerMatchers(MatchFinder *Finder) { - if (!getLangOpts().CPlusPlus11) -return; - - Finder->addMatcher( - functionDecl( - cxxMethodDecl( - hasTypeLoc(loc(functionProtoType(hasDynamicExceptionSpec(, - anyOf(hasOverloadedOperatorName("delete[]"), -hasOverloadedOperatorName("delete"), cxxDestructorDecl())) - .bind("del-dtor")) - .bind("funcDecl"), - this); - - Finder->addMatcher( - functionDecl( - hasTypeLoc(loc(functionProtoType(hasDynamicExceptionSp
Re: [clang-tools-extra] r293217 - Implement a new clang-tidy check that suggests users replace dynamic exception specifications with noexcept exception specifications.
Hi Don, Hi Aaron, I had to revert this in r293267 because all the clang-tools-extra buildbots were still broken many hours after it was committed. See for instance http://lab.llvm.org:8011/builders/clang-cmake-aarch64-full/builds/1039 Eugene Zelenko also had some small fixes to modernize-use-noexcept.rst, you might want to incorporate those as well before recommitting (see r293234). Regards, Diana On 27 January 2017 at 00:34, Aaron Ballman via cfe-commits wrote: > Author: aaronballman > Date: Thu Jan 26 16:34:24 2017 > New Revision: 293217 > > URL: http://llvm.org/viewvc/llvm-project?rev=293217&view=rev > Log: > Implement a new clang-tidy check that suggests users replace dynamic > exception specifications with noexcept exception specifications. > > Patch by Don Hinton. > > Added: > clang-tools-extra/trunk/clang-tidy/modernize/UseNoexceptCheck.cpp > clang-tools-extra/trunk/clang-tidy/modernize/UseNoexceptCheck.h > clang-tools-extra/trunk/docs/clang-tidy/checks/modernize-use-noexcept.rst > clang-tools-extra/trunk/test/clang-tidy/modernize-use-noexcept-macro.cpp > clang-tools-extra/trunk/test/clang-tidy/modernize-use-noexcept-opt.cpp > clang-tools-extra/trunk/test/clang-tidy/modernize-use-noexcept.cpp > Modified: > clang-tools-extra/trunk/clang-tidy/modernize/CMakeLists.txt > clang-tools-extra/trunk/clang-tidy/modernize/ModernizeTidyModule.cpp > clang-tools-extra/trunk/docs/ReleaseNotes.rst > clang-tools-extra/trunk/docs/clang-tidy/checks/list.rst > > Modified: clang-tools-extra/trunk/clang-tidy/modernize/CMakeLists.txt > URL: > http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/modernize/CMakeLists.txt?rev=293217&r1=293216&r2=293217&view=diff > == > --- clang-tools-extra/trunk/clang-tidy/modernize/CMakeLists.txt (original) > +++ clang-tools-extra/trunk/clang-tidy/modernize/CMakeLists.txt Thu Jan 26 > 16:34:24 2017 > @@ -20,6 +20,7 @@ add_clang_library(clangTidyModernizeModu >UseEmplaceCheck.cpp >UseEqualsDefaultCheck.cpp >UseEqualsDeleteCheck.cpp > + UseNoexceptCheck.cpp >UseNullptrCheck.cpp >UseOverrideCheck.cpp >UseTransparentFunctorsCheck.cpp > > Modified: clang-tools-extra/trunk/clang-tidy/modernize/ModernizeTidyModule.cpp > URL: > http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/modernize/ModernizeTidyModule.cpp?rev=293217&r1=293216&r2=293217&view=diff > == > --- clang-tools-extra/trunk/clang-tidy/modernize/ModernizeTidyModule.cpp > (original) > +++ clang-tools-extra/trunk/clang-tidy/modernize/ModernizeTidyModule.cpp Thu > Jan 26 16:34:24 2017 > @@ -26,6 +26,7 @@ > #include "UseEmplaceCheck.h" > #include "UseEqualsDefaultCheck.h" > #include "UseEqualsDeleteCheck.h" > +#include "UseNoexceptCheck.h" > #include "UseNullptrCheck.h" > #include "UseOverrideCheck.h" > #include "UseTransparentFunctorsCheck.h" > @@ -63,6 +64,7 @@ public: > > CheckFactories.registerCheck("modernize-use-equals-default"); > CheckFactories.registerCheck( > "modernize-use-equals-delete"); > +CheckFactories.registerCheck("modernize-use-noexcept"); > CheckFactories.registerCheck("modernize-use-nullptr"); > CheckFactories.registerCheck("modernize-use-override"); > CheckFactories.registerCheck( > > Added: clang-tools-extra/trunk/clang-tidy/modernize/UseNoexceptCheck.cpp > URL: > http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/modernize/UseNoexceptCheck.cpp?rev=293217&view=auto > == > --- clang-tools-extra/trunk/clang-tidy/modernize/UseNoexceptCheck.cpp (added) > +++ clang-tools-extra/trunk/clang-tidy/modernize/UseNoexceptCheck.cpp Thu Jan > 26 16:34:24 2017 > @@ -0,0 +1,114 @@ > +//===--- UseNoexceptCheck.cpp - > clang-tidy-===// > +// > +// The LLVM Compiler Infrastructure > +// > +// This file is distributed under the University of Illinois Open Source > +// License. See LICENSE.TXT for details. > +// > +//===--===// > + > +#include "UseNoexceptCheck.h" > +#include "clang/AST/ASTContext.h" > +#include "clang/Lex/Lexer.h" > + > +using namespace clang::ast_matchers; > + > +namespace clang { > +namespace tidy { > +namespace modernize { > + > +UseNoexceptCheck::UseNoexceptCheck(StringRef Name, ClangTidyContext *Context) > +: ClangTidyCheck(Name, Context), > + NoexceptMacro(Options.get("ReplacementString", "")), > + UseNoexceptFalse(Options.get("UseNoexceptFalse", true)) {} > + > +void UseNoexceptCheck::storeOptions(ClangTidyOptions::OptionMap &Opts) { > + Options.store(Opts, "ReplacementString", NoexceptMacro); > + Options.store(Opts, "UseNoexceptFalse", UseNoexceptFalse); > +} > + > +void UseNoe
r294180 - Revert "[AVR] Allow specifying the CPU on the command line"
Author: rovka Date: Mon Feb 6 05:35:42 2017 New Revision: 294180 URL: http://llvm.org/viewvc/llvm-project?rev=294180&view=rev Log: Revert "[AVR] Allow specifying the CPU on the command line" This reverts commit r294177. It seems to have broken some buildbots. Removed: cfe/trunk/test/CodeGen/avr/target-cpu-defines/atmega328p.c cfe/trunk/test/CodeGen/avr/target-cpu-defines/attiny104.c cfe/trunk/test/CodeGen/avr/target-cpu-defines/common.c Modified: cfe/trunk/lib/Basic/Targets.cpp Modified: cfe/trunk/lib/Basic/Targets.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Basic/Targets.cpp?rev=294180&r1=294179&r2=294180&view=diff == --- cfe/trunk/lib/Basic/Targets.cpp (original) +++ cfe/trunk/lib/Basic/Targets.cpp Mon Feb 6 05:35:42 2017 @@ -8435,254 +8435,6 @@ public: } }; -/// Information about a specific microcontroller. -struct MCUInfo { - const char *Name; - const char *DefineName; -}; - -// This list should be kept up-to-date with AVRDevices.td in LLVM. -static ArrayRef AVRMcus = { - { "at90s1200", "__AVR_AT90S1200__" }, - { "attiny11", "__AVR_ATtiny11" }, - { "attiny12", "__AVR_ATtiny12" }, - { "attiny15", "__AVR_ATtiny15" }, - { "attiny28", "__AVR_ATtiny28" }, - { "at90s2313", "__AVR_AT90S2313" }, - { "at90s2323", "__AVR_AT90S2323" }, - { "at90s2333", "__AVR_AT90S2333" }, - { "at90s2343", "__AVR_AT90S2343" }, - { "attiny22", "__AVR_ATtiny22" }, - { "attiny26", "__AVR_ATtiny26" }, - { "at86rf401", "__AVR_AT86RF401" }, - { "at90s4414", "__AVR_AT90S4414" }, - { "at90s4433", "__AVR_AT90S4433" }, - { "at90s4434", "__AVR_AT90S4434" }, - { "at90s8515", "__AVR_AT90S8515" }, - { "at90c8534", "__AVR_AT90c8534" }, - { "at90s8535", "__AVR_AT90S8535" }, - { "ata5272", "__AVR_ATA5272" }, - { "attiny13", "__AVR_ATtiny13" }, - { "attiny13a", "__AVR_ATtiny13A" }, - { "attiny2313", "__AVR_ATtiny2313" }, - { "attiny2313a", "__AVR_ATtiny2313A" }, - { "attiny24", "__AVR_ATtiny24" }, - { "attiny24a", "__AVR_ATtiny24A" }, - { "attiny4313", "__AVR_ATtiny4313" }, - { "attiny44", "__AVR_ATtiny44" }, - { "attiny44a", "__AVR_ATtiny44A" }, - { "attiny84", "__AVR_ATtiny84" }, - { "attiny84a", "__AVR_ATtiny84A" }, - { "attiny25", "__AVR_ATtiny25" }, - { "attiny45", "__AVR_ATtiny45" }, - { "attiny85", "__AVR_ATtiny85" }, - { "attiny261", "__AVR_ATtiny261" }, - { "attiny261a", "__AVR_ATtiny261A" }, - { "attiny461", "__AVR_ATtiny461" }, - { "attiny461a", "__AVR_ATtiny461A" }, - { "attiny861", "__AVR_ATtiny861" }, - { "attiny861a", "__AVR_ATtiny861A" }, - { "attiny87", "__AVR_ATtiny87" }, - { "attiny43u", "__AVR_ATtiny43U" }, - { "attiny48", "__AVR_ATtiny48" }, - { "attiny88", "__AVR_ATtiny88" }, - { "attiny828", "__AVR_ATtiny828" }, - { "at43usb355", "__AVR_AT43USB355" }, - { "at76c711", "__AVR_AT76C711" }, - { "atmega103", "__AVR_ATmega103" }, - { "at43usb320", "__AVR_AT43USB320" }, - { "attiny167", "__AVR_ATtiny167" }, - { "at90usb82", "__AVR_AT90USB82" }, - { "at90usb162", "__AVR_AT90USB162" }, - { "ata5505", "__AVR_ATA5505" }, - { "atmega8u2", "__AVR_ATmega8U2" }, - { "atmega16u2", "__AVR_ATmega16U2" }, - { "atmega32u2", "__AVR_ATmega32U2" }, - { "attiny1634", "__AVR_ATtiny1634" }, - { "atmega8", "__AVR_ATmega8" }, - { "ata6289", "__AVR_ATA6289" }, - { "atmega8a", "__AVR_ATmega8A" }, - { "ata6285", "__AVR_ATA6285" }, - { "ata6286", "__AVR_ATA6286" }, - { "atmega48", "__AVR_ATmega48" }, - { "atmega48a", "__AVR_ATmega48A" }, - { "atmega48pa", "__AVR_ATmega48PA" }, - { "atmega48p", "__AVR_ATmega48P" }, - { "atmega88", "__AVR_ATmega88" }, - { "atmega88a", "__AVR_ATmega88A" }, - { "atmega88p", "__AVR_ATmega88P" }, - { "atmega88pa", "__AVR_ATmega88PA" }, - { "atmega8515", "__AVR_ATmega8515" }, - { "atmega8535", "__AVR_ATmega8535" }, - { "atmega8hva", "__AVR_ATmega8HVA" }, - { "at90pwm1", "__AVR_AT90PWM1" }, - { "at90pwm2", "__AVR_AT90PWM2" }, - { "at90pwm2b", "__AVR_AT90PWM2B" }, - { "at90pwm3", "__AVR_AT90PWM3" }, - { "at90pwm3b", "__AVR_AT90PWM3B" }, - { "at90pwm81", "__AVR_AT90PWM81" }, - { "ata5790", "__AVR_ATA5790" }, - { "ata5795", "__AVR_ATA5795" }, - { "atmega16", "__AVR_ATmega16" }, - { "atmega16a", "__AVR_ATmega16A" }, - { "atmega161", "__AVR_ATmega161" }, - { "atmega162", "__AVR_ATmega162" }, - { "atmega163", "__AVR_ATmega163" }, - { "atmega164a", "__AVR_ATmega164A" }, - { "atmega164p", "__AVR_ATmega164P" }, - { "atmega164pa", "__AVR_ATmega164PA" }, - { "atmega165", "__AVR_ATmega165" }, - { "atmega165a", "__AVR_ATmega165A" }, - { "atmega165p", "__AVR_ATmega165P" }, - { "atmega165pa", "__AVR_ATmega165PA" }, - { "atmega168", "__AVR_ATmega168" }, - { "atmega168a", "__AVR_ATmega168A" }, - { "atmega168p", "__AVR_ATmega168P" }, - { "atmega168pa", "__AVR_ATmega168PA" }, - { "atmega169", "__AVR_ATmega169" }, - { "atmega169a", "__AVR_ATmega169A" }, - { "atmega169p", "__AVR_ATmega169P" }, - { "atmega169pa", "__AVR_ATmega169PA" }
Re: r294177 - [AVR] Allow specifying the CPU on the command line
Hi Dylan, I reverted this in r294180 because I think it broke some of the buildbots. See for example http://lab.llvm.org:8011/builders/clang-cmake-armv7-a15/builds/3599 http://lab.llvm.org:8011/builders/clang-x86-windows-msvc2015/builds/2271 Sorry, Diana On 6 February 2017 at 10:07, Dylan McKay via cfe-commits wrote: > Author: dylanmckay > Date: Mon Feb 6 03:07:56 2017 > New Revision: 294177 > > URL: http://llvm.org/viewvc/llvm-project?rev=294177&view=rev > Log: > [AVR] Allow specifying the CPU on the command line > > Summary: > This tells clang about all of the different AVR microcontrollers. > > It also adds code to define the correct preprocessor macros for each > device. > > Reviewers: jroelofs, asl > > Reviewed By: asl > > Subscribers: asl, cfe-commits > > Differential Revision: https://reviews.llvm.org/D28346 > > Added: > cfe/trunk/test/CodeGen/avr/ > cfe/trunk/test/CodeGen/avr/target-cpu-defines/ > cfe/trunk/test/CodeGen/avr/target-cpu-defines/atmega328p.c > cfe/trunk/test/CodeGen/avr/target-cpu-defines/attiny104.c > cfe/trunk/test/CodeGen/avr/target-cpu-defines/common.c > Modified: > cfe/trunk/lib/Basic/Targets.cpp > > Modified: cfe/trunk/lib/Basic/Targets.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Basic/Targets.cpp?rev=294177&r1=294176&r2=294177&view=diff > == > --- cfe/trunk/lib/Basic/Targets.cpp (original) > +++ cfe/trunk/lib/Basic/Targets.cpp Mon Feb 6 03:07:56 2017 > @@ -8435,6 +8435,254 @@ public: >} > }; > > +/// Information about a specific microcontroller. > +struct MCUInfo { > + const char *Name; > + const char *DefineName; > +}; > + > +// This list should be kept up-to-date with AVRDevices.td in LLVM. > +static ArrayRef AVRMcus = { > + { "at90s1200", "__AVR_AT90S1200__" }, > + { "attiny11", "__AVR_ATtiny11" }, > + { "attiny12", "__AVR_ATtiny12" }, > + { "attiny15", "__AVR_ATtiny15" }, > + { "attiny28", "__AVR_ATtiny28" }, > + { "at90s2313", "__AVR_AT90S2313" }, > + { "at90s2323", "__AVR_AT90S2323" }, > + { "at90s2333", "__AVR_AT90S2333" }, > + { "at90s2343", "__AVR_AT90S2343" }, > + { "attiny22", "__AVR_ATtiny22" }, > + { "attiny26", "__AVR_ATtiny26" }, > + { "at86rf401", "__AVR_AT86RF401" }, > + { "at90s4414", "__AVR_AT90S4414" }, > + { "at90s4433", "__AVR_AT90S4433" }, > + { "at90s4434", "__AVR_AT90S4434" }, > + { "at90s8515", "__AVR_AT90S8515" }, > + { "at90c8534", "__AVR_AT90c8534" }, > + { "at90s8535", "__AVR_AT90S8535" }, > + { "ata5272", "__AVR_ATA5272" }, > + { "attiny13", "__AVR_ATtiny13" }, > + { "attiny13a", "__AVR_ATtiny13A" }, > + { "attiny2313", "__AVR_ATtiny2313" }, > + { "attiny2313a", "__AVR_ATtiny2313A" }, > + { "attiny24", "__AVR_ATtiny24" }, > + { "attiny24a", "__AVR_ATtiny24A" }, > + { "attiny4313", "__AVR_ATtiny4313" }, > + { "attiny44", "__AVR_ATtiny44" }, > + { "attiny44a", "__AVR_ATtiny44A" }, > + { "attiny84", "__AVR_ATtiny84" }, > + { "attiny84a", "__AVR_ATtiny84A" }, > + { "attiny25", "__AVR_ATtiny25" }, > + { "attiny45", "__AVR_ATtiny45" }, > + { "attiny85", "__AVR_ATtiny85" }, > + { "attiny261", "__AVR_ATtiny261" }, > + { "attiny261a", "__AVR_ATtiny261A" }, > + { "attiny461", "__AVR_ATtiny461" }, > + { "attiny461a", "__AVR_ATtiny461A" }, > + { "attiny861", "__AVR_ATtiny861" }, > + { "attiny861a", "__AVR_ATtiny861A" }, > + { "attiny87", "__AVR_ATtiny87" }, > + { "attiny43u", "__AVR_ATtiny43U" }, > + { "attiny48", "__AVR_ATtiny48" }, > + { "attiny88", "__AVR_ATtiny88" }, > + { "attiny828", "__AVR_ATtiny828" }, > + { "at43usb355", "__AVR_AT43USB355" }, > + { "at76c711", "__AVR_AT76C711" }, > + { "atmega103", "__AVR_ATmega103" }, > + { "at43usb320", "__AVR_AT43USB320" }, > + { "attiny167", "__AVR_ATtiny167" }, > + { "at90usb82", "__AVR_AT90USB82" }, > + { "at90usb162", "__AVR_AT90USB162" }, > + { "ata5505", "__AVR_ATA5505" }, > + { "atmega8u2", "__AVR_ATmega8U2" }, > + { "atmega16u2", "__AVR_ATmega16U2" }, > + { "atmega32u2", "__AVR_ATmega32U2" }, > + { "attiny1634", "__AVR_ATtiny1634" }, > + { "atmega8", "__AVR_ATmega8" }, > + { "ata6289", "__AVR_ATA6289" }, > + { "atmega8a", "__AVR_ATmega8A" }, > + { "ata6285", "__AVR_ATA6285" }, > + { "ata6286", "__AVR_ATA6286" }, > + { "atmega48", "__AVR_ATmega48" }, > + { "atmega48a", "__AVR_ATmega48A" }, > + { "atmega48pa", "__AVR_ATmega48PA" }, > + { "atmega48p", "__AVR_ATmega48P" }, > + { "atmega88", "__AVR_ATmega88" }, > + { "atmega88a", "__AVR_ATmega88A" }, > + { "atmega88p", "__AVR_ATmega88P" }, > + { "atmega88pa", "__AVR_ATmega88PA" }, > + { "atmega8515", "__AVR_ATmega8515" }, > + { "atmega8535", "__AVR_ATmega8535" }, > + { "atmega8hva", "__AVR_ATmega8HVA" }, > + { "at90pwm1", "__AVR_AT90PWM1" }, > + { "at90pwm2", "__AVR_AT90PWM2" }, > + { "at90pwm2b", "__AVR_AT90PWM2B" }, > + { "at90pwm3", "__AVR_AT90PWM3" }, > + { "at90pwm3b", "__AVR_AT90PWM3B" }, > + { "at90pwm81", "__AVR_AT90PWM81" }, > + { "ata5790", "_
r302776 - Revert "PR22877: When constructing an array via a constructor with a default argument in list-initialization, run cleanups for the default argument after each iteration of the initialization
Author: rovka Date: Thu May 11 03:10:41 2017 New Revision: 302776 URL: http://llvm.org/viewvc/llvm-project?rev=302776&view=rev Log: Revert "PR22877: When constructing an array via a constructor with a default argument in list-initialization, run cleanups for the default argument after each iteration of the initialization loop." Revert "clang/test/CodeGenCXX/array-default-argument.cpp: Satisfy targets that have x86_thiscallcc." This reverts commit r302750 and its fixup r302757 because the test is still breaking on some of the ARM bots. array-default-argument.cpp:20:12: error: expected string not found in input // CHECK: {{call|invoke}}[[THISCALL:( x86_thiscallcc)?]] void @_ZN1AC1Ev([[TEMPORARY:.*]]) ^ :18:1: note: scanning from here arrayctor.loop: ; preds = %arrayctor.loop, %entry ^ :28:2: note: possible intended match here call void @_Z1fv() ^ -- Removed: cfe/trunk/test/CodeGenCXX/array-default-argument.cpp Modified: cfe/trunk/lib/CodeGen/CGExprAgg.cpp Modified: cfe/trunk/lib/CodeGen/CGExprAgg.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGExprAgg.cpp?rev=302776&r1=302775&r2=302776&view=diff == --- cfe/trunk/lib/CodeGen/CGExprAgg.cpp (original) +++ cfe/trunk/lib/CodeGen/CGExprAgg.cpp Thu May 11 03:10:41 2017 @@ -512,20 +512,12 @@ void AggExprEmitter::EmitArrayInit(Addre currentElement->addIncoming(element, entryBB); // Emit the actual filler expression. -{ - // C++1z [class.temporary]p5: - // when a default constructor is called to initialize an element of - // an array with no corresponding initializer [...] the destruction of - // every temporary created in a default argument is sequenced before - // the construction of the next array element, if any - CodeGenFunction::RunCleanupsScope CleanupsScope(CGF); - LValue elementLV = -CGF.MakeAddrLValue(Address(currentElement, elementAlign), elementType); - if (filler) -EmitInitializationToLValue(filler, elementLV); - else -EmitNullInitializationToLValue(elementLV); -} +LValue elementLV = + CGF.MakeAddrLValue(Address(currentElement, elementAlign), elementType); +if (filler) + EmitInitializationToLValue(filler, elementLV); +else + EmitNullInitializationToLValue(elementLV); // Move on to the next element. llvm::Value *nextElement = Removed: cfe/trunk/test/CodeGenCXX/array-default-argument.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/array-default-argument.cpp?rev=302775&view=auto == --- cfe/trunk/test/CodeGenCXX/array-default-argument.cpp (original) +++ cfe/trunk/test/CodeGenCXX/array-default-argument.cpp (removed) @@ -1,36 +0,0 @@ -// RUN: %clang_cc1 -emit-llvm -o - %s -triple %itanium_abi_triple | FileCheck %s -// RUN: %clang_cc1 -emit-llvm -o - %s -triple %itanium_abi_triple -fexceptions -fcxx-exceptions | FileCheck %s --check-prefix=CHECK --check-prefix=CHECK-EH - -struct A { - A(); - ~A(); -}; - -struct B { - B(A = A()); - ~B(); -}; - -void f(); -// CHECK-LABEL: define void @_Z1gv() -void g() { - // CHECK: br label %[[LOOP:.*]] - - // [[LOOP]]: - // CHECK: {{call|invoke}}[[THISCALL:( x86_thiscallcc)?]] void @_ZN1AC1Ev([[TEMPORARY:.*]]) - // CHECK-EH: unwind label %[[PARTIAL_ARRAY_LPAD:.*]] - // CHECK: {{call|invoke}}[[THISCALL]] void @_ZN1BC1E1A({{.*}}, [[TEMPORARY]]) - // CHECK-EH: unwind label %[[A_AND_PARTIAL_ARRAY_LPAD:.*]] - // CHECK: {{call|invoke}}[[THISCALL]] void @_ZN1AD1Ev([[TEMPORARY]]) - // CHECK-EH: unwind label %[[PARTIAL_ARRAY_LPAD]] - // CHECK: getelementptr {{.*}}, i{{[0-9]*}} 1 - // CHECK: icmp eq - // CHECK: br i1 {{.*}} label %[[LOOP]] - B b[5]; - - // CHECK: {{call|invoke}} void @_Z1fv() - f(); - - // CHECK-NOT: @_ZN1AD1Ev( - // CHECK: {{call|invoke}}[[THISCALL]] void @_ZN1BD1Ev( -} ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
Re: r302750 - PR22877: When constructing an array via a constructor with a default argument
Hi Richard, I reverted this and its fixup in r302776 since some of the ARM bots were still broken: http://lab.llvm.org:8011/builders/clang-cmake-armv7-a15/builds/6969 http://lab.llvm.org:8011/builders/clang-cmake-thumbv7-a15/builds/6959 http://lab.llvm.org:8011/builders/clang-cmake-armv7-a15-full/builds/6717 http://lab.llvm.org:8011/builders/clang-cmake-thumbv7-a15-full-sh/builds/1518 Sorry, Diana On 11 May 2017 at 02:17, Richard Smith via cfe-commits wrote: > Author: rsmith > Date: Wed May 10 19:17:17 2017 > New Revision: 302750 > > URL: http://llvm.org/viewvc/llvm-project?rev=302750&view=rev > Log: > PR22877: When constructing an array via a constructor with a default argument > in list-initialization, run cleanups for the default argument after each > iteration of the initialization loop. > > We previously only ran the destructor for any temporary once, at the end of > the > complete loop, rather than once per iteration! > > Added: > cfe/trunk/test/CodeGenCXX/array-default-argument.cpp > Modified: > cfe/trunk/lib/CodeGen/CGExprAgg.cpp > > Modified: cfe/trunk/lib/CodeGen/CGExprAgg.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGExprAgg.cpp?rev=302750&r1=302749&r2=302750&view=diff > == > --- cfe/trunk/lib/CodeGen/CGExprAgg.cpp (original) > +++ cfe/trunk/lib/CodeGen/CGExprAgg.cpp Wed May 10 19:17:17 2017 > @@ -512,12 +512,20 @@ void AggExprEmitter::EmitArrayInit(Addre > currentElement->addIncoming(element, entryBB); > > // Emit the actual filler expression. > -LValue elementLV = > - CGF.MakeAddrLValue(Address(currentElement, elementAlign), elementType); > -if (filler) > - EmitInitializationToLValue(filler, elementLV); > -else > - EmitNullInitializationToLValue(elementLV); > +{ > + // C++1z [class.temporary]p5: > + // when a default constructor is called to initialize an element of > + // an array with no corresponding initializer [...] the destruction > of > + // every temporary created in a default argument is sequenced before > + // the construction of the next array element, if any > + CodeGenFunction::RunCleanupsScope CleanupsScope(CGF); > + LValue elementLV = > +CGF.MakeAddrLValue(Address(currentElement, elementAlign), > elementType); > + if (filler) > +EmitInitializationToLValue(filler, elementLV); > + else > +EmitNullInitializationToLValue(elementLV); > +} > > // Move on to the next element. > llvm::Value *nextElement = > > Added: cfe/trunk/test/CodeGenCXX/array-default-argument.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/array-default-argument.cpp?rev=302750&view=auto > == > --- cfe/trunk/test/CodeGenCXX/array-default-argument.cpp (added) > +++ cfe/trunk/test/CodeGenCXX/array-default-argument.cpp Wed May 10 19:17:17 > 2017 > @@ -0,0 +1,36 @@ > +// RUN: %clang_cc1 -emit-llvm -o - %s -triple %itanium_abi_triple | > FileCheck %s > +// RUN: %clang_cc1 -emit-llvm -o - %s -triple %itanium_abi_triple > -fexceptions -fcxx-exceptions | FileCheck %s --check-prefix=CHECK > --check-prefix=CHECK-EH > + > +struct A { > + A(); > + ~A(); > +}; > + > +struct B { > + B(A = A()); > + ~B(); > +}; > + > +void f(); > +// CHECK-LABEL: define void @_Z1gv() > +void g() { > + // CHECK: br label %[[LOOP:.*]] > + > + // [[LOOP]]: > + // CHECK: {{call|invoke}} void @_ZN1AC1Ev([[TEMPORARY:.*]]) > + // CHECK-EH: unwind label %[[PARTIAL_ARRAY_LPAD:.*]] > + // CHECK: {{call|invoke}} void @_ZN1BC1E1A({{.*}}, [[TEMPORARY]]) > + // CHECK-EH: unwind label %[[A_AND_PARTIAL_ARRAY_LPAD:.*]] > + // CHECK: {{call|invoke}} void @_ZN1AD1Ev([[TEMPORARY]]) > + // CHECK-EH: unwind label %[[PARTIAL_ARRAY_LPAD]] > + // CHECK: getelementptr {{.*}}, i{{[0-9]*}} 1 > + // CHECK: icmp eq > + // CHECK: br i1 {{.*}} label %[[LOOP]] > + B b[5]; > + > + // CHECK: {{call|invoke}} void @_Z1fv() > + f(); > + > + // CHECK-NOT: @_ZN1AD1Ev( > + // CHECK: {{call|invoke}} void @_ZN1BD1Ev( > +} > > > ___ > cfe-commits mailing list > cfe-commits@lists.llvm.org > http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
Re: r302750 - PR22877: When constructing an array via a constructor with a default argument
Hexagon too: http://lab.llvm.org:8011/builders/clang-hexagon-elf/builds/7916 On 11 May 2017 at 10:27, Diana Picus wrote: > Hi Richard, > > I reverted this and its fixup in r302776 since some of the ARM bots > were still broken: > http://lab.llvm.org:8011/builders/clang-cmake-armv7-a15/builds/6969 > http://lab.llvm.org:8011/builders/clang-cmake-thumbv7-a15/builds/6959 > http://lab.llvm.org:8011/builders/clang-cmake-armv7-a15-full/builds/6717 > http://lab.llvm.org:8011/builders/clang-cmake-thumbv7-a15-full-sh/builds/1518 > > Sorry, > Diana > > On 11 May 2017 at 02:17, Richard Smith via cfe-commits > wrote: >> Author: rsmith >> Date: Wed May 10 19:17:17 2017 >> New Revision: 302750 >> >> URL: http://llvm.org/viewvc/llvm-project?rev=302750&view=rev >> Log: >> PR22877: When constructing an array via a constructor with a default argument >> in list-initialization, run cleanups for the default argument after each >> iteration of the initialization loop. >> >> We previously only ran the destructor for any temporary once, at the end of >> the >> complete loop, rather than once per iteration! >> >> Added: >> cfe/trunk/test/CodeGenCXX/array-default-argument.cpp >> Modified: >> cfe/trunk/lib/CodeGen/CGExprAgg.cpp >> >> Modified: cfe/trunk/lib/CodeGen/CGExprAgg.cpp >> URL: >> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGExprAgg.cpp?rev=302750&r1=302749&r2=302750&view=diff >> == >> --- cfe/trunk/lib/CodeGen/CGExprAgg.cpp (original) >> +++ cfe/trunk/lib/CodeGen/CGExprAgg.cpp Wed May 10 19:17:17 2017 >> @@ -512,12 +512,20 @@ void AggExprEmitter::EmitArrayInit(Addre >> currentElement->addIncoming(element, entryBB); >> >> // Emit the actual filler expression. >> -LValue elementLV = >> - CGF.MakeAddrLValue(Address(currentElement, elementAlign), >> elementType); >> -if (filler) >> - EmitInitializationToLValue(filler, elementLV); >> -else >> - EmitNullInitializationToLValue(elementLV); >> +{ >> + // C++1z [class.temporary]p5: >> + // when a default constructor is called to initialize an element of >> + // an array with no corresponding initializer [...] the destruction >> of >> + // every temporary created in a default argument is sequenced before >> + // the construction of the next array element, if any >> + CodeGenFunction::RunCleanupsScope CleanupsScope(CGF); >> + LValue elementLV = >> +CGF.MakeAddrLValue(Address(currentElement, elementAlign), >> elementType); >> + if (filler) >> +EmitInitializationToLValue(filler, elementLV); >> + else >> +EmitNullInitializationToLValue(elementLV); >> +} >> >> // Move on to the next element. >> llvm::Value *nextElement = >> >> Added: cfe/trunk/test/CodeGenCXX/array-default-argument.cpp >> URL: >> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/array-default-argument.cpp?rev=302750&view=auto >> == >> --- cfe/trunk/test/CodeGenCXX/array-default-argument.cpp (added) >> +++ cfe/trunk/test/CodeGenCXX/array-default-argument.cpp Wed May 10 19:17:17 >> 2017 >> @@ -0,0 +1,36 @@ >> +// RUN: %clang_cc1 -emit-llvm -o - %s -triple %itanium_abi_triple | >> FileCheck %s >> +// RUN: %clang_cc1 -emit-llvm -o - %s -triple %itanium_abi_triple >> -fexceptions -fcxx-exceptions | FileCheck %s --check-prefix=CHECK >> --check-prefix=CHECK-EH >> + >> +struct A { >> + A(); >> + ~A(); >> +}; >> + >> +struct B { >> + B(A = A()); >> + ~B(); >> +}; >> + >> +void f(); >> +// CHECK-LABEL: define void @_Z1gv() >> +void g() { >> + // CHECK: br label %[[LOOP:.*]] >> + >> + // [[LOOP]]: >> + // CHECK: {{call|invoke}} void @_ZN1AC1Ev([[TEMPORARY:.*]]) >> + // CHECK-EH: unwind label %[[PARTIAL_ARRAY_LPAD:.*]] >> + // CHECK: {{call|invoke}} void @_ZN1BC1E1A({{.*}}, [[TEMPORARY]]) >> + // CHECK-EH: unwind label %[[A_AND_PARTIAL_ARRAY_LPAD:.*]] >> + // CHECK: {{call|invoke}} void @_ZN1AD1Ev([[TEMPORARY]]) >> + // CHECK-EH: unwind label %[[PARTIAL_ARRAY_LPAD]] >> + // CHECK: getelementptr {{.*}}, i{{[0-9]*}} 1 >> + // CHECK: icmp eq >> + // CHECK: br i1 {{.*}} label %[[LOOP]] >> + B b[5]; >> + >> + // CHECK: {{call|invoke}} void @_Z1fv() >> + f(); >> + >> + // CHECK-NOT: @_ZN1AD1Ev( >> + // CHECK: {{call|invoke}} void @_ZN1BD1Ev( >> +} >> >> >> ___ >> cfe-commits mailing list >> cfe-commits@lists.llvm.org >> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
Re: r302750 - PR22877: When constructing an array via a constructor with a default argument
On 11 May 2017 at 21:14, Richard Smith wrote: > Thanks for the revert, fixed up and recommitted in r302817. > > Any idea why not a single buildbot sent me any email about this? :( (A > couple of them were red at the previous change too, but some of them were > not (eg. clang-cmake-armv7-a15). Hm, I have no idea... @Renato, thoughts? > > On 11 May 2017 at 01:28, Diana Picus wrote: >> >> Hexagon too: >> http://lab.llvm.org:8011/builders/clang-hexagon-elf/builds/7916 >> >> On 11 May 2017 at 10:27, Diana Picus wrote: >> > Hi Richard, >> > >> > I reverted this and its fixup in r302776 since some of the ARM bots >> > were still broken: >> > http://lab.llvm.org:8011/builders/clang-cmake-armv7-a15/builds/6969 >> > http://lab.llvm.org:8011/builders/clang-cmake-thumbv7-a15/builds/6959 >> > http://lab.llvm.org:8011/builders/clang-cmake-armv7-a15-full/builds/6717 >> > >> > http://lab.llvm.org:8011/builders/clang-cmake-thumbv7-a15-full-sh/builds/1518 >> > >> > Sorry, >> > Diana >> > >> > On 11 May 2017 at 02:17, Richard Smith via cfe-commits >> > wrote: >> >> Author: rsmith >> >> Date: Wed May 10 19:17:17 2017 >> >> New Revision: 302750 >> >> >> >> URL: http://llvm.org/viewvc/llvm-project?rev=302750&view=rev >> >> Log: >> >> PR22877: When constructing an array via a constructor with a default >> >> argument >> >> in list-initialization, run cleanups for the default argument after >> >> each >> >> iteration of the initialization loop. >> >> >> >> We previously only ran the destructor for any temporary once, at the >> >> end of the >> >> complete loop, rather than once per iteration! >> >> >> >> Added: >> >> cfe/trunk/test/CodeGenCXX/array-default-argument.cpp >> >> Modified: >> >> cfe/trunk/lib/CodeGen/CGExprAgg.cpp >> >> >> >> Modified: cfe/trunk/lib/CodeGen/CGExprAgg.cpp >> >> URL: >> >> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGExprAgg.cpp?rev=302750&r1=302749&r2=302750&view=diff >> >> >> >> == >> >> --- cfe/trunk/lib/CodeGen/CGExprAgg.cpp (original) >> >> +++ cfe/trunk/lib/CodeGen/CGExprAgg.cpp Wed May 10 19:17:17 2017 >> >> @@ -512,12 +512,20 @@ void AggExprEmitter::EmitArrayInit(Addre >> >> currentElement->addIncoming(element, entryBB); >> >> >> >> // Emit the actual filler expression. >> >> -LValue elementLV = >> >> - CGF.MakeAddrLValue(Address(currentElement, elementAlign), >> >> elementType); >> >> -if (filler) >> >> - EmitInitializationToLValue(filler, elementLV); >> >> -else >> >> - EmitNullInitializationToLValue(elementLV); >> >> +{ >> >> + // C++1z [class.temporary]p5: >> >> + // when a default constructor is called to initialize an >> >> element of >> >> + // an array with no corresponding initializer [...] the >> >> destruction of >> >> + // every temporary created in a default argument is sequenced >> >> before >> >> + // the construction of the next array element, if any >> >> + CodeGenFunction::RunCleanupsScope CleanupsScope(CGF); >> >> + LValue elementLV = >> >> +CGF.MakeAddrLValue(Address(currentElement, elementAlign), >> >> elementType); >> >> + if (filler) >> >> +EmitInitializationToLValue(filler, elementLV); >> >> + else >> >> +EmitNullInitializationToLValue(elementLV); >> >> +} >> >> >> >> // Move on to the next element. >> >> llvm::Value *nextElement = >> >> >> >> Added: cfe/trunk/test/CodeGenCXX/array-default-argument.cpp >> >> URL: >> >> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/array-default-argument.cpp?rev=302750&view=auto >> >> >> >> == >> >> --- cfe/trunk/test/CodeGenCXX/array-default-argument.cpp (added) >> >> +++ cfe/trunk/test/CodeGenCXX/array-default-argument.cpp Wed May 10 >> >> 19:17:17 2017 >> >> @@ -0,0 +1,36 @@ >> >> +// RUN: %clang_cc1 -emit-llvm -o - %s -triple %itanium_abi_triple | >> >> FileCheck %s >> >> +// RUN: %clang_cc1 -emit-llvm -o - %s -triple %itanium_abi_triple >> >> -fexceptions -fcxx-exceptions | FileCheck %s --check-prefix=CHECK >> >> --check-prefix=CHECK-EH >> >> + >> >> +struct A { >> >> + A(); >> >> + ~A(); >> >> +}; >> >> + >> >> +struct B { >> >> + B(A = A()); >> >> + ~B(); >> >> +}; >> >> + >> >> +void f(); >> >> +// CHECK-LABEL: define void @_Z1gv() >> >> +void g() { >> >> + // CHECK: br label %[[LOOP:.*]] >> >> + >> >> + // [[LOOP]]: >> >> + // CHECK: {{call|invoke}} void @_ZN1AC1Ev([[TEMPORARY:.*]]) >> >> + // CHECK-EH: unwind label %[[PARTIAL_ARRAY_LPAD:.*]] >> >> + // CHECK: {{call|invoke}} void @_ZN1BC1E1A({{.*}}, [[TEMPORARY]]) >> >> + // CHECK-EH: unwind label %[[A_AND_PARTIAL_ARRAY_LPAD:.*]] >> >> + // CHECK: {{call|invoke}} void @_ZN1AD1Ev([[TEMPORARY]]) >> >> + // CHECK-EH: unwind label %[[PARTIAL_ARRAY_LPAD]] >> >> + // CHECK: getelementptr {{.*}}, i{{[0-9]*}} 1 >> >> + // CHECK: icmp eq >> >> + //
Re: r286098 - [OPENMP] Fixed capturing of VLA variables.
Hi, This has been breaking the bots for almost an hour. Can you fix/revert? http://lab.llvm.org:8011/builders/clang-cmake-armv7-a15/builds/304 http://lab.llvm.org:8011/builders/clang-hexagon-elf/builds/657 http://lab.llvm.org:8011/builders/clang-x86-windows-msvc2015/builds/347 Thanks, Diana On 7 November 2016 at 10:07, Alexey Bataev via cfe-commits < cfe-commits@lists.llvm.org> wrote: > Author: abataev > Date: Mon Nov 7 02:07:25 2016 > New Revision: 286098 > > URL: http://llvm.org/viewvc/llvm-project?rev=286098&view=rev > Log: > [OPENMP] Fixed capturing of VLA variables. > > After some changes in codegen capturing of VLA variables in OpenMP > regions was broken, causing compiler crash. Patch fixes this issue. > > Modified: > cfe/trunk/lib/CodeGen/CGExpr.cpp > cfe/trunk/lib/CodeGen/CGStmtOpenMP.cpp > cfe/trunk/test/OpenMP/parallel_codegen.cpp > > Modified: cfe/trunk/lib/CodeGen/CGExpr.cpp > URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/ > CGExpr.cpp?rev=286098&r1=286097&r2=286098&view=diff > > == > --- cfe/trunk/lib/CodeGen/CGExpr.cpp (original) > +++ cfe/trunk/lib/CodeGen/CGExpr.cpp Mon Nov 7 02:07:25 2016 > @@ -2127,12 +2127,11 @@ LValue CodeGenFunction::EmitDeclRefLValu >if (auto *FD = LambdaCaptureFields.lookup(VD)) > return EmitCapturedFieldLValue(*this, FD, CXXABIThisValue); >else if (CapturedStmtInfo) { > -auto it = LocalDeclMap.find(VD); > -if (it != LocalDeclMap.end()) { > - if (auto RefTy = VD->getType()->getAs()) { > -return EmitLoadOfReferenceLValue(it->second, RefTy); > - } > - return MakeAddrLValue(it->second, T); > +auto I = LocalDeclMap.find(VD); > +if (I != LocalDeclMap.end()) { > + if (auto RefTy = VD->getType()->getAs()) > +return EmitLoadOfReferenceLValue(I->second, RefTy); > + return MakeAddrLValue(I->second, T); > } > LValue CapLVal = > EmitCapturedFieldLValue(*this, CapturedStmtInfo->lookup(VD), > > Modified: cfe/trunk/lib/CodeGen/CGStmtOpenMP.cpp > URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/ > CGStmtOpenMP.cpp?rev=286098&r1=286097&r2=286098&view=diff > > == > --- cfe/trunk/lib/CodeGen/CGStmtOpenMP.cpp (original) > +++ cfe/trunk/lib/CodeGen/CGStmtOpenMP.cpp Mon Nov 7 02:07:25 2016 > @@ -307,7 +307,7 @@ CodeGenFunction::GenerateOpenMPCapturedS > if (ArgLVal.getType()->isLValueReferenceType()) { >ArgAddr = EmitLoadOfReference( >ArgAddr, ArgLVal.getType()->castAs()); > -} else { > +} else if (!VarTy->isVariablyModifiedType() || > !VarTy->isPointerType()) { >assert(ArgLVal.getType()->isPointerType()); >ArgAddr = EmitLoadOfPointer( >ArgAddr, ArgLVal.getType()->castAs()); > > Modified: cfe/trunk/test/OpenMP/parallel_codegen.cpp > URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/OpenMP/ > parallel_codegen.cpp?rev=286098&r1=286097&r2=286098&view=diff > > == > --- cfe/trunk/test/OpenMP/parallel_codegen.cpp (original) > +++ cfe/trunk/test/OpenMP/parallel_codegen.cpp Mon Nov 7 02:07:25 2016 > @@ -10,7 +10,7 @@ > // CHECK-DEBUG-DAG: %ident_t = type { i32, i32, i32, i32, i8* } > // CHECK-DEBUG-DAG: [[STR:@.+]] = private unnamed_addr constant [23 x > i8] c";unknown;unknown;0;0;;\00" > // CHECK-DEBUG-DAG: [[DEF_LOC_2:@.+]] = private unnamed_addr constant > %ident_t { i32 0, i32 2, i32 0, i32 0, i8* getelementptr inbounds ([23 x > i8], [23 x i8]* [[STR]], i32 0, i32 0) } > -// CHECK-DEBUG-DAG: [[LOC1:@.+]] = private unnamed_addr constant [{{.+}} > x i8] c";{{.*}}parallel_codegen.cpp;main;[[@LINE+14]];9;;\00" > +// CHECK-DEBUG-DAG: [[LOC1:@.+]] = private unnamed_addr constant [{{.+}} > x i8] c";{{.*}}parallel_codegen.cpp;main;[[@LINE+15]];9;;\00" > // CHECK-DEBUG-DAG: [[LOC2:@.+]] = private unnamed_addr constant [{{.+}} > x i8] c";{{.*}}parallel_codegen.cpp;tmain;[[@LINE+7]];9;;\00" > > template > @@ -24,17 +24,19 @@ int tmain(T argc) { > } > > int main (int argc, char **argv) { > + int a[argc]; > #pragma omp parallel > - foo(argc); > + foo(a[1]); >return tmain(argv); > } > > // CHECK-LABEL: define {{[a-z\_\b]*[ ]?i32}} @main({{i32[ ]?[a-z]*}} > %argc, i8** %argv) > // CHECK: store i32 %argc, i32* [[ARGC_ADDR:%.+]], > -// CHECK: call {{.*}}void (%ident_t*, i32, void (i32*, i32*, ...)*, ...) > @__kmpc_fork_call(%ident_t* [[DEF_LOC_2]], i32 1, void (i32*, i32*, ...)* > bitcast (void (i32*, i32*, i32*)* [[OMP_OUTLINED:@.+]] to void (i32*, > i32*, ...)*), i32* [[ARGC_ADDR]]) > +// CHECK: [[VLA:%.+]] = alloca i32, i64 [[VLA_SIZE:%[^,]+]], > +// CHECK: call {{.*}}void (%ident_t*, i32, void (i32*, i32*, ...)*, ...) > @__kmpc_fork_call(%ident_t* [[DEF_L
r286102 - Revert "[OPENMP] Fixed capturing of VLA variables."
Author: rovka Date: Mon Nov 7 04:01:43 2016 New Revision: 286102 URL: http://llvm.org/viewvc/llvm-project?rev=286102&view=rev Log: Revert "[OPENMP] Fixed capturing of VLA variables." This reverts commit r286098 because the modified test breaks on many of the buildbots. Modified: cfe/trunk/lib/CodeGen/CGExpr.cpp cfe/trunk/lib/CodeGen/CGStmtOpenMP.cpp cfe/trunk/test/OpenMP/parallel_codegen.cpp Modified: cfe/trunk/lib/CodeGen/CGExpr.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGExpr.cpp?rev=286102&r1=286101&r2=286102&view=diff == --- cfe/trunk/lib/CodeGen/CGExpr.cpp (original) +++ cfe/trunk/lib/CodeGen/CGExpr.cpp Mon Nov 7 04:01:43 2016 @@ -2127,11 +2127,12 @@ LValue CodeGenFunction::EmitDeclRefLValu if (auto *FD = LambdaCaptureFields.lookup(VD)) return EmitCapturedFieldLValue(*this, FD, CXXABIThisValue); else if (CapturedStmtInfo) { -auto I = LocalDeclMap.find(VD); -if (I != LocalDeclMap.end()) { - if (auto RefTy = VD->getType()->getAs()) -return EmitLoadOfReferenceLValue(I->second, RefTy); - return MakeAddrLValue(I->second, T); +auto it = LocalDeclMap.find(VD); +if (it != LocalDeclMap.end()) { + if (auto RefTy = VD->getType()->getAs()) { +return EmitLoadOfReferenceLValue(it->second, RefTy); + } + return MakeAddrLValue(it->second, T); } LValue CapLVal = EmitCapturedFieldLValue(*this, CapturedStmtInfo->lookup(VD), Modified: cfe/trunk/lib/CodeGen/CGStmtOpenMP.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGStmtOpenMP.cpp?rev=286102&r1=286101&r2=286102&view=diff == --- cfe/trunk/lib/CodeGen/CGStmtOpenMP.cpp (original) +++ cfe/trunk/lib/CodeGen/CGStmtOpenMP.cpp Mon Nov 7 04:01:43 2016 @@ -307,7 +307,7 @@ CodeGenFunction::GenerateOpenMPCapturedS if (ArgLVal.getType()->isLValueReferenceType()) { ArgAddr = EmitLoadOfReference( ArgAddr, ArgLVal.getType()->castAs()); -} else if (!VarTy->isVariablyModifiedType() || !VarTy->isPointerType()) { +} else { assert(ArgLVal.getType()->isPointerType()); ArgAddr = EmitLoadOfPointer( ArgAddr, ArgLVal.getType()->castAs()); Modified: cfe/trunk/test/OpenMP/parallel_codegen.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/OpenMP/parallel_codegen.cpp?rev=286102&r1=286101&r2=286102&view=diff == --- cfe/trunk/test/OpenMP/parallel_codegen.cpp (original) +++ cfe/trunk/test/OpenMP/parallel_codegen.cpp Mon Nov 7 04:01:43 2016 @@ -10,7 +10,7 @@ // CHECK-DEBUG-DAG: %ident_t = type { i32, i32, i32, i32, i8* } // CHECK-DEBUG-DAG: [[STR:@.+]] = private unnamed_addr constant [23 x i8] c";unknown;unknown;0;0;;\00" // CHECK-DEBUG-DAG: [[DEF_LOC_2:@.+]] = private unnamed_addr constant %ident_t { i32 0, i32 2, i32 0, i32 0, i8* getelementptr inbounds ([23 x i8], [23 x i8]* [[STR]], i32 0, i32 0) } -// CHECK-DEBUG-DAG: [[LOC1:@.+]] = private unnamed_addr constant [{{.+}} x i8] c";{{.*}}parallel_codegen.cpp;main;[[@LINE+15]];9;;\00" +// CHECK-DEBUG-DAG: [[LOC1:@.+]] = private unnamed_addr constant [{{.+}} x i8] c";{{.*}}parallel_codegen.cpp;main;[[@LINE+14]];9;;\00" // CHECK-DEBUG-DAG: [[LOC2:@.+]] = private unnamed_addr constant [{{.+}} x i8] c";{{.*}}parallel_codegen.cpp;tmain;[[@LINE+7]];9;;\00" template @@ -24,19 +24,17 @@ int tmain(T argc) { } int main (int argc, char **argv) { - int a[argc]; #pragma omp parallel - foo(a[1]); + foo(argc); return tmain(argv); } // CHECK-LABEL: define {{[a-z\_\b]*[ ]?i32}} @main({{i32[ ]?[a-z]*}} %argc, i8** %argv) // CHECK: store i32 %argc, i32* [[ARGC_ADDR:%.+]], -// CHECK: [[VLA:%.+]] = alloca i32, i64 [[VLA_SIZE:%[^,]+]], -// CHECK: call {{.*}}void (%ident_t*, i32, void (i32*, i32*, ...)*, ...) @__kmpc_fork_call(%ident_t* [[DEF_LOC_2]], i32 2, void (i32*, i32*, ...)* bitcast (void (i32*, i32*, i64, i32*)* [[OMP_OUTLINED:@.+]] to void (i32*, i32*, ...)*), i64 [[VLA_SIZE]], i32* [[VLA]]) +// CHECK: call {{.*}}void (%ident_t*, i32, void (i32*, i32*, ...)*, ...) @__kmpc_fork_call(%ident_t* [[DEF_LOC_2]], i32 1, void (i32*, i32*, ...)* bitcast (void (i32*, i32*, i32*)* [[OMP_OUTLINED:@.+]] to void (i32*, i32*, ...)*), i32* [[ARGC_ADDR]]) // CHECK-NEXT: [[ARGV:%.+]] = load i8**, i8*** {{%[a-z0-9.]+}} // CHECK-NEXT: [[RET:%.+]] = call {{[a-z\_\b]*[ ]?i32}} [[TMAIN:@.+tmain.+]](i8** [[ARGV]]) -// CHECK: ret i32 +// CHECK-NEXT: ret i32 [[RET]] // CHECK-NEXT: } // CHECK-DEBUG-LABEL: define i32 @main(i32 %argc, i8** %argv) // CHECK-DEBUG: [[LOC_2_ADDR:%.+]] = alloca %ident_t @@ -44,33 +42,30 @@ int main (int argc, char **argv) { // CHECK-DEBUG-NEXT: [[KMPC_DEFAULT_LOC_
Re: r286098 - [OPENMP] Fixed capturing of VLA variables.
Hi Alexey, If it is not a simple, quick fix that you can do, it is customary to revert so the buildbots become green again. Otherwise, if people commit other things that break the build they will not get emails and it will be much harder to fix the whole thing. I'll revert this for you and you can commit the fixed version later on, when it's ready. Thanks, Diana On 7 November 2016 at 11:54, Alexey Bataev wrote: > Hi Diana, will fix it in couple hours. > > Best regards, > Alexey Bataev > > 7 нояб. 2016 г., в 12:38, Diana Picus написал(а): > > Hi, > > This has been breaking the bots for almost an hour. Can you fix/revert? > > http://lab.llvm.org:8011/builders/clang-cmake-armv7-a15/builds/304 > http://lab.llvm.org:8011/builders/clang-hexagon-elf/builds/657 > http://lab.llvm.org:8011/builders/clang-x86-windows-msvc2015/builds/347 > > Thanks, > Diana > > On 7 November 2016 at 10:07, Alexey Bataev via cfe-commits < > cfe-commits@lists.llvm.org> wrote: > >> Author: abataev >> Date: Mon Nov 7 02:07:25 2016 >> New Revision: 286098 >> >> URL: http://llvm.org/viewvc/llvm-project?rev=286098&view=rev >> Log: >> [OPENMP] Fixed capturing of VLA variables. >> >> After some changes in codegen capturing of VLA variables in OpenMP >> regions was broken, causing compiler crash. Patch fixes this issue. >> >> Modified: >> cfe/trunk/lib/CodeGen/CGExpr.cpp >> cfe/trunk/lib/CodeGen/CGStmtOpenMP.cpp >> cfe/trunk/test/OpenMP/parallel_codegen.cpp >> >> Modified: cfe/trunk/lib/CodeGen/CGExpr.cpp >> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CG >> Expr.cpp?rev=286098&r1=286097&r2=286098&view=diff >> >> == >> --- cfe/trunk/lib/CodeGen/CGExpr.cpp (original) >> +++ cfe/trunk/lib/CodeGen/CGExpr.cpp Mon Nov 7 02:07:25 2016 >> @@ -2127,12 +2127,11 @@ LValue CodeGenFunction::EmitDeclRefLValu >>if (auto *FD = LambdaCaptureFields.lookup(VD)) >> return EmitCapturedFieldLValue(*this, FD, CXXABIThisValue); >>else if (CapturedStmtInfo) { >> -auto it = LocalDeclMap.find(VD); >> -if (it != LocalDeclMap.end()) { >> - if (auto RefTy = VD->getType()->getAs()) { >> -return EmitLoadOfReferenceLValue(it->second, RefTy); >> - } >> - return MakeAddrLValue(it->second, T); >> +auto I = LocalDeclMap.find(VD); >> +if (I != LocalDeclMap.end()) { >> + if (auto RefTy = VD->getType()->getAs()) >> +return EmitLoadOfReferenceLValue(I->second, RefTy); >> + return MakeAddrLValue(I->second, T); >> } >> LValue CapLVal = >> EmitCapturedFieldLValue(*this, CapturedStmtInfo->lookup(VD), >> >> Modified: cfe/trunk/lib/CodeGen/CGStmtOpenMP.cpp >> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CG >> StmtOpenMP.cpp?rev=286098&r1=286097&r2=286098&view=diff >> >> == >> --- cfe/trunk/lib/CodeGen/CGStmtOpenMP.cpp (original) >> +++ cfe/trunk/lib/CodeGen/CGStmtOpenMP.cpp Mon Nov 7 02:07:25 2016 >> @@ -307,7 +307,7 @@ CodeGenFunction::GenerateOpenMPCapturedS >> if (ArgLVal.getType()->isLValueReferenceType()) { >>ArgAddr = EmitLoadOfReference( >>ArgAddr, ArgLVal.getType()->castAs()); >> -} else { >> +} else if (!VarTy->isVariablyModifiedType() || >> !VarTy->isPointerType()) { >>assert(ArgLVal.getType()->isPointerType()); >>ArgAddr = EmitLoadOfPointer( >>ArgAddr, ArgLVal.getType()->castAs()); >> >> Modified: cfe/trunk/test/OpenMP/parallel_codegen.cpp >> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/OpenMP/pa >> rallel_codegen.cpp?rev=286098&r1=286097&r2=286098&view=diff >> >> == >> --- cfe/trunk/test/OpenMP/parallel_codegen.cpp (original) >> +++ cfe/trunk/test/OpenMP/parallel_codegen.cpp Mon Nov 7 02:07:25 2016 >> @@ -10,7 +10,7 @@ >> // CHECK-DEBUG-DAG: %ident_t = type { i32, i32, i32, i32, i8* } >> // CHECK-DEBUG-DAG: [[STR:@.+]] = private unnamed_addr constant [23 x >> i8] c";unknown;unknown;0;0;;\00" >> // CHECK-DEBUG-DAG: [[DEF_LOC_2:@.+]] = private unnamed_addr constant >> %ident_t { i32 0, i32 2, i32 0, i32 0, i8* getelementptr inbounds ([23 x >> i8], [23 x i8]* [[STR]], i32 0, i32 0) } >> -// CHECK-DEBUG-DAG: [[LOC1:@.+]] = private unnamed_addr constant >> [{{.+}} x i8] c";{{.*}}parallel_codegen.cpp;main;[[@LINE+14]];9;;\00" >> +// CHECK-DEBUG-DAG: [[LOC1:@.+]] = private unnamed_addr constant >> [{{.+}} x i8] c";{{.*}}parallel_codegen.cpp;main;[[@LINE+15]];9;;\00" >> // CHECK-DEBUG-DAG: [[LOC2:@.+]] = private unnamed_addr constant >> [{{.+}} x i8] c";{{.*}}parallel_codegen.cpp;tmain;[[@LINE+7]];9;;\00" >> >> template >> @@ -24,17 +24,19 @@ int tmain(T argc) { >> } >> >> int main (int argc, char **argv) { >> + int a[argc]; >> #pragma
[PATCH] D23054: [clang-cl] Fix 2 pch tests to use x86_64 as target
rovka created this revision. rovka added a reviewer: thakis. rovka added subscribers: cfe-commits, hans. Herald added a subscriber: aemerson. These tests require x86-registered-target, but they don't force the target as x86 on the command line, which means they will be run and they might fail when building the x86 backend on another platform (such as AArch64). Fixes PR28797 https://llvm.org/bugs/show_bug.cgi?id=28797 https://reviews.llvm.org/D23054 Files: test/Driver/cl-pch-search.cpp test/Driver/cl-pch-showincludes.cpp Index: test/Driver/cl-pch-showincludes.cpp === --- test/Driver/cl-pch-showincludes.cpp +++ test/Driver/cl-pch-showincludes.cpp @@ -8,39 +8,39 @@ // When building the pch, header1.h (included by header2.h), header2.h (the pch // input itself) and header3.h (included directly, above) should be printed. -// RUN: %clang_cl -Werror /showIncludes /I%S/Inputs /Ycheader2.h /FIheader2.h /Fp%t.pch /c /Fo%t -- %s \ +// RUN: %clang_cl -Werror --target=x86_64 /showIncludes /I%S/Inputs /Ycheader2.h /FIheader2.h /Fp%t.pch /c /Fo%t -- %s \ // RUN: | FileCheck --strict-whitespace -check-prefix=CHECK-YC %s // CHECK-YC: Note: including file: {{[^ ]*header2.h}} // CHECK-YC: Note: including file: {{[^ ]*header1.h}} // CHECK-YC: Note: including file: {{[^ ]*header3.h}} // When using the pch, only the direct include is printed. -// RUN: %clang_cl -Werror /showIncludes /I%S/Inputs /Yuheader2.h /FIheader2.h /Fp%t.pch /c /Fo%t -- %s \ +// RUN: %clang_cl -Werror --target=x86_64 /showIncludes /I%S/Inputs /Yuheader2.h /FIheader2.h /Fp%t.pch /c /Fo%t -- %s \ // RUN: | FileCheck --strict-whitespace -check-prefix=CHECK-YU %s // CHECK-YU-NOT: Note: including file: {{.*pch}} // CHECK-YU-NOT: Note: including file: {{.*header1.h}} // CHECK-YU-NOT: Note: including file: {{.*header2.h}} // CHECK-YU: Note: including file: {{[^ ]*header3.h}} // When not using pch at all, all the /FI files are printed. -// RUN: %clang_cl -Werror /showIncludes /I%S/Inputs /FIheader2.h /c /Fo%t -- %s \ +// RUN: %clang_cl -Werror --target=x86_64 /showIncludes /I%S/Inputs /FIheader2.h /c /Fo%t -- %s \ // RUN: | FileCheck --strict-whitespace -check-prefix=CHECK-FI %s // CHECK-FI: Note: including file: {{[^ ]*header2.h}} // CHECK-FI: Note: including file: {{[^ ]*header1.h}} // CHECK-FI: Note: including file: {{[^ ]*header3.h}} // Also check that /FI arguments before the /Yc / /Yu flags are printed right. // /FI flags before the /Yc arg should be printed, /FI flags after it shouldn't. -// RUN: %clang_cl -Werror /showIncludes /I%S/Inputs /Ycheader2.h /FIheader0.h /FIheader2.h /FIheader4.h /Fp%t.pch /c /Fo%t -- %s \ +// RUN: %clang_cl -Werror --target=x86_64 /showIncludes /I%S/Inputs /Ycheader2.h /FIheader0.h /FIheader2.h /FIheader4.h /Fp%t.pch /c /Fo%t -- %s \ // RUN: | FileCheck --strict-whitespace -check-prefix=CHECK-YCFI %s // CHECK-YCFI: Note: including file: {{[^ ]*header0.h}} // CHECK-YCFI: Note: including file: {{[^ ]*header2.h}} // CHECK-YCFI: Note: including file: {{[^ ]*header1.h}} // CHECK-YCFI: Note: including file: {{[^ ]*header4.h}} // CHECK-YCFI: Note: including file: {{[^ ]*header3.h}} -// RUN: %clang_cl -Werror /showIncludes /I%S/Inputs /Yuheader2.h /FIheader0.h /FIheader2.h /FIheader4.h /Fp%t.pch /c /Fo%t -- %s \ +// RUN: %clang_cl -Werror --target=x86_64 /showIncludes /I%S/Inputs /Yuheader2.h /FIheader0.h /FIheader2.h /FIheader4.h /Fp%t.pch /c /Fo%t -- %s \ // RUN: | FileCheck --strict-whitespace -check-prefix=CHECK-YUFI %s // CHECK-YUFI-NOT: Note: including file: {{.*pch}} // CHECK-YUFI-NOT: Note: including file: {{.*header0.h}} Index: test/Driver/cl-pch-search.cpp === --- test/Driver/cl-pch-search.cpp +++ test/Driver/cl-pch-search.cpp @@ -3,4 +3,4 @@ // REQUIRES: x86-registered-target // Check that pchfile.h next to to pchfile.cc is found correctly. -// RUN: %clang_cl -Werror /Ycpchfile.h /FIpchfile.h /c /Fo%t.obj /Fp%t.pch -- %S/Inputs/pchfile.cpp +// RUN: %clang_cl -Werror --target=x86_64 /Ycpchfile.h /FIpchfile.h /c /Fo%t.obj /Fp%t.pch -- %S/Inputs/pchfile.cpp Index: test/Driver/cl-pch-showincludes.cpp === --- test/Driver/cl-pch-showincludes.cpp +++ test/Driver/cl-pch-showincludes.cpp @@ -8,39 +8,39 @@ // When building the pch, header1.h (included by header2.h), header2.h (the pch // input itself) and header3.h (included directly, above) should be printed. -// RUN: %clang_cl -Werror /showIncludes /I%S/Inputs /Ycheader2.h /FIheader2.h /Fp%t.pch /c /Fo%t -- %s \ +// RUN: %clang_cl -Werror --target=x86_64 /showIncludes /I%S/Inputs /Ycheader2.h /FIheader2.h /Fp%t.pch /c /Fo%t -- %s \ // RUN: | FileCheck --strict-whitespace -check-prefix=CHECK-YC %s // CHECK-YC: Note: including file: {{[^ ]*header2.h}} // CHECK-YC: Note: including file: {{[^ ]*header1.
Re: [PATCH] D23054: [clang-cl] Fix 2 pch tests to use x86_64 as target
rovka added a comment. This seems to be the case for other similar tests as well (e.g. cl-pch-errorhandling.cpp requires x86-registered-target, but doesn't force it on the command line), but they're not currently crashing. I can update those as well if people think it's the right thing to do. https://reviews.llvm.org/D23054 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
Re: [PATCH] D23054: [clang-cl] Fix 2 pch tests to use x86_64 as target
rovka added a comment. In https://reviews.llvm.org/D23054#503246, @rengolin wrote: > All tests should have the target explicit, so I'd advocate for all of them to > be changed. Coming right up... > Also, we need to make sure --target=x86_64 is enough on Windows. I remember > some -target=arm not being enough (arm-eabi was enough, for some reason). It's enough, I've seen it used in other clang-cl tests. https://reviews.llvm.org/D23054 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
Re: [PATCH] D23054: [clang-cl] Fix PCH tests to use x86_64 as target
rovka retitled this revision from "[clang-cl] Fix 2 pch tests to use x86_64 as target" to "[clang-cl] Fix PCH tests to use x86_64 as target". rovka updated this revision to Diff 66467. rovka added a comment. Added cl-pch-errorhandling.cpp https://reviews.llvm.org/D23054 Files: test/Driver/cl-pch-errorhandling.cpp test/Driver/cl-pch-search.cpp test/Driver/cl-pch-showincludes.cpp Index: test/Driver/cl-pch-showincludes.cpp === --- test/Driver/cl-pch-showincludes.cpp +++ test/Driver/cl-pch-showincludes.cpp @@ -8,39 +8,39 @@ // When building the pch, header1.h (included by header2.h), header2.h (the pch // input itself) and header3.h (included directly, above) should be printed. -// RUN: %clang_cl -Werror /showIncludes /I%S/Inputs /Ycheader2.h /FIheader2.h /Fp%t.pch /c /Fo%t -- %s \ +// RUN: %clang_cl -Werror --target=x86_64 /showIncludes /I%S/Inputs /Ycheader2.h /FIheader2.h /Fp%t.pch /c /Fo%t -- %s \ // RUN: | FileCheck --strict-whitespace -check-prefix=CHECK-YC %s // CHECK-YC: Note: including file: {{[^ ]*header2.h}} // CHECK-YC: Note: including file: {{[^ ]*header1.h}} // CHECK-YC: Note: including file: {{[^ ]*header3.h}} // When using the pch, only the direct include is printed. -// RUN: %clang_cl -Werror /showIncludes /I%S/Inputs /Yuheader2.h /FIheader2.h /Fp%t.pch /c /Fo%t -- %s \ +// RUN: %clang_cl -Werror --target=x86_64 /showIncludes /I%S/Inputs /Yuheader2.h /FIheader2.h /Fp%t.pch /c /Fo%t -- %s \ // RUN: | FileCheck --strict-whitespace -check-prefix=CHECK-YU %s // CHECK-YU-NOT: Note: including file: {{.*pch}} // CHECK-YU-NOT: Note: including file: {{.*header1.h}} // CHECK-YU-NOT: Note: including file: {{.*header2.h}} // CHECK-YU: Note: including file: {{[^ ]*header3.h}} // When not using pch at all, all the /FI files are printed. -// RUN: %clang_cl -Werror /showIncludes /I%S/Inputs /FIheader2.h /c /Fo%t -- %s \ +// RUN: %clang_cl -Werror --target=x86_64 /showIncludes /I%S/Inputs /FIheader2.h /c /Fo%t -- %s \ // RUN: | FileCheck --strict-whitespace -check-prefix=CHECK-FI %s // CHECK-FI: Note: including file: {{[^ ]*header2.h}} // CHECK-FI: Note: including file: {{[^ ]*header1.h}} // CHECK-FI: Note: including file: {{[^ ]*header3.h}} // Also check that /FI arguments before the /Yc / /Yu flags are printed right. // /FI flags before the /Yc arg should be printed, /FI flags after it shouldn't. -// RUN: %clang_cl -Werror /showIncludes /I%S/Inputs /Ycheader2.h /FIheader0.h /FIheader2.h /FIheader4.h /Fp%t.pch /c /Fo%t -- %s \ +// RUN: %clang_cl -Werror --target=x86_64 /showIncludes /I%S/Inputs /Ycheader2.h /FIheader0.h /FIheader2.h /FIheader4.h /Fp%t.pch /c /Fo%t -- %s \ // RUN: | FileCheck --strict-whitespace -check-prefix=CHECK-YCFI %s // CHECK-YCFI: Note: including file: {{[^ ]*header0.h}} // CHECK-YCFI: Note: including file: {{[^ ]*header2.h}} // CHECK-YCFI: Note: including file: {{[^ ]*header1.h}} // CHECK-YCFI: Note: including file: {{[^ ]*header4.h}} // CHECK-YCFI: Note: including file: {{[^ ]*header3.h}} -// RUN: %clang_cl -Werror /showIncludes /I%S/Inputs /Yuheader2.h /FIheader0.h /FIheader2.h /FIheader4.h /Fp%t.pch /c /Fo%t -- %s \ +// RUN: %clang_cl -Werror --target=x86_64 /showIncludes /I%S/Inputs /Yuheader2.h /FIheader0.h /FIheader2.h /FIheader4.h /Fp%t.pch /c /Fo%t -- %s \ // RUN: | FileCheck --strict-whitespace -check-prefix=CHECK-YUFI %s // CHECK-YUFI-NOT: Note: including file: {{.*pch}} // CHECK-YUFI-NOT: Note: including file: {{.*header0.h}} Index: test/Driver/cl-pch-search.cpp === --- test/Driver/cl-pch-search.cpp +++ test/Driver/cl-pch-search.cpp @@ -3,4 +3,4 @@ // REQUIRES: x86-registered-target // Check that pchfile.h next to to pchfile.cc is found correctly. -// RUN: %clang_cl -Werror /Ycpchfile.h /FIpchfile.h /c /Fo%t.obj /Fp%t.pch -- %S/Inputs/pchfile.cpp +// RUN: %clang_cl -Werror --target=x86_64 /Ycpchfile.h /FIpchfile.h /c /Fo%t.obj /Fp%t.pch -- %S/Inputs/pchfile.cpp Index: test/Driver/cl-pch-errorhandling.cpp === --- test/Driver/cl-pch-errorhandling.cpp +++ test/Driver/cl-pch-errorhandling.cpp @@ -6,7 +6,7 @@ // code generation, which makes this test require an x86 backend. // REQUIRES: x86-registered-target -// RUN: not %clang_cl -Werror /Yc%S/Inputs/pchfile.h /FI%S/Inputs/pchfile.h /Fp%t.pch /c -DERR_HEADER -- %s 2>&1 \ +// RUN: not %clang_cl -Werror --target=x86_64 /Yc%S/Inputs/pchfile.h /FI%S/Inputs/pchfile.h /Fp%t.pch /c -DERR_HEADER -- %s 2>&1 \ // RUN: | FileCheck %s // CHECK: nope1 Index: test/Driver/cl-pch-showincludes.cpp === --- test/Driver/cl-pch-showincludes.cpp +++ test/Driver/cl-pch-showincludes.cpp @@ -8,39 +8,39 @@ // When building the pch, header1.h (included by header2.h), header2.h (the pch // input itself) an
r277457 - [clang-cl] Fix PCH tests to use x86_64 as target
Author: rovka Date: Tue Aug 2 08:53:00 2016 New Revision: 277457 URL: http://llvm.org/viewvc/llvm-project?rev=277457&view=rev Log: [clang-cl] Fix PCH tests to use x86_64 as target These tests require x86-registered-target, but they don't force the target as x86 on the command line, which means they will be run and they might fail when building the x86 backend on another platform (such as AArch64). Fixes https://llvm.org/bugs/show_bug.cgi?id=28797 Differential Revision: https://reviews.llvm.org/D23054 Modified: cfe/trunk/test/Driver/cl-pch-errorhandling.cpp cfe/trunk/test/Driver/cl-pch-search.cpp cfe/trunk/test/Driver/cl-pch-showincludes.cpp Modified: cfe/trunk/test/Driver/cl-pch-errorhandling.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/cl-pch-errorhandling.cpp?rev=277457&r1=277456&r2=277457&view=diff == --- cfe/trunk/test/Driver/cl-pch-errorhandling.cpp (original) +++ cfe/trunk/test/Driver/cl-pch-errorhandling.cpp Tue Aug 2 08:53:00 2016 @@ -6,7 +6,7 @@ // code generation, which makes this test require an x86 backend. // REQUIRES: x86-registered-target -// RUN: not %clang_cl -Werror /Yc%S/Inputs/pchfile.h /FI%S/Inputs/pchfile.h /Fp%t.pch /c -DERR_HEADER -- %s 2>&1 \ +// RUN: not %clang_cl -Werror --target=x86_64 /Yc%S/Inputs/pchfile.h /FI%S/Inputs/pchfile.h /Fp%t.pch /c -DERR_HEADER -- %s 2>&1 \ // RUN: | FileCheck %s // CHECK: nope1 Modified: cfe/trunk/test/Driver/cl-pch-search.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/cl-pch-search.cpp?rev=277457&r1=277456&r2=277457&view=diff == --- cfe/trunk/test/Driver/cl-pch-search.cpp (original) +++ cfe/trunk/test/Driver/cl-pch-search.cpp Tue Aug 2 08:53:00 2016 @@ -3,4 +3,4 @@ // REQUIRES: x86-registered-target // Check that pchfile.h next to to pchfile.cc is found correctly. -// RUN: %clang_cl -Werror /Ycpchfile.h /FIpchfile.h /c /Fo%t.obj /Fp%t.pch -- %S/Inputs/pchfile.cpp +// RUN: %clang_cl -Werror --target=x86_64 /Ycpchfile.h /FIpchfile.h /c /Fo%t.obj /Fp%t.pch -- %S/Inputs/pchfile.cpp Modified: cfe/trunk/test/Driver/cl-pch-showincludes.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/cl-pch-showincludes.cpp?rev=277457&r1=277456&r2=277457&view=diff == --- cfe/trunk/test/Driver/cl-pch-showincludes.cpp (original) +++ cfe/trunk/test/Driver/cl-pch-showincludes.cpp Tue Aug 2 08:53:00 2016 @@ -8,14 +8,14 @@ // When building the pch, header1.h (included by header2.h), header2.h (the pch // input itself) and header3.h (included directly, above) should be printed. -// RUN: %clang_cl -Werror /showIncludes /I%S/Inputs /Ycheader2.h /FIheader2.h /Fp%t.pch /c /Fo%t -- %s \ +// RUN: %clang_cl -Werror --target=x86_64 /showIncludes /I%S/Inputs /Ycheader2.h /FIheader2.h /Fp%t.pch /c /Fo%t -- %s \ // RUN: | FileCheck --strict-whitespace -check-prefix=CHECK-YC %s // CHECK-YC: Note: including file: {{[^ ]*header2.h}} // CHECK-YC: Note: including file: {{[^ ]*header1.h}} // CHECK-YC: Note: including file: {{[^ ]*header3.h}} // When using the pch, only the direct include is printed. -// RUN: %clang_cl -Werror /showIncludes /I%S/Inputs /Yuheader2.h /FIheader2.h /Fp%t.pch /c /Fo%t -- %s \ +// RUN: %clang_cl -Werror --target=x86_64 /showIncludes /I%S/Inputs /Yuheader2.h /FIheader2.h /Fp%t.pch /c /Fo%t -- %s \ // RUN: | FileCheck --strict-whitespace -check-prefix=CHECK-YU %s // CHECK-YU-NOT: Note: including file: {{.*pch}} // CHECK-YU-NOT: Note: including file: {{.*header1.h}} @@ -23,7 +23,7 @@ // CHECK-YU: Note: including file: {{[^ ]*header3.h}} // When not using pch at all, all the /FI files are printed. -// RUN: %clang_cl -Werror /showIncludes /I%S/Inputs /FIheader2.h /c /Fo%t -- %s \ +// RUN: %clang_cl -Werror --target=x86_64 /showIncludes /I%S/Inputs /FIheader2.h /c /Fo%t -- %s \ // RUN: | FileCheck --strict-whitespace -check-prefix=CHECK-FI %s // CHECK-FI: Note: including file: {{[^ ]*header2.h}} // CHECK-FI: Note: including file: {{[^ ]*header1.h}} @@ -32,7 +32,7 @@ // Also check that /FI arguments before the /Yc / /Yu flags are printed right. // /FI flags before the /Yc arg should be printed, /FI flags after it shouldn't. -// RUN: %clang_cl -Werror /showIncludes /I%S/Inputs /Ycheader2.h /FIheader0.h /FIheader2.h /FIheader4.h /Fp%t.pch /c /Fo%t -- %s \ +// RUN: %clang_cl -Werror --target=x86_64 /showIncludes /I%S/Inputs /Ycheader2.h /FIheader0.h /FIheader2.h /FIheader4.h /Fp%t.pch /c /Fo%t -- %s \ // RUN: | FileCheck --strict-whitespace -check-prefix=CHECK-YCFI %s // CHECK-YCFI: Note: including file: {{[^ ]*header0.h}} // CHECK-YCFI: Note: including file: {{[^ ]*header2.h}} @@ -40,7 +40,7 @@ // CHECK-YCFI: Note: including file: {{[^ ]*header4.h}} // CHECK-YCFI: Note: including file: {{[^ ]*header3.h
Re: [PATCH] D23054: [clang-cl] Fix PCH tests to use x86_64 as target
This revision was automatically updated to reflect the committed changes. Closed by commit rL277457: [clang-cl] Fix PCH tests to use x86_64 as target (authored by rovka). Changed prior to commit: https://reviews.llvm.org/D23054?vs=66467&id=66468#toc Repository: rL LLVM https://reviews.llvm.org/D23054 Files: cfe/trunk/test/Driver/cl-pch-errorhandling.cpp cfe/trunk/test/Driver/cl-pch-search.cpp cfe/trunk/test/Driver/cl-pch-showincludes.cpp Index: cfe/trunk/test/Driver/cl-pch-search.cpp === --- cfe/trunk/test/Driver/cl-pch-search.cpp +++ cfe/trunk/test/Driver/cl-pch-search.cpp @@ -3,4 +3,4 @@ // REQUIRES: x86-registered-target // Check that pchfile.h next to to pchfile.cc is found correctly. -// RUN: %clang_cl -Werror /Ycpchfile.h /FIpchfile.h /c /Fo%t.obj /Fp%t.pch -- %S/Inputs/pchfile.cpp +// RUN: %clang_cl -Werror --target=x86_64 /Ycpchfile.h /FIpchfile.h /c /Fo%t.obj /Fp%t.pch -- %S/Inputs/pchfile.cpp Index: cfe/trunk/test/Driver/cl-pch-showincludes.cpp === --- cfe/trunk/test/Driver/cl-pch-showincludes.cpp +++ cfe/trunk/test/Driver/cl-pch-showincludes.cpp @@ -8,39 +8,39 @@ // When building the pch, header1.h (included by header2.h), header2.h (the pch // input itself) and header3.h (included directly, above) should be printed. -// RUN: %clang_cl -Werror /showIncludes /I%S/Inputs /Ycheader2.h /FIheader2.h /Fp%t.pch /c /Fo%t -- %s \ +// RUN: %clang_cl -Werror --target=x86_64 /showIncludes /I%S/Inputs /Ycheader2.h /FIheader2.h /Fp%t.pch /c /Fo%t -- %s \ // RUN: | FileCheck --strict-whitespace -check-prefix=CHECK-YC %s // CHECK-YC: Note: including file: {{[^ ]*header2.h}} // CHECK-YC: Note: including file: {{[^ ]*header1.h}} // CHECK-YC: Note: including file: {{[^ ]*header3.h}} // When using the pch, only the direct include is printed. -// RUN: %clang_cl -Werror /showIncludes /I%S/Inputs /Yuheader2.h /FIheader2.h /Fp%t.pch /c /Fo%t -- %s \ +// RUN: %clang_cl -Werror --target=x86_64 /showIncludes /I%S/Inputs /Yuheader2.h /FIheader2.h /Fp%t.pch /c /Fo%t -- %s \ // RUN: | FileCheck --strict-whitespace -check-prefix=CHECK-YU %s // CHECK-YU-NOT: Note: including file: {{.*pch}} // CHECK-YU-NOT: Note: including file: {{.*header1.h}} // CHECK-YU-NOT: Note: including file: {{.*header2.h}} // CHECK-YU: Note: including file: {{[^ ]*header3.h}} // When not using pch at all, all the /FI files are printed. -// RUN: %clang_cl -Werror /showIncludes /I%S/Inputs /FIheader2.h /c /Fo%t -- %s \ +// RUN: %clang_cl -Werror --target=x86_64 /showIncludes /I%S/Inputs /FIheader2.h /c /Fo%t -- %s \ // RUN: | FileCheck --strict-whitespace -check-prefix=CHECK-FI %s // CHECK-FI: Note: including file: {{[^ ]*header2.h}} // CHECK-FI: Note: including file: {{[^ ]*header1.h}} // CHECK-FI: Note: including file: {{[^ ]*header3.h}} // Also check that /FI arguments before the /Yc / /Yu flags are printed right. // /FI flags before the /Yc arg should be printed, /FI flags after it shouldn't. -// RUN: %clang_cl -Werror /showIncludes /I%S/Inputs /Ycheader2.h /FIheader0.h /FIheader2.h /FIheader4.h /Fp%t.pch /c /Fo%t -- %s \ +// RUN: %clang_cl -Werror --target=x86_64 /showIncludes /I%S/Inputs /Ycheader2.h /FIheader0.h /FIheader2.h /FIheader4.h /Fp%t.pch /c /Fo%t -- %s \ // RUN: | FileCheck --strict-whitespace -check-prefix=CHECK-YCFI %s // CHECK-YCFI: Note: including file: {{[^ ]*header0.h}} // CHECK-YCFI: Note: including file: {{[^ ]*header2.h}} // CHECK-YCFI: Note: including file: {{[^ ]*header1.h}} // CHECK-YCFI: Note: including file: {{[^ ]*header4.h}} // CHECK-YCFI: Note: including file: {{[^ ]*header3.h}} -// RUN: %clang_cl -Werror /showIncludes /I%S/Inputs /Yuheader2.h /FIheader0.h /FIheader2.h /FIheader4.h /Fp%t.pch /c /Fo%t -- %s \ +// RUN: %clang_cl -Werror --target=x86_64 /showIncludes /I%S/Inputs /Yuheader2.h /FIheader0.h /FIheader2.h /FIheader4.h /Fp%t.pch /c /Fo%t -- %s \ // RUN: | FileCheck --strict-whitespace -check-prefix=CHECK-YUFI %s // CHECK-YUFI-NOT: Note: including file: {{.*pch}} // CHECK-YUFI-NOT: Note: including file: {{.*header0.h}} Index: cfe/trunk/test/Driver/cl-pch-errorhandling.cpp === --- cfe/trunk/test/Driver/cl-pch-errorhandling.cpp +++ cfe/trunk/test/Driver/cl-pch-errorhandling.cpp @@ -6,7 +6,7 @@ // code generation, which makes this test require an x86 backend. // REQUIRES: x86-registered-target -// RUN: not %clang_cl -Werror /Yc%S/Inputs/pchfile.h /FI%S/Inputs/pchfile.h /Fp%t.pch /c -DERR_HEADER -- %s 2>&1 \ +// RUN: not %clang_cl -Werror --target=x86_64 /Yc%S/Inputs/pchfile.h /FI%S/Inputs/pchfile.h /Fp%t.pch /c -DERR_HEADER -- %s 2>&1 \ // RUN: | FileCheck %s // CHECK: nope1 Index: cfe/trunk/test/Driver/cl-pch-search.cpp === --- cfe/trunk/test/Driver/cl-pch-search.cp
r277985 - Fix two bugs for musl-libc on ARM
Author: rovka Date: Mon Aug 8 03:27:36 2016 New Revision: 277985 URL: http://llvm.org/viewvc/llvm-project?rev=277985&view=rev Log: Fix two bugs for musl-libc on ARM Bug 1: triples like armv7-pc-linux-musl use the wrong linker name ld-musl-armv7.so.1; the right name should be ld-musl-arm.so.1, disregarding the subarch field. Bug 2: when compiler option -mhard-float is used, we should use the "hardfloat" linker, no matter whether the triple itself mentions "hardfloat". Patch by Lei Zhang! Differential Revision: https://reviews.llvm.org/D22904 Modified: cfe/trunk/lib/Driver/ToolChains.cpp cfe/trunk/test/Driver/linux-ld.c Modified: cfe/trunk/lib/Driver/ToolChains.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains.cpp?rev=277985&r1=277984&r2=277985&view=diff == --- cfe/trunk/lib/Driver/ToolChains.cpp (original) +++ cfe/trunk/lib/Driver/ToolChains.cpp Mon Aug 8 03:27:36 2016 @@ -4274,19 +4274,28 @@ std::string Linux::getDynamicLinker(cons if (Triple.isAndroid()) return Triple.isArch64Bit() ? "/system/bin/linker64" : "/system/bin/linker"; - else if (Triple.isMusl()) { + + if (Triple.isMusl()) { std::string ArchName; +bool IsArm = false; + switch (Arch) { +case llvm::Triple::arm: case llvm::Triple::thumb: ArchName = "arm"; + IsArm = true; break; +case llvm::Triple::armeb: case llvm::Triple::thumbeb: ArchName = "armeb"; + IsArm = true; break; default: ArchName = Triple.getArchName().str(); } -if (Triple.getEnvironment() == llvm::Triple::MuslEABIHF) +if (IsArm && +(Triple.getEnvironment() == llvm::Triple::MuslEABIHF || + tools::arm::getARMFloatABI(*this, Args) == tools::arm::FloatABI::Hard)) ArchName += "hf"; return "/lib/ld-musl-" + ArchName + ".so.1"; Modified: cfe/trunk/test/Driver/linux-ld.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/linux-ld.c?rev=277985&r1=277984&r2=277985&view=diff == --- cfe/trunk/test/Driver/linux-ld.c (original) +++ cfe/trunk/test/Driver/linux-ld.c Mon Aug 8 03:27:36 2016 @@ -1613,24 +1613,36 @@ // RUN: --target=thumb-pc-linux-musleabihf \ // RUN: | FileCheck --check-prefix=CHECK-MUSL-ARMHF %s // RUN: %clang %s -### -o %t.o 2>&1 \ +// RUN: --target=thumbv7-pc-linux-musleabi -mhard-float \ +// RUN: | FileCheck --check-prefix=CHECK-MUSL-ARMHF %s +// RUN: %clang %s -### -o %t.o 2>&1 \ // RUN: --target=thumbeb-pc-linux-musleabi \ // RUN: | FileCheck --check-prefix=CHECK-MUSL-ARMEB %s // RUN: %clang %s -### -o %t.o 2>&1 \ // RUN: --target=thumbeb-pc-linux-musleabihf \ // RUN: | FileCheck --check-prefix=CHECK-MUSL-ARMEBHF %s // RUN: %clang %s -### -o %t.o 2>&1 \ +// RUN: --target=thumbv7eb-pc-linux-musleabi -mhard-float \ +// RUN: | FileCheck --check-prefix=CHECK-MUSL-ARMEBHF %s +// RUN: %clang %s -### -o %t.o 2>&1 \ // RUN: --target=arm-pc-linux-musleabi \ // RUN: | FileCheck --check-prefix=CHECK-MUSL-ARM %s // RUN: %clang %s -### -o %t.o 2>&1 \ // RUN: --target=arm-pc-linux-musleabihf \ // RUN: | FileCheck --check-prefix=CHECK-MUSL-ARMHF %s // RUN: %clang %s -### -o %t.o 2>&1 \ +// RUN: --target=armv7-pc-linux-musleabi -mhard-float \ +// RUN: | FileCheck --check-prefix=CHECK-MUSL-ARMHF %s +// RUN: %clang %s -### -o %t.o 2>&1 \ // RUN: --target=armeb-pc-linux-musleabi \ // RUN: | FileCheck --check-prefix=CHECK-MUSL-ARMEB %s // RUN: %clang %s -### -o %t.o 2>&1 \ // RUN: --target=armeb-pc-linux-musleabihf \ // RUN: | FileCheck --check-prefix=CHECK-MUSL-ARMEBHF %s // RUN: %clang %s -### -o %t.o 2>&1 \ +// RUN: --target=armv7eb-pc-linux-musleabi -mhard-float \ +// RUN: | FileCheck --check-prefix=CHECK-MUSL-ARMEBHF %s +// RUN: %clang %s -### -o %t.o 2>&1 \ // RUN: --target=aarch64-pc-linux-musleabi \ // RUN: | FileCheck --check-prefix=CHECK-MUSL-AARCH64 %s // RUN: %clang %s -### -o %t.o 2>&1 \ ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
Re: [PATCH] D22904: Fix two bugs for musl-libc on ARM
This revision was automatically updated to reflect the committed changes. Closed by commit rL277985: Fix two bugs for musl-libc on ARM (authored by rovka). Changed prior to commit: https://reviews.llvm.org/D22904?vs=66074&id=67131#toc Repository: rL LLVM https://reviews.llvm.org/D22904 Files: cfe/trunk/lib/Driver/ToolChains.cpp cfe/trunk/test/Driver/linux-ld.c Index: cfe/trunk/test/Driver/linux-ld.c === --- cfe/trunk/test/Driver/linux-ld.c +++ cfe/trunk/test/Driver/linux-ld.c @@ -1613,24 +1613,36 @@ // RUN: --target=thumb-pc-linux-musleabihf \ // RUN: | FileCheck --check-prefix=CHECK-MUSL-ARMHF %s // RUN: %clang %s -### -o %t.o 2>&1 \ +// RUN: --target=thumbv7-pc-linux-musleabi -mhard-float \ +// RUN: | FileCheck --check-prefix=CHECK-MUSL-ARMHF %s +// RUN: %clang %s -### -o %t.o 2>&1 \ // RUN: --target=thumbeb-pc-linux-musleabi \ // RUN: | FileCheck --check-prefix=CHECK-MUSL-ARMEB %s // RUN: %clang %s -### -o %t.o 2>&1 \ // RUN: --target=thumbeb-pc-linux-musleabihf \ // RUN: | FileCheck --check-prefix=CHECK-MUSL-ARMEBHF %s // RUN: %clang %s -### -o %t.o 2>&1 \ +// RUN: --target=thumbv7eb-pc-linux-musleabi -mhard-float \ +// RUN: | FileCheck --check-prefix=CHECK-MUSL-ARMEBHF %s +// RUN: %clang %s -### -o %t.o 2>&1 \ // RUN: --target=arm-pc-linux-musleabi \ // RUN: | FileCheck --check-prefix=CHECK-MUSL-ARM %s // RUN: %clang %s -### -o %t.o 2>&1 \ // RUN: --target=arm-pc-linux-musleabihf \ // RUN: | FileCheck --check-prefix=CHECK-MUSL-ARMHF %s // RUN: %clang %s -### -o %t.o 2>&1 \ +// RUN: --target=armv7-pc-linux-musleabi -mhard-float \ +// RUN: | FileCheck --check-prefix=CHECK-MUSL-ARMHF %s +// RUN: %clang %s -### -o %t.o 2>&1 \ // RUN: --target=armeb-pc-linux-musleabi \ // RUN: | FileCheck --check-prefix=CHECK-MUSL-ARMEB %s // RUN: %clang %s -### -o %t.o 2>&1 \ // RUN: --target=armeb-pc-linux-musleabihf \ // RUN: | FileCheck --check-prefix=CHECK-MUSL-ARMEBHF %s // RUN: %clang %s -### -o %t.o 2>&1 \ +// RUN: --target=armv7eb-pc-linux-musleabi -mhard-float \ +// RUN: | FileCheck --check-prefix=CHECK-MUSL-ARMEBHF %s +// RUN: %clang %s -### -o %t.o 2>&1 \ // RUN: --target=aarch64-pc-linux-musleabi \ // RUN: | FileCheck --check-prefix=CHECK-MUSL-AARCH64 %s // RUN: %clang %s -### -o %t.o 2>&1 \ Index: cfe/trunk/lib/Driver/ToolChains.cpp === --- cfe/trunk/lib/Driver/ToolChains.cpp +++ cfe/trunk/lib/Driver/ToolChains.cpp @@ -4274,19 +4274,28 @@ if (Triple.isAndroid()) return Triple.isArch64Bit() ? "/system/bin/linker64" : "/system/bin/linker"; - else if (Triple.isMusl()) { + + if (Triple.isMusl()) { std::string ArchName; +bool IsArm = false; + switch (Arch) { +case llvm::Triple::arm: case llvm::Triple::thumb: ArchName = "arm"; + IsArm = true; break; +case llvm::Triple::armeb: case llvm::Triple::thumbeb: ArchName = "armeb"; + IsArm = true; break; default: ArchName = Triple.getArchName().str(); } -if (Triple.getEnvironment() == llvm::Triple::MuslEABIHF) +if (IsArm && +(Triple.getEnvironment() == llvm::Triple::MuslEABIHF || + tools::arm::getARMFloatABI(*this, Args) == tools::arm::FloatABI::Hard)) ArchName += "hf"; return "/lib/ld-musl-" + ArchName + ".so.1"; Index: cfe/trunk/test/Driver/linux-ld.c === --- cfe/trunk/test/Driver/linux-ld.c +++ cfe/trunk/test/Driver/linux-ld.c @@ -1613,24 +1613,36 @@ // RUN: --target=thumb-pc-linux-musleabihf \ // RUN: | FileCheck --check-prefix=CHECK-MUSL-ARMHF %s // RUN: %clang %s -### -o %t.o 2>&1 \ +// RUN: --target=thumbv7-pc-linux-musleabi -mhard-float \ +// RUN: | FileCheck --check-prefix=CHECK-MUSL-ARMHF %s +// RUN: %clang %s -### -o %t.o 2>&1 \ // RUN: --target=thumbeb-pc-linux-musleabi \ // RUN: | FileCheck --check-prefix=CHECK-MUSL-ARMEB %s // RUN: %clang %s -### -o %t.o 2>&1 \ // RUN: --target=thumbeb-pc-linux-musleabihf \ // RUN: | FileCheck --check-prefix=CHECK-MUSL-ARMEBHF %s // RUN: %clang %s -### -o %t.o 2>&1 \ +// RUN: --target=thumbv7eb-pc-linux-musleabi -mhard-float \ +// RUN: | FileCheck --check-prefix=CHECK-MUSL-ARMEBHF %s +// RUN: %clang %s -### -o %t.o 2>&1 \ // RUN: --target=arm-pc-linux-musleabi \ // RUN: | FileCheck --check-prefix=CHECK-MUSL-ARM %s // RUN: %clang %s -### -o %t.o 2>&1 \ // RUN: --target=arm-pc-linux-musleabihf \ // RUN: | FileCheck --check-prefix=CHECK-MUSL-ARMHF %s // RUN: %clang %s -### -o %t.o 2>&1 \ +// RUN: --target=armv7-pc-linux-musleabi -mhard-float \ +// RUN: | FileCheck --check-prefix=CHECK-MUSL-ARMHF %s +// RUN: %clang %s -### -o %t.o 2>&1 \ // RUN: --target=armeb-pc-linux-musleabi \ // RUN: | FileCheck --check-prefix=CHECK-MUSL-A
Re: [PATCH] D22904: Fix two bugs for musl-libc on ARM
rovka added a subscriber: rovka. rovka added a comment. Hi Lei, Renato is on vacation, so I committed this for you. Regards, Diana Repository: rL LLVM https://reviews.llvm.org/D22904 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
Re: r267866 - [MS] Improved implementation of MS stack pragmas (vtordisp, *_seg)
Hi, I don't know if you've noticed, but this commit broke a lot of builds - e.g. http://lab.llvm.org:8011/builders/clang-cmake-thumbv7-a15/builds/11865. Regards, Diana On 28 April 2016 at 13:13, Denis Zobnin via cfe-commits < cfe-commits@lists.llvm.org> wrote: > Author: dzobnin > Date: Thu Apr 28 05:13:18 2016 > New Revision: 267866 > > URL: http://llvm.org/viewvc/llvm-project?rev=267866&view=rev > Log: > [MS] Improved implementation of MS stack pragmas (vtordisp, *_seg) > > Rework implementation of several MS pragmas that use internal stack: > vtordisp, {bss|code|const|data}_seg. > This patch: > 1. Makes #pragma vtordisp use PragmaStack class as *_seg pragmas do; > 2. Fixes "#pragma vtordisp()" behavior: it shouldn't affect stack; > 3. Saves/restores the stacks on enter/exit a C++ method body. > > > Modified: > cfe/trunk/include/clang/Sema/Sema.h > cfe/trunk/lib/Parse/ParsePragma.cpp > cfe/trunk/lib/Parse/ParseStmt.cpp > cfe/trunk/lib/Sema/Sema.cpp > cfe/trunk/lib/Sema/SemaAttr.cpp > cfe/trunk/test/CodeGenCXX/sections.cpp > cfe/trunk/test/SemaCXX/pragma-vtordisp.cpp > > Modified: cfe/trunk/include/clang/Sema/Sema.h > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Sema/Sema.h?rev=267866&r1=267865&r2=267866&view=diff > > == > --- cfe/trunk/include/clang/Sema/Sema.h (original) > +++ cfe/trunk/include/clang/Sema/Sema.h Thu Apr 28 05:13:18 2016 > @@ -327,40 +327,21 @@ public: >LangOptions::PragmaMSPointersToMembersKind >MSPointerToMemberRepresentationMethod; > > - enum PragmaVtorDispKind { > -PVDK_Push, ///< #pragma vtordisp(push, mode) > -PVDK_Set, ///< #pragma vtordisp(mode) > -PVDK_Pop, ///< #pragma vtordisp(pop) > -PVDK_Reset ///< #pragma vtordisp() > - }; > - > - enum PragmaMsStackAction { > -PSK_Reset,// #pragma () > -PSK_Set, // #pragma ("name") > -PSK_Push, // #pragma (push[, id]) > -PSK_Push_Set, // #pragma (push[, id], "name") > -PSK_Pop, // #pragma (pop[, id]) > -PSK_Pop_Set, // #pragma (pop[, id], "name") > - }; > - > - /// \brief Whether to insert vtordisps prior to virtual bases in the > Microsoft > - /// C++ ABI. Possible values are 0, 1, and 2, which mean: > - /// > - /// 0: Suppress all vtordisps > - /// 1: Insert vtordisps in the presence of vbase overrides and > non-trivial > - ///structors > - /// 2: Always insert vtordisps to support RTTI on partially constructed > - ///objects > - /// > - /// The stack always has at least one element in it. > - SmallVector VtorDispModeStack; > - >/// Stack of active SEH __finally scopes. Can be empty. >SmallVector CurrentSEHFinally; > >/// \brief Source location for newly created implicit MSInheritanceAttrs >SourceLocation ImplicitMSInheritanceAttrLoc; > > + enum PragmaMsStackAction { > +PSK_Reset = 0x0,// #pragma () > +PSK_Set = 0x1,// #pragma (value) > +PSK_Push = 0x2,// #pragma (push[, id]) > +PSK_Pop = 0x4,// #pragma (pop[, id]) > +PSK_Push_Set = PSK_Push | PSK_Set, // #pragma (push[, id], value) > +PSK_Pop_Set = PSK_Pop | PSK_Set, // #pragma (pop[, id], value) > + }; > + >template >struct PragmaStack { > struct Slot { > @@ -377,18 +358,84 @@ public: > PragmaMsStackAction Action, > llvm::StringRef StackSlotLabel, > ValueType Value); > -explicit PragmaStack(const ValueType &Value) > - : CurrentValue(Value) {} > + > +// MSVC seems to add artificial slots to #pragma stacks on entering a > C++ > +// method body to restore the stacks on exit, so it works like this: > +// > +// struct S { > +// #pragma (push, InternalPragmaSlot, > ) > +// void Method {} > +// #pragma (pop, InternalPragmaSlot) > +// }; > +// > +// It works even with #pragma vtordisp, although MSVC doesn't support > +// #pragma vtordisp(push [, id], n) > +// syntax. > +// > +// Push / pop a named sentinel slot. > +void SentinelAction(PragmaMsStackAction Action, StringRef Label) { > + assert((Action == PSK_Push || Action == PSK_Pop) && > + "Can only push / pop #pragma stack sentinels!"); > + Act(CurrentPragmaLocation, Action, Label, CurrentValue); > +} > + > +// Constructors. > +explicit PragmaStack(const ValueType &Default) > +: DefaultValue(Default), CurrentValue(Default) {} > + > SmallVector Stack; > +ValueType DefaultValue; // Value used for PSK_Reset action. > ValueType CurrentValue; > SourceLocation CurrentPragmaLocation; >}; >// FIXME: We should serialize / deserialize these if they occur in a > PCH (but >// we shouldn't do so if they're in a module). > + > + /// \brief Whether to in
[PATCH] D20157: Add test for D20156
rovka created this revision. rovka added reviewers: rengolin, resistor, mcrosier, echristo, qcolombet, bogner. rovka added subscribers: llvm-commits, cfe-commits. Herald added a subscriber: joker.eph. This adds a test for PR24071. Its purpose is to make sure that we do not assert after identifying an error in inline asm. It has to be added in Clang because llc exits after identifying the error, and therefore never reaches the assert. The situation is similar to [1]. http://reviews.llvm.org/D20156 [1] https://www.mail-archive.com/cfe-commits@cs.uiuc.edu/msg70985.html http://reviews.llvm.org/D20157 Files: test/CodeGen/arm64-asm-diag.c Index: test/CodeGen/arm64-asm-diag.c === --- /dev/null +++ test/CodeGen/arm64-asm-diag.c @@ -0,0 +1,24 @@ +// RUN: not %clang_cc1 -triple arm64 %s -S -o /dev/null 2>&1 | FileCheck %s + +// This test makes sure that we correctly recover after an error is identified +// in inline asm during instruction selection. +// It needs to be in Clang because the diagnostic handler that is used by llc +// in LLVM's CodeGen tests exits after identifying an error, whereas the +// diagnostic handler used by Clang keeps running and may trigger assertions +// (see PR24071). +// This test as well as arm-asm-diag.c can be moved back into LLVM if llc is +// updated to use a different diagnostic handler, that tries to catch as many +// errors as possible without exiting. +int foo(long int a, long int b){ +const long int c = 32 - b; + +long int r; +asm("lsl %[o],%[s],%[a]" +: [o]"=r" (r) +: [s]"r" (a), +[a]"n" (c)); + +return r; +} + +// CHECK: error: invalid operand for inline asm constraint 'n' Index: test/CodeGen/arm64-asm-diag.c === --- /dev/null +++ test/CodeGen/arm64-asm-diag.c @@ -0,0 +1,24 @@ +// RUN: not %clang_cc1 -triple arm64 %s -S -o /dev/null 2>&1 | FileCheck %s + +// This test makes sure that we correctly recover after an error is identified +// in inline asm during instruction selection. +// It needs to be in Clang because the diagnostic handler that is used by llc +// in LLVM's CodeGen tests exits after identifying an error, whereas the +// diagnostic handler used by Clang keeps running and may trigger assertions +// (see PR24071). +// This test as well as arm-asm-diag.c can be moved back into LLVM if llc is +// updated to use a different diagnostic handler, that tries to catch as many +// errors as possible without exiting. +int foo(long int a, long int b){ +const long int c = 32 - b; + +long int r; +asm("lsl %[o],%[s],%[a]" +: [o]"=r" (r) +: [s]"r" (a), +[a]"n" (c)); + +return r; +} + +// CHECK: error: invalid operand for inline asm constraint 'n' ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
Re: [PATCH] D20157: Add test for D20156
rovka abandoned this revision. rovka added a comment. With the new diagnostic handler in r269428, we no longer need this test (it will be covered by the existing tests such as CodeGen/AArch64/arm64-inline-asm-error-N.ll, by removing the -exit-on-error flag). http://reviews.llvm.org/D20157 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
Re: [libcxx] r274605 - Fix typo in #ifdef, and re-enable tests now that the green-dragon bots are no more
Hi Marhsall, This seems to be breaking our libcxx bot: http://lab.llvm.org:8011/builders/libcxx-libcxxabi-arm-linux/builds/1126 I'm a bit confused by that comment you removed, do we need to update our bot in any way? Thanks, Diana On 6 July 2016 at 08:28, Marshall Clow via cfe-commits wrote: > Author: marshall > Date: Wed Jul 6 00:28:44 2016 > New Revision: 274605 > > URL: http://llvm.org/viewvc/llvm-project?rev=274605&view=rev > Log: > Fix typo in #ifdef, and re-enable tests now that the green-dragon bots are no > more > > Modified: > > libcxx/trunk/test/std/utilities/meta/meta.unary/meta.unary.prop/is_constructible.pass.cpp > > Modified: > libcxx/trunk/test/std/utilities/meta/meta.unary/meta.unary.prop/is_constructible.pass.cpp > URL: > http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/std/utilities/meta/meta.unary/meta.unary.prop/is_constructible.pass.cpp?rev=274605&r1=274604&r2=274605&view=diff > == > --- > libcxx/trunk/test/std/utilities/meta/meta.unary/meta.unary.prop/is_constructible.pass.cpp > (original) > +++ > libcxx/trunk/test/std/utilities/meta/meta.unary/meta.unary.prop/is_constructible.pass.cpp > Wed Jul 6 00:28:44 2016 > @@ -103,11 +103,11 @@ int main() > test_is_not_constructible (); > > // LWG 2560 -- postpone this test until bots updated > -// test_is_not_constructible (); > -// #if TEST_STD_VERS > 11 > -// test_is_not_constructible (); > -// test_is_not_constructible (); > -// test_is_not_constructible (); > -// test_is_not_constructible (); > -// #endif > +test_is_not_constructible (); > +#if TEST_STD_VER > 11 > +test_is_not_constructible (); > +test_is_not_constructible (); > +test_is_not_constructible (); > +test_is_not_constructible (); > +#endif > } > > > ___ > cfe-commits mailing list > cfe-commits@lists.llvm.org > http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [llvm] [AMDGPU][WIP] Extend readlane, writelane and readfirstlane intrinsic lowering for generic types (PR #89217)
@@ -342,6 +342,22 @@ def AMDGPUfdot2_impl : SDNode<"AMDGPUISD::FDOT2", def AMDGPUperm_impl : SDNode<"AMDGPUISD::PERM", AMDGPUDTIntTernaryOp, []>; +def AMDGPUReadfirstlaneOp : SDTypeProfile<1, 1, [ + SDTCisSameAs<0, 1> +]>; + +def AMDGPUReadlaneOp : SDTypeProfile<1, 2, [ + SDTCisSameAs<0, 1>, SDTCisInt<2> +]>; + +def AMDGPUDWritelaneOp : SDTypeProfile<1, 3, [ + SDTCisSameAs<1, 1>, SDTCisInt<2>, SDTCisSameAs<0, 3>, rovka wrote: <0,1> https://github.com/llvm/llvm-project/pull/89217 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits