rsmith added a comment. In https://reviews.llvm.org/D40948#948843, @t.p.northover wrote:
> Thanks Richard. I'll file the bugs tomorrow for the issues you suggest. Do > you see either of them blocking the change to C++14 as a default? On a scale > of "no", "no but I want a commitment to fix them" and "yes" sort of thing. I don't think these should block the change of default. The //new-expression// one is actually a missing C++14 feature -- we're supposed to be generating a call to a new ABI entry point in the negative-array-bound case to throw a `std::bad_array_new_length` (we missed it because it's a feature added by a core issue rather than by a paper as I recall). I see no problem with shipping a Clang 6 that doesn't implement the full feature, including throwing the new exception. I'm not entirely happy about shipping Clang 6 without fixing the negative-bound check, since that means we'll generate code that is less hardened against certain common attacks by default, but I don't think I would be release-blocker-level unhappy. ================ Comment at: clang/test/CodeGenCXX/vtable-available-externally.cpp:1-2 -// RUN: %clang_cc1 %s -I%S -triple=x86_64-apple-darwin10 -emit-llvm -o %t -// RUN: %clang_cc1 %s -I%S -triple=x86_64-apple-darwin10 -O2 -disable-llvm-passes -emit-llvm -o %t.opt +// RUN: %clang_cc1 %s -I%S -triple=x86_64-apple-darwin10 -std=c++98 -emit-llvm -o %t +// RUN: %clang_cc1 %s -I%S -triple=x86_64-apple-darwin10 -std=c++98 -O2 -disable-llvm-passes -emit-llvm -o %t.opt // RUN: FileCheck --check-prefix=CHECK-TEST1 %s < %t ---------------- t.p.northover wrote: > rsmith wrote: > > Why does this one need a -std= flag? > It's a bit late here so I'll just give the proximal cause this evening in > case that makes it obvious to you. I'll dig deeper tomorrow if not. > > In this particular case (without the std flag) on the -O2 run line the > "vtable for Test11::D" does not get marked "available_externally". > > The diff on line 1 is definitely unneeded. See comment below. ================ Comment at: clang/test/CodeGenCXX/vtable-available-externally.cpp:275 struct C { virtual D& operator=(const D&); }; ---------------- To make this test work in C++11 onwards, you need to add a virtual move assignment operator here: ``` virtual D& operator=(D&&); ``` Repository: rC Clang https://reviews.llvm.org/D40948 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits