From daniel at zuster.org Mon Mar 23 09:57:32 2009 From: daniel at zuster.org (Daniel Dunbar) Date: Mon, 23 Mar 2009 14:57:32 -0000 Subject: [cfe-commits] r67517 - /cfe/trunk/tools/ccc/ccclib/Arguments.py Message-ID: <200903231457.n2NEvXcG011138@zion.cs.uiuc.edu> Author: ddunbar Date: Mon Mar 23 09:57:31 2009 New Revision: 67517 URL: http://llvm.org/viewvc/llvm-project?rev=67517&view=rev Log: ccc: Forward -f[no-]builtin to clang. Modified: cfe/trunk/tools/ccc/ccclib/Arguments.py Modified: cfe/trunk/tools/ccc/ccclib/Arguments.py URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/ccc/ccclib/Arguments.py?rev=67517&r1=67516&r2=67517&view=diff ============================================================================== --- cfe/trunk/tools/ccc/ccclib/Arguments.py (original) +++ cfe/trunk/tools/ccc/ccclib/Arguments.py Mon Mar 23 09:57:31 2009 @@ -801,6 +801,8 @@ self.f_blocksOption = self.addOption(FlagOption('-fblocks', self.Clang_fGroup)) self.f_noBlocksOption = self.addOption(FlagOption('-fno-blocks', self.Clang_fGroup)) self.f_bootclasspathOption = self.addOption(JoinedOption('-fbootclasspath=', self.fGroup)) + self.f_builtinOption = self.addOption(FlagOption('-fbuiltin', self.Clang_fGroup)) + self.f_noBuiltinOption = self.addOption(FlagOption('-fno-builtin', self.Clang_fGroup)) self.f_classpathOption = self.addOption(JoinedOption('-fclasspath=', self.fGroup)) self.f_compileResourceOption = self.addOption(JoinedOption('-fcompile-resource=', self.fGroup)) self.f_constantCfstringsOption = self.addOption(FlagOption('-fconstant-cfstrings', self.fGroup)) From kremenek at apple.com Mon Mar 23 10:43:00 2009 From: kremenek at apple.com (Ted Kremenek) Date: Mon, 23 Mar 2009 15:43:00 -0000 Subject: [cfe-commits] r67519 - in /cfe/trunk: include/clang/Analysis/PathSensitive/SymbolManager.h lib/Analysis/BasicStore.cpp lib/Analysis/SymbolManager.cpp test/Analysis/misc-ps.m Message-ID: <200903231543.n2NFh0iC013863@zion.cs.uiuc.edu> Author: kremenek Date: Mon Mar 23 10:42:58 2009 New Revision: 67519 URL: http://llvm.org/viewvc/llvm-project?rev=67519&view=rev Log: analyzer: Fix embarrassing regression in BasicStore when invalidating struct values passed-by-reference to unknown functions. Modified: cfe/trunk/include/clang/Analysis/PathSensitive/SymbolManager.h cfe/trunk/lib/Analysis/BasicStore.cpp cfe/trunk/lib/Analysis/SymbolManager.cpp cfe/trunk/test/Analysis/misc-ps.m Modified: cfe/trunk/include/clang/Analysis/PathSensitive/SymbolManager.h URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Analysis/PathSensitive/SymbolManager.h?rev=67519&r1=67518&r2=67519&view=diff ============================================================================== --- cfe/trunk/include/clang/Analysis/PathSensitive/SymbolManager.h (original) +++ cfe/trunk/include/clang/Analysis/PathSensitive/SymbolManager.h Mon Mar 23 10:42:58 2009 @@ -218,6 +218,8 @@ : SymbolCounter(0), BPAlloc(bpalloc), Ctx(ctx) {} ~SymbolManager(); + + static bool canSymbolicate(QualType T); /// Make a unique symbol for MemRegion R according to its kind. SymbolRef getRegionRValueSymbol(const MemRegion* R); Modified: cfe/trunk/lib/Analysis/BasicStore.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Analysis/BasicStore.cpp?rev=67519&r1=67518&r2=67519&view=diff ============================================================================== --- cfe/trunk/lib/Analysis/BasicStore.cpp (original) +++ cfe/trunk/lib/Analysis/BasicStore.cpp Mon Mar 23 10:42:58 2009 @@ -525,6 +525,10 @@ // Punt on static variables for now. if (VD->getStorageClass() == VarDecl::Static) continue; + + // Only handle simple types that we can symbolicate. + if (!SymbolManager::canSymbolicate(VD->getType())) + continue; // Initialize globals and parameters to symbolic values. // Initialize local variables to undefined. Modified: cfe/trunk/lib/Analysis/SymbolManager.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Analysis/SymbolManager.cpp?rev=67519&r1=67518&r2=67519&view=diff ============================================================================== --- cfe/trunk/lib/Analysis/SymbolManager.cpp (original) +++ cfe/trunk/lib/Analysis/SymbolManager.cpp Mon Mar 23 10:42:58 2009 @@ -94,6 +94,10 @@ SymbolManager::~SymbolManager() {} +bool SymbolManager::canSymbolicate(QualType T) { + return Loc::IsLocType(T) || T->isIntegerType(); +} + void SymbolReaper::markLive(SymbolRef sym) { TheLiving = F.Add(TheLiving, sym); TheDead = F.Remove(TheDead, sym); Modified: cfe/trunk/test/Analysis/misc-ps.m URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis/misc-ps.m?rev=67519&r1=67518&r2=67519&view=diff ============================================================================== --- cfe/trunk/test/Analysis/misc-ps.m (original) +++ cfe/trunk/test/Analysis/misc-ps.m Mon Mar 23 10:42:58 2009 @@ -24,6 +24,19 @@ - (void)handleFailureInMethod:(SEL)selector object:(id)object file:(NSString *)fileName lineNumber:(NSInteger)line description:(NSString *)format,...; @end extern NSString * const NSConnectionReplyMode; +typedef float CGFloat; +typedef struct _NSPoint { + CGFloat x; + CGFloat y; +} NSPoint; +typedef struct _NSSize { + CGFloat width; + CGFloat height; +} NSSize; +typedef struct _NSRect { + NSPoint origin; + NSSize size; +} NSRect; // Reduced test case from crash in @interface A @end @@ -201,3 +214,14 @@ if (!x) { return 0; } return 1; } + +// - Test that we properly invalidate structs +// passed-by-reference to a function. +void pr6708148_invalidate(NSRect *x); +void pr6708148_use(NSRect x); +void pr6708148_test(void) { + NSRect x; + pr6708148_invalidate(&x); + pr6708148_use(x); // no-warning +} + From kremenek at apple.com Mon Mar 23 10:48:19 2009 From: kremenek at apple.com (Ted Kremenek) Date: Mon, 23 Mar 2009 15:48:19 -0000 Subject: [cfe-commits] r67521 - /cfe/tags/checker/checker-0.179/ Message-ID: <200903231548.n2NFmJmX014268@zion.cs.uiuc.edu> Author: kremenek Date: Mon Mar 23 10:48:18 2009 New Revision: 67521 URL: http://llvm.org/viewvc/llvm-project?rev=67521&view=rev Log: Tagging checker-0.179. Added: cfe/tags/checker/checker-0.179/ - copied from r67520, cfe/trunk/ From daniel at zuster.org Mon Mar 23 11:09:09 2009 From: daniel at zuster.org (Daniel Dunbar) Date: Mon, 23 Mar 2009 16:09:09 -0000 Subject: [cfe-commits] r67527 - /cfe/trunk/lib/Basic/Targets.cpp Message-ID: <200903231609.n2NG9AY2015758@zion.cs.uiuc.edu> Author: ddunbar Date: Mon Mar 23 11:09:04 2009 New Revision: 67527 URL: http://llvm.org/viewvc/llvm-project?rev=67527&view=rev Log: Ad FreeBSD ARM target info. - Patch by Ed Schoeten! 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=67527&r1=67526&r2=67527&view=diff ============================================================================== --- cfe/trunk/lib/Basic/Targets.cpp (original) +++ cfe/trunk/lib/Basic/Targets.cpp Mon Mar 23 11:09:04 2009 @@ -900,6 +900,19 @@ } // end anonymous namespace. namespace { +// arm FreeBSD target +class FreeBSDARMTargetInfo : public ARMTargetInfo { +public: + FreeBSDARMTargetInfo(const std::string& triple) : ARMTargetInfo(triple) {} + virtual void getTargetDefines(const LangOptions &Opts, + std::vector &Defines) const { + ARMTargetInfo::getTargetDefines(Opts, Defines); + getFreeBSDDefines(Opts, 0, getTargetTriple(), Defines); + } +}; +} // end anonymous namespace + +namespace { class SparcV8TargetInfo : public TargetInfo { static const TargetInfo::GCCRegAlias GCCRegAliases[]; static const char * const GCCRegNames[]; @@ -1092,6 +1105,8 @@ if (T.find("armv6-") == 0 || T.find("arm-") == 0) { if (isDarwin) return new DarwinARMTargetInfo(T); + if (isFreeBSD) + return new FreeBSDARMTargetInfo(T); return new ARMTargetInfo(T); } From daniel at zuster.org Mon Mar 23 11:15:51 2009 From: daniel at zuster.org (Daniel Dunbar) Date: Mon, 23 Mar 2009 16:15:51 -0000 Subject: [cfe-commits] r67529 - in /cfe/trunk/lib/Driver: Driver.cpp HostInfo.cpp ToolChains.cpp ToolChains.h Message-ID: <200903231615.n2NGFpr8016311@zion.cs.uiuc.edu> Author: ddunbar Date: Mon Mar 23 11:15:50 2009 New Revision: 67529 URL: http://llvm.org/viewvc/llvm-project?rev=67529&view=rev Log: Driver: Setup file and program search paths in tool chains. Modified: cfe/trunk/lib/Driver/Driver.cpp cfe/trunk/lib/Driver/HostInfo.cpp cfe/trunk/lib/Driver/ToolChains.cpp cfe/trunk/lib/Driver/ToolChains.h Modified: cfe/trunk/lib/Driver/Driver.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Driver.cpp?rev=67529&r1=67528&r2=67529&view=diff ============================================================================== --- cfe/trunk/lib/Driver/Driver.cpp (original) +++ cfe/trunk/lib/Driver/Driver.cpp Mon Mar 23 11:15:50 2009 @@ -920,15 +920,8 @@ return P; } - // As a last resort, always search in our directory before pulling - // from the path. - llvm::sys::Path P(Dir); - P.appendComponent(Name); - if (P.exists()) - return P; - - // Search path to increase accuracy of logging output. - P = llvm::sys::Program::FindProgramByName(Name); + // If all else failed, search the path. + llvm::sys::Path P(llvm::sys::Program::FindProgramByName(Name)); if (!P.empty()) return P; Modified: cfe/trunk/lib/Driver/HostInfo.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/HostInfo.cpp?rev=67529&r1=67528&r2=67529&view=diff ============================================================================== --- cfe/trunk/lib/Driver/HostInfo.cpp (original) +++ cfe/trunk/lib/Driver/HostInfo.cpp Mon Mar 23 11:15:50 2009 @@ -159,7 +159,9 @@ if (strcmp(ArchName, "i386") == 0 || strcmp(ArchName, "x86_64") == 0) TC = new toolchains::Darwin_X86(*this, ArchName, getPlatformName().c_str(), - getOSName().c_str()); + getOSName().c_str(), + DarwinVersion, + GCCVersion); else TC = new toolchains::Darwin_GCC(*this, ArchName, getPlatformName().c_str(), Modified: cfe/trunk/lib/Driver/ToolChains.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains.cpp?rev=67529&r1=67528&r2=67529&view=diff ============================================================================== --- cfe/trunk/lib/Driver/ToolChains.cpp (original) +++ cfe/trunk/lib/Driver/ToolChains.cpp Mon Mar 23 11:15:50 2009 @@ -9,11 +9,74 @@ #include "ToolChains.h" +#include "clang/Driver/Driver.h" +#include "clang/Driver/HostInfo.h" + +#include "llvm/ADT/StringExtras.h" +#include "llvm/System/Path.h" + using namespace clang::driver; using namespace clang::driver::toolchains; /// Darwin_X86 - Darwin tool chain for i386 and x86_64. +Darwin_X86::Darwin_X86(const HostInfo &Host, const char *Arch, + const char *Platform, const char *OS, + const unsigned (&_DarwinVersion)[3], + const unsigned (&_GCCVersion)[3]) + : ToolChain(Host, Arch, Platform, OS) +{ + DarwinVersion[0] = _DarwinVersion[0]; + DarwinVersion[1] = _DarwinVersion[1]; + DarwinVersion[2] = _DarwinVersion[2]; + GCCVersion[0] = _GCCVersion[0]; + GCCVersion[1] = _GCCVersion[1]; + GCCVersion[2] = _GCCVersion[2]; + + ToolChainDir = "i686-apple-darwin"; + ToolChainDir += llvm::utostr(DarwinVersion[0]); + ToolChainDir += "/"; + ToolChainDir += llvm::utostr(GCCVersion[0]); + ToolChainDir += '.'; + ToolChainDir += llvm::utostr(GCCVersion[1]); + ToolChainDir += '.'; + ToolChainDir += llvm::utostr(GCCVersion[2]); + + std::string Path; + if (getArchName() == "x86_64") { + Path = getHost().getDriver().Dir; + Path += "/../lib/gcc/"; + Path += getToolChainDir(); + Path += "/x86_64"; + getFilePaths().push_back(Path); + + Path = "/usr/lib/gcc/"; + Path += getToolChainDir(); + Path += "/x86_64"; + getFilePaths().push_back(Path); + } + + Path = getHost().getDriver().Dir; + Path += "/../lib/gcc/"; + Path += getToolChainDir(); + getFilePaths().push_back(Path); + + Path = "/usr/lib/gcc/"; + Path += getToolChainDir(); + getFilePaths().push_back(Path); + + Path = getHost().getDriver().Dir; + Path += "/../libexec/gcc/"; + Path += getToolChainDir(); + getProgramPaths().push_back(Path); + + Path = "/usr/libexec/gcc/"; + Path += getToolChainDir(); + getProgramPaths().push_back(Path); + + getProgramPaths().push_back(getHost().getDriver().Dir); +} + Darwin_X86::~Darwin_X86() { // Free tool implementations. for (llvm::DenseMap::iterator @@ -84,6 +147,13 @@ /// all subcommands; this relies on gcc translating the majority of /// command line options. +Generic_GCC::Generic_GCC(const HostInfo &Host, const char *Arch, + const char *Platform, const char *OS) + : ToolChain(Host, Arch, Platform, OS) +{ + getProgramPaths().push_back(getHost().getDriver().Dir); +} + Generic_GCC::~Generic_GCC() { // Free tool implementations. for (llvm::DenseMap::iterator Modified: cfe/trunk/lib/Driver/ToolChains.h URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains.h?rev=67529&r1=67528&r2=67529&view=diff ============================================================================== --- cfe/trunk/lib/Driver/ToolChains.h (original) +++ cfe/trunk/lib/Driver/ToolChains.h Mon Mar 23 11:15:50 2009 @@ -30,7 +30,7 @@ public: Generic_GCC(const HostInfo &Host, const char *Arch, const char *Platform, - const char *OS) : ToolChain(Host, Arch, Platform, OS) {} + const char *OS); ~Generic_GCC(); virtual ArgList *TranslateArgs(ArgList &Args) const { return &Args; } @@ -47,9 +47,19 @@ class VISIBILITY_HIDDEN Darwin_X86 : public ToolChain { mutable llvm::DenseMap Tools; + /// Darwin version of tool chain. + unsigned DarwinVersion[3]; + + /// GCC version to use. + unsigned GCCVersion[3]; + + /// The directory suffix for this tool chain. + std::string ToolChainDir; + public: Darwin_X86(const HostInfo &Host, const char *Arch, const char *Platform, - const char *OS) : ToolChain(Host, Arch, Platform, OS) {} + const char *OS, const unsigned (&DarwinVersion)[3], + const unsigned (&GCCVersion)[3]); ~Darwin_X86(); virtual ArgList *TranslateArgs(ArgList &Args) const; @@ -60,6 +70,9 @@ virtual bool IsUnwindTablesDefault() const; virtual const char *GetDefaultRelocationModel() const; virtual const char *GetForcedPicModel() const; + +private: + const std::string &getToolChainDir() const { return ToolChainDir; } }; /// Darwin_GCC - Generic Darwin tool chain using gcc. From dgregor at apple.com Mon Mar 23 11:17:05 2009 From: dgregor at apple.com (Douglas Gregor) Date: Mon, 23 Mar 2009 09:17:05 -0700 Subject: [cfe-commits] r67336 - in /cfe/trunk: include/clang/AST/Decl.h lib/Sema/SemaDecl.cpp test/Sema/tentative-decls.c test/Sema/var-redecl.c In-Reply-To: References: <200903192201.n2JM1p5Y004051@zion.cs.uiuc.edu> Message-ID: <6F90FE92-3F8C-4254-B092-5E6B1CB80111@apple.com> On Mar 20, 2009, at 4:58 PM, Eli Friedman wrote: > On Thu, Mar 19, 2009 at 3:01 PM, Douglas Gregor > wrote: >> URL: http://llvm.org/viewvc/llvm-project?rev=67336&view=rev >> Log: >> Variables marked as "extern" can actually have internal linkage if >> there is a previous declaration marked "static". This fixes PR3645. > > Minor issue: the following should print a diagnostic (see 6.2.2p5): > > static int x; int x; Thanks, Eli. I willfully misread the first sentence of that paragraph, thinking it applied to objects. I'll commit the fix in a moment. - Doug From dgregor at apple.com Mon Mar 23 11:17:01 2009 From: dgregor at apple.com (Douglas Gregor) Date: Mon, 23 Mar 2009 16:17:01 -0000 Subject: [cfe-commits] r67530 - in /cfe/trunk: lib/Sema/SemaDecl.cpp test/Sema/tentative-decls.c Message-ID: <200903231617.n2NGH1JW016392@zion.cs.uiuc.edu> Author: dgregor Date: Mon Mar 23 11:17:01 2009 New Revision: 67530 URL: http://llvm.org/viewvc/llvm-project?rev=67530&view=rev Log: Thanks to Eli for pointing out my misreading of 6.2.2p5 Modified: cfe/trunk/lib/Sema/SemaDecl.cpp cfe/trunk/test/Sema/tentative-decls.c Modified: cfe/trunk/lib/Sema/SemaDecl.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaDecl.cpp?rev=67530&r1=67529&r2=67530&view=diff ============================================================================== --- cfe/trunk/lib/Sema/SemaDecl.cpp (original) +++ cfe/trunk/lib/Sema/SemaDecl.cpp Mon Mar 23 11:17:01 2009 @@ -841,8 +841,7 @@ // the prior declaration. If no prior declaration is visible, or // if the prior declaration specifies no linkage, then the // identifier has external linkage. - if ((New->hasExternalStorage() || New->getStorageClass() == VarDecl::None) && - Old->hasLinkage()) + if (New->hasExternalStorage() && Old->hasLinkage()) /* Okay */; else if (New->getStorageClass() != VarDecl::Static && Old->getStorageClass() == VarDecl::Static) { Modified: cfe/trunk/test/Sema/tentative-decls.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Sema/tentative-decls.c?rev=67530&r1=67529&r2=67530&view=diff ============================================================================== --- cfe/trunk/test/Sema/tentative-decls.c (original) +++ cfe/trunk/test/Sema/tentative-decls.c Mon Mar 23 11:17:01 2009 @@ -27,7 +27,10 @@ static int i1; // expected-error{{static declaration of 'i1' follows non-static declaration}} static int i2 = 5; // expected-note 1 {{previous definition is here}} -int i2 = 3; // expected-error{{redefinition of 'i2'}} +int i2 = 3; // expected-error{{non-static declaration of 'i2' follows static declaration}} + +static int i3 = 5; +extern int i3; __private_extern__ int pExtern; int pExtern = 0; From sabre at nondot.org Mon Mar 23 11:24:37 2009 From: sabre at nondot.org (Chris Lattner) Date: Mon, 23 Mar 2009 16:24:37 -0000 Subject: [cfe-commits] r67532 - /cfe/trunk/Driver/clang.cpp Message-ID: <200903231624.n2NGObQG016864@zion.cs.uiuc.edu> Author: lattner Date: Mon Mar 23 11:24:37 2009 New Revision: 67532 URL: http://llvm.org/viewvc/llvm-project?rev=67532&view=rev Log: if the driver decides to run clang on a .s file, treat it as a .S file. Modified: cfe/trunk/Driver/clang.cpp Modified: cfe/trunk/Driver/clang.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/Driver/clang.cpp?rev=67532&r1=67531&r2=67532&view=diff ============================================================================== --- cfe/trunk/Driver/clang.cpp (original) +++ cfe/trunk/Driver/clang.cpp Mon Mar 23 11:24:37 2009 @@ -322,7 +322,9 @@ // assembler: .S if (Ext == "c") return langkind_c; - else if (Ext == "S") + else if (Ext == "S" || + // If the compiler is run on a .s file, preprocess it as .S + Ext == "s") return langkind_asm_cpp; else if (Ext == "i") return langkind_c_cpp; From dgregor at apple.com Mon Mar 23 11:26:51 2009 From: dgregor at apple.com (Douglas Gregor) Date: Mon, 23 Mar 2009 16:26:51 -0000 Subject: [cfe-commits] r67533 - in /cfe/trunk: lib/Sema/SemaDecl.cpp test/Sema/function-redecl.c Message-ID: <200903231626.n2NGQp2w017001@zion.cs.uiuc.edu> Author: dgregor Date: Mon Mar 23 11:26:51 2009 New Revision: 67533 URL: http://llvm.org/viewvc/llvm-project?rev=67533&view=rev Log: Tighten up the determination of whether a function declaration has a prototype. Thanks Eli! Modified: cfe/trunk/lib/Sema/SemaDecl.cpp cfe/trunk/test/Sema/function-redecl.c Modified: cfe/trunk/lib/Sema/SemaDecl.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaDecl.cpp?rev=67533&r1=67532&r2=67533&view=diff ============================================================================== --- cfe/trunk/lib/Sema/SemaDecl.cpp (original) +++ cfe/trunk/lib/Sema/SemaDecl.cpp Mon Mar 23 11:26:51 2009 @@ -1895,7 +1895,7 @@ bool HasPrototype = getLangOptions().CPlusPlus || (D.getNumTypeObjects() && D.getTypeObject(0).Fun.hasPrototype) || - !isa(R.getTypePtr()); + (!isa(R.getTypePtr()) && R->isFunctionProtoType()); NewFD = FunctionDecl::Create(Context, DC, D.getIdentifierLoc(), Modified: cfe/trunk/test/Sema/function-redecl.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Sema/function-redecl.c?rev=67533&r1=67532&r2=67533&view=diff ============================================================================== --- cfe/trunk/test/Sema/function-redecl.c (original) +++ cfe/trunk/test/Sema/function-redecl.c Mon Mar 23 11:26:51 2009 @@ -116,3 +116,12 @@ void i0 (unsigned short a0); extern __typeof (i0) i1; extern __typeof (i1) i1; + +typedef int a(); +typedef int a2(int*); +a x; +a2 x2; +void test_x() { + x(5); + x2(5); // expected-warning{{incompatible integer to pointer conversion passing 'int', expected 'int *'}} +} From dgregor at apple.com Mon Mar 23 11:28:09 2009 From: dgregor at apple.com (Douglas Gregor) Date: Mon, 23 Mar 2009 09:28:09 -0700 Subject: [cfe-commits] r67313 - in /cfe/trunk: lib/Sema/SemaDecl.cpp test/Sema/function-redecl.c In-Reply-To: References: <200903191814.n2JIEkNj025190@zion.cs.uiuc.edu> Message-ID: On Mar 20, 2009, at 5:22 PM, Eli Friedman wrote: > 2009/3/19 Douglas Gregor : >> - bool HasPrototype = >> + bool HasPrototype = >> getLangOptions().CPlusPlus || >> - (D.getNumTypeObjects() && >> D.getTypeObject(0).Fun.hasPrototype); >> + (D.getNumTypeObjects() && >> D.getTypeObject(0).Fun.hasPrototype) || >> + !isa(R.getTypePtr()); > > This logic looks wrong; what about the following case? > > typedef int a(); > a x; > > "x" here doesn't have a prototype... You're right! Fixed. - Doug From dgregor at apple.com Mon Mar 23 11:35:35 2009 From: dgregor at apple.com (Douglas Gregor) Date: Mon, 23 Mar 2009 09:35:35 -0700 Subject: [cfe-commits] r67059 - in /cfe/trunk: include/clang/AST/ include/clang/Basic/ lib/AST/ lib/CodeGen/ lib/Sema/ test/Parser/ test/SemaCXX/ In-Reply-To: References: <200903162322.n2GNM9dD030200@zion.cs.uiuc.edu> Message-ID: <4DFF3DBF-A3E6-41DC-AC73-F673950B8AAD@apple.com> On Mar 21, 2009, at 8:11 AM, Howard Hinnant wrote: > On Mar 20, 2009, at 4:17 PM, Douglas Gregor wrote: > >> Howard, there's a question for you below. Just search for your name. > > I didn't see a question. Errr, sorry. The question was: do you agree that the following code should be ill- formed? struct A { }; struct B { operator A&&(); } void test(B b) { const A &ar = b; // error: operator A&&() returns an rvalue, so it should not be considered when trying to bind ar to b } > >> On the testing front, we should import Howard's rvalue-reference >> tests >> to make sure we've covered everything that we can do now. We >> obviously >> can't implement the template-argument deduction bits, but we can test >> reference-collapsing in template instantiations, and most everything >> else. > > I think we may have to wait until further template support. Just > glancing at reference_collapsing.C it needs: > > * static_assert (which I think we have now) > > * remove_reference > * is_lvalue_reference > * is_rvalue_reference > * is_const > * is_volatile > > (i.e. type_traits which the test has replicated). > > I believe we need partial specialization to run these tests. I'd > love to be proven wrong though... ;-) Okay, then we'll probably have to wait until we have enough class template partial specialization to implement these type traits. - Doug From hhinnant at apple.com Mon Mar 23 12:01:40 2009 From: hhinnant at apple.com (Howard Hinnant) Date: Mon, 23 Mar 2009 13:01:40 -0400 Subject: [cfe-commits] r67059 - in /cfe/trunk: include/clang/AST/ include/clang/Basic/ lib/AST/ lib/CodeGen/ lib/Sema/ test/Parser/ test/SemaCXX/ In-Reply-To: <4DFF3DBF-A3E6-41DC-AC73-F673950B8AAD@apple.com> References: <200903162322.n2GNM9dD030200@zion.cs.uiuc.edu> <4DFF3DBF-A3E6-41DC-AC73-F673950B8AAD@apple.com> Message-ID: <401CE2EA-9332-4E95-A61C-B9907CF8545F@apple.com> On Mar 23, 2009, at 12:35 PM, Douglas Gregor wrote: > On Mar 21, 2009, at 8:11 AM, Howard Hinnant wrote: > >> On Mar 20, 2009, at 4:17 PM, Douglas Gregor wrote: >> >>> Howard, there's a question for you below. Just search for your name. >> >> I didn't see a question. > > Errr, sorry. The question was: do you agree that the following code > should be ill- > formed? > > struct A { }; > > struct B { > operator A&&(); > } > > void test(B b) { > const A &ar = b; // error: operator A&&() returns an rvalue, so > it should not be considered when trying to bind ar to b > } I'm not positive. However assuming that this is ill-formed: struct A { }; struct B { operator A&(); } void test(B b) { const A &ar = b; // error: operator A&() returns an lvalue, so it should not be considered when trying to bind ar to b } (by some rule buried in [over]), then I see no reason to have operator A&&() behave differently (it should also be ill-formed). If however my assumption is incorrect, then I would like to investigate this further. -Howard From kremenek at apple.com Mon Mar 23 12:10:28 2009 From: kremenek at apple.com (Ted Kremenek) Date: Mon, 23 Mar 2009 17:10:28 -0000 Subject: [cfe-commits] r67534 - in /cfe/trunk: lib/Analysis/SimpleConstraintManager.cpp test/Analysis/retain-release.m Message-ID: <200903231710.n2NHATX7019372@zion.cs.uiuc.edu> Author: kremenek Date: Mon Mar 23 12:10:25 2009 New Revision: 67534 URL: http://llvm.org/viewvc/llvm-project?rev=67534&view=rev Log: analyzer: Provide temporary workaround for false positive reported by involving SimpleConstraintManager not reasoning well about symbolic constraint values involving arithmetic operators. Modified: cfe/trunk/lib/Analysis/SimpleConstraintManager.cpp cfe/trunk/test/Analysis/retain-release.m Modified: cfe/trunk/lib/Analysis/SimpleConstraintManager.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Analysis/SimpleConstraintManager.cpp?rev=67534&r1=67533&r2=67534&view=diff ============================================================================== --- cfe/trunk/lib/Analysis/SimpleConstraintManager.cpp (original) +++ cfe/trunk/lib/Analysis/SimpleConstraintManager.cpp Mon Mar 23 12:10:25 2009 @@ -29,6 +29,17 @@ case BinaryOperator::Or: case BinaryOperator::Xor: return false; + // We don't reason yet about arithmetic constraints on symbolic values. + case BinaryOperator::Mul: + case BinaryOperator::Div: + case BinaryOperator::Rem: + case BinaryOperator::Add: + case BinaryOperator::Sub: + case BinaryOperator::Shl: + case BinaryOperator::Shr: + return false; + + // All other cases. default: return true; } Modified: cfe/trunk/test/Analysis/retain-release.m URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis/retain-release.m?rev=67534&r1=67533&r2=67534&view=diff ============================================================================== --- cfe/trunk/test/Analysis/retain-release.m (original) +++ cfe/trunk/test/Analysis/retain-release.m Mon Mar 23 12:10:25 2009 @@ -299,8 +299,8 @@ NSString *kind = [[NSString alloc] initWithUTF8String:inkind]; // expected-warning{{leak}} // We do allow stringWithUTF8String to fail. This isn't really correct, as - // far as returning nil. In most error conditions it will throw an exception. - // If allocation fails it could return nil, but again this + // far as returning 0. In most error conditions it will throw an exception. + // If allocation fails it could return 0, but again this // isn't expected. NSString *name = [NSString stringWithUTF8String:inname]; if(!name) @@ -360,3 +360,37 @@ [foo dealloc]; // expected-warning{{used after it is released}} // message sent to released object } + +// From . The problem here is that 'length' binds to +// '($0 - 1)' after '--length', but SimpleConstraintManager doesn't know how to +// reason about '($0 - 1) > constant'. As a temporary hack, we drop the value +// of '($0 - 1)' and conjure a new symbol. +void rdar6704930(unsigned char *s, unsigned int length) { + NSString* name = 0; + if (s != 0) { + if (length > 0) { + while (length > 0) { + if (*s == ':') { + ++s; + --length; + name = [[NSString alloc] init]; // no-warning + break; + } + ++s; + --length; + } + if ((length == 0) && (name != 0)) { + [name release]; + name = 0; + } + if (length == 0) { // no ':' found -> use it all as name + name = [[NSString alloc] init]; // no-warning + } + } + } + + if (name != 0) { + [name release]; + } +} + From kremenek at apple.com Mon Mar 23 12:12:32 2009 From: kremenek at apple.com (Ted Kremenek) Date: Mon, 23 Mar 2009 17:12:32 -0000 Subject: [cfe-commits] r67536 - /cfe/tags/checker/checker-0.179/ Message-ID: <200903231712.n2NHCWfo019452@zion.cs.uiuc.edu> Author: kremenek Date: Mon Mar 23 12:12:32 2009 New Revision: 67536 URL: http://llvm.org/viewvc/llvm-project?rev=67536&view=rev Log: Removing checker-0.179. Removed: cfe/tags/checker/checker-0.179/ From hhinnant at apple.com Mon Mar 23 12:12:25 2009 From: hhinnant at apple.com (Howard Hinnant) Date: Mon, 23 Mar 2009 13:12:25 -0400 Subject: [cfe-commits] r67059 - in /cfe/trunk: include/clang/AST/ include/clang/Basic/ lib/AST/ lib/CodeGen/ lib/Sema/ test/Parser/ test/SemaCXX/ In-Reply-To: <401CE2EA-9332-4E95-A61C-B9907CF8545F@apple.com> References: <200903162322.n2GNM9dD030200@zion.cs.uiuc.edu> <4DFF3DBF-A3E6-41DC-AC73-F673950B8AAD@apple.com> <401CE2EA-9332-4E95-A61C-B9907CF8545F@apple.com> Message-ID: <91CAE3DE-03FC-4696-AB95-FC41E621A8E8@apple.com> On Mar 23, 2009, at 1:01 PM, Howard Hinnant wrote: > On Mar 23, 2009, at 12:35 PM, Douglas Gregor wrote: > >> On Mar 21, 2009, at 8:11 AM, Howard Hinnant wrote: >> >>> On Mar 20, 2009, at 4:17 PM, Douglas Gregor wrote: >>> >>>> Howard, there's a question for you below. Just search for your >>>> name. >>> >>> I didn't see a question. >> >> Errr, sorry. The question was: do you agree that the following code >> should be ill- >> formed? >> >> struct A { }; >> >> struct B { >> operator A&&(); >> } >> >> void test(B b) { >> const A &ar = b; // error: operator A&&() returns an rvalue, so >> it should not be considered when trying to bind ar to b >> } > > I'm not positive. However assuming that this is ill-formed: > > struct A { }; > > struct B { > operator A&(); > } > > void test(B b) { > const A &ar = b; // error: operator A&() returns an lvalue, so it > should not be considered when trying to bind ar to b > } > > (by some rule buried in [over]), then I see no reason to have operator > A&&() behave differently (it should also be ill-formed). If however > my assumption is incorrect, then I would like to investigate this > further. I think I'm officially confused. It appears to me that the use of both: operator A&(); and operator A(); would be well formed. What is the motivation (or reference to rule) to disallow operator A&&() in this context? -Howard From kremenek at apple.com Mon Mar 23 12:13:24 2009 From: kremenek at apple.com (Ted Kremenek) Date: Mon, 23 Mar 2009 17:13:24 -0000 Subject: [cfe-commits] r67538 - /cfe/tags/checker/checker-0.179/ Message-ID: <200903231713.n2NHDOpX019514@zion.cs.uiuc.edu> Author: kremenek Date: Mon Mar 23 12:13:24 2009 New Revision: 67538 URL: http://llvm.org/viewvc/llvm-project?rev=67538&view=rev Log: Tagging checker-0.179. Added: cfe/tags/checker/checker-0.179/ - copied from r67537, cfe/trunk/ From dgregor at apple.com Mon Mar 23 12:13:51 2009 From: dgregor at apple.com (Douglas Gregor) Date: Mon, 23 Mar 2009 10:13:51 -0700 Subject: [cfe-commits] r67059 - in /cfe/trunk: include/clang/AST/ include/clang/Basic/ lib/AST/ lib/CodeGen/ lib/Sema/ test/Parser/ test/SemaCXX/ In-Reply-To: <401CE2EA-9332-4E95-A61C-B9907CF8545F@apple.com> References: <200903162322.n2GNM9dD030200@zion.cs.uiuc.edu> <4DFF3DBF-A3E6-41DC-AC73-F673950B8AAD@apple.com> <401CE2EA-9332-4E95-A61C-B9907CF8545F@apple.com> Message-ID: <737DC187-CEB8-4103-BF94-0B011A89EDE7@apple.com> On Mar 23, 2009, at 10:01 AM, Howard Hinnant wrote: > On Mar 23, 2009, at 12:35 PM, Douglas Gregor wrote: > >> On Mar 21, 2009, at 8:11 AM, Howard Hinnant wrote: >> >>> On Mar 20, 2009, at 4:17 PM, Douglas Gregor wrote: >>> >>>> Howard, there's a question for you below. Just search for your >>>> name. >>> >>> I didn't see a question. >> >> Errr, sorry. The question was: do you agree that the following code >> should be ill- >> formed? >> >> struct A { }; >> >> struct B { >> operator A&&(); >> } >> >> void test(B b) { >> const A &ar = b; // error: operator A&&() returns an rvalue, so >> it should not be considered when trying to bind ar to b >> } > > I'm not positive. However assuming that this is ill-formed: > > struct A { }; > > struct B { > operator A&(); > } > > void test(B b) { > const A &ar = b; // error: operator A&() returns an lvalue, so it > should not be considered when trying to bind ar to b > } > > (by some rule buried in [over]), then I see no reason to have > operator A&&() behave differently (it should also be ill-formed). > If however my assumption is incorrect, then I would like to > investigate this further. Your revised example is well-formed according to [dcl.init.ref]p5 bullet 1 sub-bullet 2, which says that we can use implicit conversions to lvalues (GCC, EDG, and Clang all accept the code you gave). - Doug From dgregor at apple.com Mon Mar 23 12:18:13 2009 From: dgregor at apple.com (Douglas Gregor) Date: Mon, 23 Mar 2009 10:18:13 -0700 Subject: [cfe-commits] r67059 - in /cfe/trunk: include/clang/AST/ include/clang/Basic/ lib/AST/ lib/CodeGen/ lib/Sema/ test/Parser/ test/SemaCXX/ In-Reply-To: <91CAE3DE-03FC-4696-AB95-FC41E621A8E8@apple.com> References: <200903162322.n2GNM9dD030200@zion.cs.uiuc.edu> <4DFF3DBF-A3E6-41DC-AC73-F673950B8AAD@apple.com> <401CE2EA-9332-4E95-A61C-B9907CF8545F@apple.com> <91CAE3DE-03FC-4696-AB95-FC41E621A8E8@apple.com> Message-ID: <93B076DE-30AA-47D5-BE47-3734769D2DDF@apple.com> On Mar 23, 2009, at 10:12 AM, Howard Hinnant wrote: > > On Mar 23, 2009, at 1:01 PM, Howard Hinnant wrote: > >> On Mar 23, 2009, at 12:35 PM, Douglas Gregor wrote: >> >>> On Mar 21, 2009, at 8:11 AM, Howard Hinnant wrote: >>> >>>> On Mar 20, 2009, at 4:17 PM, Douglas Gregor wrote: >>>> >>>>> Howard, there's a question for you below. Just search for your >>>>> name. >>>> >>>> I didn't see a question. >>> >>> Errr, sorry. The question was: do you agree that the following code >>> should be ill- >>> formed? >>> >>> struct A { }; >>> >>> struct B { >>> operator A&&(); >>> } >>> >>> void test(B b) { >>> const A &ar = b; // error: operator A&&() returns an rvalue, so >>> it should not be considered when trying to bind ar to b >>> } >> >> I'm not positive. However assuming that this is ill-formed: >> >> struct A { }; >> >> struct B { >> operator A&(); >> } >> >> void test(B b) { >> const A &ar = b; // error: operator A&() returns an lvalue, so it >> should not be considered when trying to bind ar to b >> } >> >> (by some rule buried in [over]), then I see no reason to have >> operator >> A&&() behave differently (it should also be ill-formed). If however >> my assumption is incorrect, then I would like to investigate this >> further. > > I think I'm officially confused. It appears to me that the use of > both: > > operator A&(); > > and > > operator A(); > > would be well formed. What is the motivation (or reference to rule) > to disallow operator A&&() in this context? Yes, both are well-formed and both mean different things. The first one causes a direct binding (that's [dcl.init.ref]p5b1sb2), while the second one binds to a temporary. You know, I completely screwed up the example. I meant test() to be: void test(B b) { A &ar = b; // ill-formed } *sigh*, and I think I've answer my own question. Sorry for the noise. - Doug From hhinnant at apple.com Mon Mar 23 12:19:43 2009 From: hhinnant at apple.com (Howard Hinnant) Date: Mon, 23 Mar 2009 13:19:43 -0400 Subject: [cfe-commits] r67059 - in /cfe/trunk: include/clang/AST/ include/clang/Basic/ lib/AST/ lib/CodeGen/ lib/Sema/ test/Parser/ test/SemaCXX/ In-Reply-To: <93B076DE-30AA-47D5-BE47-3734769D2DDF@apple.com> References: <200903162322.n2GNM9dD030200@zion.cs.uiuc.edu> <4DFF3DBF-A3E6-41DC-AC73-F673950B8AAD@apple.com> <401CE2EA-9332-4E95-A61C-B9907CF8545F@apple.com> <91CAE3DE-03FC-4696-AB95-FC41E621A8E8@apple.com> <93B076DE-30AA-47D5-BE47-3734769D2DDF@apple.com> Message-ID: On Mar 23, 2009, at 1:18 PM, Douglas Gregor wrote: > Yes, both are well-formed and both mean different things. The first > one causes a direct binding (that's [dcl.init.ref]p5b1sb2), while > the second one binds to a temporary. > > You know, I completely screwed up the example. I meant test() to be: > > void test(B b) { > A &ar = b; // ill-formed > } > > *sigh*, and I think I've answer my own question. Sorry for the noise. I was wondering. Thanks for the clarification. Yeah, with that change I agree: ill-formed. -Howard From sabre at nondot.org Mon Mar 23 12:32:45 2009 From: sabre at nondot.org (Chris Lattner) Date: Mon, 23 Mar 2009 17:32:45 -0000 Subject: [cfe-commits] r67539 - in /cfe/trunk: lib/Lex/TokenLexer.cpp test/Preprocessor/assembler-with-cpp.c Message-ID: <200903231732.n2NHWjCu020641@zion.cs.uiuc.edu> Author: lattner Date: Mon Mar 23 12:32:45 2009 New Revision: 67539 URL: http://llvm.org/viewvc/llvm-project?rev=67539&view=rev Log: The individual pieces of an invalid paste as still candidates for expansion. This matters in assembler mode, where this is silently allowed. This fixes rdar://6709206. Modified: cfe/trunk/lib/Lex/TokenLexer.cpp cfe/trunk/test/Preprocessor/assembler-with-cpp.c Modified: cfe/trunk/lib/Lex/TokenLexer.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Lex/TokenLexer.cpp?rev=67539&r1=67538&r2=67539&view=diff ============================================================================== --- cfe/trunk/lib/Lex/TokenLexer.cpp (original) +++ cfe/trunk/lib/Lex/TokenLexer.cpp Mon Mar 23 12:32:45 2009 @@ -448,7 +448,9 @@ if (!PP.getLangOptions().AsmPreprocessor) PP.Diag(PasteOpLoc, diag::err_pp_bad_paste) << std::string(Buffer.begin(), Buffer.end()-1); - return false; + + // Do not consume the RHS. + --CurToken; } // Turn ## into 'unknown' to avoid # ## # from looking like a paste Modified: cfe/trunk/test/Preprocessor/assembler-with-cpp.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Preprocessor/assembler-with-cpp.c?rev=67539&r1=67538&r2=67539&view=diff ============================================================================== --- cfe/trunk/test/Preprocessor/assembler-with-cpp.c (original) +++ cfe/trunk/test/Preprocessor/assembler-with-cpp.c Mon Mar 23 12:32:45 2009 @@ -33,4 +33,15 @@ // RUN: grep "4: ''" %t && 4: '' + +// Portions of invalid pasting should still expand as macros. +// rdar://6709206 +// RUN: grep "5: expanded (" %t && +#define M4 expanded +#define M5() M4 ## ( + +5: M5() + + + // RUN: true From dgregor at apple.com Mon Mar 23 12:47:24 2009 From: dgregor at apple.com (Douglas Gregor) Date: Mon, 23 Mar 2009 17:47:24 -0000 Subject: [cfe-commits] r67541 - in /cfe/trunk: include/clang/Basic/DiagnosticSemaKinds.td lib/Sema/SemaDecl.cpp test/Sema/implicit-builtin-decl.c test/Sema/implicit-builtin-redecl.c Message-ID: <200903231747.n2NHlOuu021799@zion.cs.uiuc.edu> Author: dgregor Date: Mon Mar 23 12:47:24 2009 New Revision: 67541 URL: http://llvm.org/viewvc/llvm-project?rev=67541&view=rev Log: Fix PR3855. When we encounter an incompatible redeclaration of a library function, accept this declaration and pretend that we do not know that this is a library function. autoconf depends on this (broken) behavior. Modified: cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.td cfe/trunk/lib/Sema/SemaDecl.cpp cfe/trunk/test/Sema/implicit-builtin-decl.c cfe/trunk/test/Sema/implicit-builtin-redecl.c Modified: cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.td URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.td?rev=67541&r1=67540&r2=67541&view=diff ============================================================================== --- cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.td (original) +++ cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.td Mon Mar 23 12:47:24 2009 @@ -98,7 +98,7 @@ def err_implicit_decl_requires_stdio : Error< "implicit declaration of '%0' requires inclusion of the header ">; def warn_redecl_library_builtin : Warning< - "incompatible redeclaration of library function %0 will be ignored">; + "incompatible redeclaration of library function %0">; def err_builtin_definition : Error<"definition of builtin function %0">; /// parser diagnostics Modified: cfe/trunk/lib/Sema/SemaDecl.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaDecl.cpp?rev=67541&r1=67540&r2=67541&view=diff ============================================================================== --- cfe/trunk/lib/Sema/SemaDecl.cpp (original) +++ cfe/trunk/lib/Sema/SemaDecl.cpp Mon Mar 23 12:47:24 2009 @@ -747,11 +747,14 @@ if (Context.BuiltinInfo.isPredefinedLibFunction(BuiltinID)) { // The function the user is redeclaring is a library-defined // function like 'malloc' or 'printf'. Warn about the - // redeclaration, then ignore it. + // redeclaration, then pretend that we don't know about this + // library built-in. Diag(New->getLocation(), diag::warn_redecl_library_builtin) << New; Diag(Old->getLocation(), diag::note_previous_builtin_declaration) << Old << Old->getType(); - return true; + New->getIdentifier()->setBuiltinID(Builtin::NotBuiltin); + Old->setInvalidDecl(); + return false; } PrevDiag = diag::note_previous_builtin_declaration; Modified: cfe/trunk/test/Sema/implicit-builtin-decl.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Sema/implicit-builtin-decl.c?rev=67541&r1=67540&r2=67541&view=diff ============================================================================== --- cfe/trunk/test/Sema/implicit-builtin-decl.c (original) +++ cfe/trunk/test/Sema/implicit-builtin-decl.c Mon Mar 23 12:47:24 2009 @@ -7,7 +7,7 @@ void *alloca(__SIZE_TYPE__); // redeclaration okay -int *calloc(__SIZE_TYPE__, __SIZE_TYPE__); // expected-warning{{incompatible redeclaration of library function 'calloc' will be ignored}} \ +int *calloc(__SIZE_TYPE__, __SIZE_TYPE__); // expected-warning{{incompatible redeclaration of library function 'calloc'}} \ // expected-note{{'calloc' is a builtin with type 'void *}} @@ -16,8 +16,8 @@ } void h() { - int malloc(int); // expected-warning{{incompatible redeclaration of library function 'malloc' will be ignored}} - int strcpy(int); // expected-warning{{incompatible redeclaration of library function 'strcpy' will be ignored}} \ + int malloc(int); // expected-warning{{incompatible redeclaration of library function 'malloc'}} + int strcpy(int); // expected-warning{{incompatible redeclaration of library function 'strcpy'}} \ // expected-note{{'strcpy' is a builtin with type 'char *(char *, char const *)'}} } @@ -35,7 +35,19 @@ return __builtin_object_size(&a); // expected-error {{too few arguments to function}} } -void * realloc(void *p, int size) { // expected-warning{{incompatible redeclaration of library function 'realloc' will be ignored}} \ +void * realloc(void *p, int size) { // expected-warning{{incompatible redeclaration of library function 'realloc'}} \ // expected-note{{'realloc' is a builtin with type 'void *(void *,}} return p; } + +// PR3855 +void snprintf(); // expected-warning{{incompatible redeclaration of library function 'snprintf'}} \ + // expected-note{{'snprintf' is a builtin with type 'int (char *, unsigned long, char const *, ...)'}} + +int +main(int argc, char *argv[]) +{ + snprintf(); +} + +void snprintf() { } Modified: cfe/trunk/test/Sema/implicit-builtin-redecl.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Sema/implicit-builtin-redecl.c?rev=67541&r1=67540&r2=67541&view=diff ============================================================================== --- cfe/trunk/test/Sema/implicit-builtin-redecl.c (original) +++ cfe/trunk/test/Sema/implicit-builtin-redecl.c Mon Mar 23 12:47:24 2009 @@ -10,5 +10,5 @@ // expected-note{{'calloc' is a builtin with type 'void *}} void f1(void) { - return calloc(0, 0, 0); // expected-error{{too many arguments to function call}} + calloc(0, 0, 0); } From andersca at mac.com Mon Mar 23 12:49:11 2009 From: andersca at mac.com (Anders Carlsson) Date: Mon, 23 Mar 2009 17:49:11 -0000 Subject: [cfe-commits] r67542 - in /cfe/trunk: include/clang/Basic/DiagnosticSemaKinds.td lib/Sema/Sema.h lib/Sema/SemaDecl.cpp lib/Sema/SemaDeclCXX.cpp lib/Sema/SemaExprCXX.cpp test/SemaCXX/abstract.cpp Message-ID: <200903231749.n2NHnBH3021924@zion.cs.uiuc.edu> Author: andersca Date: Mon Mar 23 12:49:10 2009 New Revision: 67542 URL: http://llvm.org/viewvc/llvm-project?rev=67542&view=rev Log: It's an error to try to allocate an abstract object using new. Modified: cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.td cfe/trunk/lib/Sema/Sema.h cfe/trunk/lib/Sema/SemaDecl.cpp cfe/trunk/lib/Sema/SemaDeclCXX.cpp cfe/trunk/lib/Sema/SemaExprCXX.cpp cfe/trunk/test/SemaCXX/abstract.cpp Modified: cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.td URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.td?rev=67542&r1=67541&r2=67542&view=diff ============================================================================== --- cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.td (original) +++ cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.td Mon Mar 23 12:49:10 2009 @@ -220,7 +220,9 @@ def err_static_assert_failed : Error<"static_assert failed \"%0\"">; def err_abstract_type_in_decl : Error< - "%select{return|parameter|variable|field}0 type %1 is an abstract class">; + "%select{return|parameter|variable|field}1 type %0 is an abstract class">; +def err_allocation_of_abstract_type : Error< + "allocation of an object of abstract type %0">; def note_pure_virtual_function : Note< "pure virtual function %0">; Modified: cfe/trunk/lib/Sema/Sema.h URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/Sema.h?rev=67542&r1=67541&r2=67542&view=diff ============================================================================== --- cfe/trunk/lib/Sema/Sema.h (original) +++ cfe/trunk/lib/Sema/Sema.h Mon Mar 23 12:49:10 2009 @@ -1634,7 +1634,8 @@ SourceLocation Loc, SourceRange Range); std::string getAmbiguousPathsDisplayString(BasePaths &Paths); - bool RequireNonAbstractType(SourceLocation Loc, QualType T, unsigned SelID); + bool RequireNonAbstractType(SourceLocation Loc, QualType T, + unsigned DiagID, unsigned SelID); //===--------------------------------------------------------------------===// // C++ Overloaded Operators [C++ 13.5] Modified: cfe/trunk/lib/Sema/SemaDecl.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaDecl.cpp?rev=67542&r1=67541&r2=67542&view=diff ============================================================================== --- cfe/trunk/lib/Sema/SemaDecl.cpp (original) +++ cfe/trunk/lib/Sema/SemaDecl.cpp Mon Mar 23 12:49:10 2009 @@ -1641,7 +1641,9 @@ } // The variable can not have an abstract class type. - if (RequireNonAbstractType(D.getIdentifierLoc(), R, 2 /* variable type */)) + if (RequireNonAbstractType(D.getIdentifierLoc(), R, + diag::err_abstract_type_in_decl, + 2 /* variable type */)) InvalidDecl = true; // The variable can not @@ -1815,6 +1817,7 @@ // Check that the return type is not an abstract class type. if (RequireNonAbstractType(D.getIdentifierLoc(), R->getAsFunctionType()->getResultType(), + diag::err_abstract_type_in_decl, 0 /* return type */)) InvalidDecl = true; @@ -1996,6 +1999,7 @@ // Function parameters cannot have abstract class types. if (RequireNonAbstractType(PVD->getLocation(), PVD->getType(), + diag::err_abstract_type_in_decl, 1 /* parameter type */)) InvalidDecl = true; Params.push_back(PVD); @@ -3534,7 +3538,8 @@ } // Fields can not have abstract class types - if (RequireNonAbstractType(Loc, T, 3 /* field type */)) + if (RequireNonAbstractType(Loc, T, diag::err_abstract_type_in_decl, + 3 /* field type */)) InvalidDecl = true; // If this is declared as a bit-field, check the bit-field. Modified: cfe/trunk/lib/Sema/SemaDeclCXX.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaDeclCXX.cpp?rev=67542&r1=67541&r2=67542&view=diff ============================================================================== --- cfe/trunk/lib/Sema/SemaDeclCXX.cpp (original) +++ cfe/trunk/lib/Sema/SemaDeclCXX.cpp Mon Mar 23 12:49:10 2009 @@ -784,7 +784,7 @@ } bool Sema::RequireNonAbstractType(SourceLocation Loc, QualType T, - unsigned SelID) { + unsigned DiagID, unsigned SelID) { if (!getLangOptions().CPlusPlus) return false; @@ -800,7 +800,7 @@ if (!RD->isAbstract()) return false; - Diag(Loc, diag::err_abstract_type_in_decl) << SelID << RD->getDeclName(); + Diag(Loc, DiagID) << RD->getDeclName() << SelID; // Check if we've already emitted the list of pure virtual functions for this // class. Modified: cfe/trunk/lib/Sema/SemaExprCXX.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaExprCXX.cpp?rev=67542&r1=67541&r2=67542&view=diff ============================================================================== --- cfe/trunk/lib/Sema/SemaExprCXX.cpp (original) +++ cfe/trunk/lib/Sema/SemaExprCXX.cpp Mon Mar 23 12:49:10 2009 @@ -238,6 +238,10 @@ if (CheckAllocatedType(AllocType, D)) return ExprError(); + if (RequireNonAbstractType(D.getSourceRange().getBegin(), AllocType, + diag::err_allocation_of_abstract_type, 0)) + return ExprError(); + QualType ResultType = AllocType->isDependentType() ? Context.DependentTy : Context.getPointerType(AllocType); Modified: cfe/trunk/test/SemaCXX/abstract.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaCXX/abstract.cpp?rev=67542&r1=67541&r2=67542&view=diff ============================================================================== --- cfe/trunk/test/SemaCXX/abstract.cpp (original) +++ cfe/trunk/test/SemaCXX/abstract.cpp Mon Mar 23 12:49:10 2009 @@ -25,6 +25,8 @@ static_assert(!__is_abstract(E), "E inherits from an abstract class but implements f"); +C *d = new C; // expected-error {{allocation of an object of abstract type 'C'}} + C c; // expected-error {{variable type 'C' is an abstract class}} void t1(C c); // expected-error {{parameter type 'C' is an abstract class}} void t2(C); // expected-error {{parameter type 'C' is an abstract class}} @@ -32,3 +34,4 @@ struct S { C c; // expected-error {{field type 'C' is an abstract class}} }; + From ed at 80386.nl Mon Mar 23 12:49:47 2009 From: ed at 80386.nl (Ed Schouten) Date: Mon, 23 Mar 2009 18:49:47 +0100 Subject: [cfe-commits] r67541 - in /cfe/trunk: include/clang/Basic/DiagnosticSemaKinds.td lib/Sema/SemaDecl.cpp test/Sema/implicit-builtin-decl.c test/Sema/implicit-builtin-redecl.c In-Reply-To: <200903231747.n2NHlOuu021799@zion.cs.uiuc.edu> References: <200903231747.n2NHlOuu021799@zion.cs.uiuc.edu> Message-ID: <20090323174947.GC87326@hoeg.nl> * Douglas Gregor wrote: > Fix PR3855. When we encounter an incompatible redeclaration of a > library function, accept this declaration and pretend that we do not > know that this is a library function. autoconf depends on this > (broken) behavior. This is awesome. Thanks a lot! -- Ed Schouten WWW: http://80386.nl/ -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 195 bytes Desc: not available Url : http://lists.cs.uiuc.edu/pipermail/cfe-commits/attachments/20090323/9d333019/attachment.bin From sabre at nondot.org Mon Mar 23 12:57:53 2009 From: sabre at nondot.org (Chris Lattner) Date: Mon, 23 Mar 2009 17:57:53 -0000 Subject: [cfe-commits] r67543 - /cfe/trunk/lib/AST/Expr.cpp Message-ID: <200903231757.n2NHvrwh022377@zion.cs.uiuc.edu> Author: lattner Date: Mon Mar 23 12:57:53 2009 New Revision: 67543 URL: http://llvm.org/viewvc/llvm-project?rev=67543&view=rev Log: use isa<> Modified: cfe/trunk/lib/AST/Expr.cpp Modified: cfe/trunk/lib/AST/Expr.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/Expr.cpp?rev=67543&r1=67542&r2=67543&view=diff ============================================================================== --- cfe/trunk/lib/AST/Expr.cpp (original) +++ cfe/trunk/lib/AST/Expr.cpp Mon Mar 23 12:57:53 2009 @@ -786,7 +786,7 @@ // void takeclosure(void (^C)(void)); // void func() { int x = 1; takeclosure(^{ x = 7; }); } // - if (getStmtClass() == BlockDeclRefExprClass) { + if (isa(this)) { const BlockDeclRefExpr *BDR = cast(this); if (!BDR->isByRef() && isa(BDR->getDecl())) return MLV_NotBlockQualified; @@ -807,7 +807,7 @@ } // Assigning to an 'implicit' property? - else if (getStmtClass() == ObjCKVCRefExprClass) { + else if (isa(this)) { const ObjCKVCRefExpr* KVCExpr = cast(this); if (KVCExpr->getSetterMethod() == 0) return MLV_NoSetterProperty; From daniel at zuster.org Mon Mar 23 13:41:45 2009 From: daniel at zuster.org (Daniel Dunbar) Date: Mon, 23 Mar 2009 18:41:45 -0000 Subject: [cfe-commits] r67548 - in /cfe/trunk: include/clang/Driver/Options.h lib/Driver/OptTable.cpp Message-ID: <200903231841.n2NIfjnQ024492@zion.cs.uiuc.edu> Author: ddunbar Date: Mon Mar 23 13:41:45 2009 New Revision: 67548 URL: http://llvm.org/viewvc/llvm-project?rev=67548&view=rev Log: Driver: Check that options are ordered properly (outside of Release-Asserts mode). Also, avoid searching through option groups (which will never match). Modified: cfe/trunk/include/clang/Driver/Options.h cfe/trunk/lib/Driver/OptTable.cpp Modified: cfe/trunk/include/clang/Driver/Options.h URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Driver/Options.h?rev=67548&r1=67547&r2=67548&view=diff ============================================================================== --- cfe/trunk/include/clang/Driver/Options.h (original) +++ cfe/trunk/include/clang/Driver/Options.h Mon Mar 23 13:41:45 2009 @@ -37,8 +37,15 @@ /// instantiating Options, while letting other parts of the driver /// still use Option instances where convient. class OptTable { + /// The table of options which have been constructed, indexed by + /// option::ID - 1. mutable Option **Options; + /// The index of the first option which can be parsed (i.e., is + /// not a special option like 'input' or 'unknown', and is not an + /// option group). + unsigned FirstSearchableOption; + Option *constructOption(options::ID id) const; public: Modified: cfe/trunk/lib/Driver/OptTable.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/OptTable.cpp?rev=67548&r1=67547&r2=67548&view=diff ============================================================================== --- cfe/trunk/lib/Driver/OptTable.cpp (original) +++ cfe/trunk/lib/Driver/OptTable.cpp Mon Mar 23 13:41:45 2009 @@ -27,6 +27,48 @@ unsigned Param; }; +// Ordering on Info. The ordering is *almost* lexicographic, with two +// exceptions. First, '\0' comes at the end of the alphabet instead of +// the beginning (thus options preceed any other options which prefix +// them). Second, for options with the same name, the less permissive +// version should come first; a Flag option should preceed a Joined +// option, for example. + +static int StrCmpOptionName(const char *A, const char *B) { + char a = *A, b = *B; + while (a == b) { + if (a == '\0') + return 0; + + a = *++A; + b = *++B; + } + + if (a == '\0') // A is a prefix of B. + return 1; + if (b == '\0') // B is a prefix of A. + return -1; + + // Otherwise lexicographic. + return (a < b) ? -1 : 1; +} + +static inline bool operator<(const Info &A, const Info &B) { + if (&A == &B) + return false; + + if (int N = StrCmpOptionName(A.Name, B.Name)) + return N == -1; + + // Names are the same, check that classes are in order; exactly one + // should be joined, and it should succeed the other. + assert((A.Kind == Option::JoinedClass ^ B.Kind == Option::JoinedClass) && + "Unexpected classes for options with same name."); + return B.Kind == Option::JoinedClass; +} + +// + static Info OptionInfos[] = { // The InputOption info { "", "d", Option::InputClass, OPT_INVALID, OPT_INVALID, 0 }, @@ -44,11 +86,40 @@ return OptionInfos[id - 1]; } -OptTable::OptTable() : Options(new Option*[numOptions]()) { +OptTable::OptTable() : Options(new Option*[numOptions]()) { + // Find start of normal options. + FirstSearchableOption = 0; + for (unsigned i = OPT_UNKNOWN + 1; i < LastOption; ++i) { + if (getInfo(i).Kind != Option::GroupClass) { + FirstSearchableOption = i + 1; + break; + } + } + assert(FirstSearchableOption != 0 && "No searchable options?"); + +#ifndef NDEBUG + // Check that everything after the first searchable option is a + // regular option class. + for (unsigned i = FirstSearchableOption; i < LastOption; ++i) { + Option::OptionClass Kind = getInfo(i).Kind; + assert((Kind != Option::InputClass && Kind != Option::UnknownClass && + Kind != Option::GroupClass) && + "Special options should be defined first!"); + } + + // Check that options are in order. + for (unsigned i = FirstSearchableOption + 1; i < LastOption; ++i) { + if (!(getInfo(i - 1) < getInfo(i))) { + getOption((options::ID) (i - 1))->dump(); + getOption((options::ID) i)->dump(); + assert(0 && "Options are not in order!"); + } + } +#endif } OptTable::~OptTable() { - for (unsigned i=0; i Author: ddunbar Date: Mon Mar 23 14:03:36 2009 New Revision: 67549 URL: http://llvm.org/viewvc/llvm-project?rev=67549&view=rev Log: Driver: Add two special groups of "whitelisted" options which we know clang doesn't support, and don't want to warn are unused. Eventually these should disappear. Here is a more readable list than is in the diff: W options: -Wall, -Wcast-align, -Wchar-align, -Wchar-subscripts, -Werror, -Wextra, -Winline, -Wint-to-pointer-cast, -Wmissing-braces, -Wmost, -Wnested-externs, -Wno-format-y2k, -Wno-four-char-constants, -Wno-missing-field-initializers, -Wno-trigraphs, -Wno-unknown-pragmas, -Wno-unused-parameter, -Wparentheses, -Wpointer-arith, -Wpointer-to-int-cast, -Wreturn-type, -Wshorten-64-to-32, -Wswitch, -Wunused-function, -Wunused-label, -Wunused-value, -Wunused-variable, -Wwrite-strings. f options: -fasm-blocks, -fmessage-length=. Modified: cfe/trunk/include/clang/Driver/Options.def cfe/trunk/lib/Driver/Tools.cpp Modified: cfe/trunk/include/clang/Driver/Options.def URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Driver/Options.def?rev=67549&r1=67548&r2=67549&view=diff ============================================================================== --- cfe/trunk/include/clang/Driver/Options.def (original) +++ cfe/trunk/include/clang/Driver/Options.def Mon Mar 23 14:03:36 2009 @@ -99,6 +99,13 @@ OPTION("", pedantic_Group, Group, INVALID, INVALID, "", 0) +// Temporary groups for clang options which we know we don't support, +// but don't want to verbosely warn the user about. +OPTION("", clang_ignored_W_Group, Group, W_Group, + INVALID, "", 0) +OPTION("", clang_ignored_f_Group, Group, f_Group, + INVALID, "", 0) + ////////// // Options @@ -255,18 +262,45 @@ OPTION("-U", U, JoinedOrSeparate, INVALID, INVALID, "", 0) OPTION("-V", V, JoinedOrSeparate, INVALID, INVALID, "u", 0) OPTION("-Wa,", Wa_COMMA, CommaJoined, INVALID, INVALID, "", 0) -OPTION("-Wall", Wall, Flag, W_Group, INVALID, "", 0) +OPTION("-Wall", Wall, Flag, clang_ignored_W_Group, INVALID, "", 0) +OPTION("-Wcast-align", Wcast_align, Flag, clang_ignored_W_Group, INVALID, "", 0) +OPTION("-Wchar-align", Wchar_align, Flag, clang_ignored_W_Group, INVALID, "", 0) +OPTION("-Wchar-subscripts", Wchar_subscripts, Flag, clang_ignored_W_Group, INVALID, "", 0) +OPTION("-Werror", Werror, Flag, clang_ignored_W_Group, INVALID, "", 0) +OPTION("-Wextra", Wextra, Flag, clang_ignored_W_Group, INVALID, "", 0) OPTION("-Wfloat-equal", Wfloat_equal, Flag, clang_W_Group, INVALID, "", 0) OPTION("-Wimplicit-function-declaration", Wimplicit_function_declaration, Flag, clang_W_Group, INVALID, "", 0) +OPTION("-Winline", Winline, Flag, clang_ignored_W_Group, INVALID, "", 0) +OPTION("-Wint-to-pointer-cast", Wint_to_pointer_cast, Flag, clang_ignored_W_Group, INVALID, "", 0) OPTION("-Wl,", Wl_COMMA, CommaJoined, INVALID, INVALID, "li", 0) +OPTION("-Wmissing-braces", Wmissing_braces, Flag, clang_ignored_W_Group, INVALID, "", 0) +OPTION("-Wmost", Wmost, Flag, clang_ignored_W_Group, INVALID, "", 0) +OPTION("-Wnested-externs", Wnested_externs, Flag, clang_ignored_W_Group, INVALID, "", 0) OPTION("-Wno-format-nonliteral", Wno_format_nonliteral, Flag, clang_W_Group, INVALID, "", 0) +OPTION("-Wno-format-y2k", Wno_format_y2k, Flag, clang_ignored_W_Group, INVALID, "", 0) +OPTION("-Wno-four-char-constants", Wno_four_char_constants, Flag, clang_ignored_W_Group, INVALID, "", 0) +OPTION("-Wno-missing-field-initializers", Wno_missing_field_initializers, Flag, clang_ignored_W_Group, INVALID, "", 0) OPTION("-Wno-nonportable-cfstrings", Wno_nonportable_cfstrings, Joined, W_Group, INVALID, "", 0) OPTION("-Wno-strict-selector-match", Wno_strict_selector_match, Flag, clang_W_Group, INVALID, "", 0) +OPTION("-Wno-trigraphs", Wno_trigraphs, Flag, clang_ignored_W_Group, INVALID, "", 0) +OPTION("-Wno-unknown-pragmas", Wno_unknown_pragmas, Flag, clang_ignored_W_Group, INVALID, "", 0) +OPTION("-Wno-unused-parameter", Wno_unused_parameter, Flag, clang_ignored_W_Group, INVALID, "", 0) OPTION("-Wnonportable-cfstrings", Wnonportable_cfstrings, Joined, W_Group, INVALID, "", 0) OPTION("-Wp,", Wp_COMMA, CommaJoined, INVALID, INVALID, "", 0) +OPTION("-Wparentheses", Wparentheses, Flag, clang_ignored_W_Group, INVALID, "", 0) +OPTION("-Wpointer-arith", Wpointer_arith, Flag, clang_ignored_W_Group, INVALID, "", 0) +OPTION("-Wpointer-to-int-cast", Wpointer_to_int_cast, Flag, clang_ignored_W_Group, INVALID, "", 0) OPTION("-Wreadonly-setter-attrs", Wreadonly_setter_attrs, Flag, clang_W_Group, INVALID, "", 0) +OPTION("-Wreturn-type", Wreturn_type, Flag, clang_ignored_W_Group, INVALID, "", 0) +OPTION("-Wshorten-64-to-32", Wshorten_64_to_32, Flag, clang_ignored_W_Group, INVALID, "", 0) +OPTION("-Wswitch", Wswitch, Flag, clang_ignored_W_Group, INVALID, "", 0) OPTION("-Wundef", Wundef, Flag, clang_W_Group, INVALID, "", 0) +OPTION("-Wunused-function", Wunused_function, Flag, clang_ignored_W_Group, INVALID, "", 0) +OPTION("-Wunused-label", Wunused_label, Flag, clang_ignored_W_Group, INVALID, "", 0) OPTION("-Wunused-macros", Wunused_macros, Flag, clang_W_Group, INVALID, "", 0) +OPTION("-Wunused-value", Wunused_value, Flag, clang_ignored_W_Group, INVALID, "", 0) +OPTION("-Wunused-variable", Wunused_variable, Flag, clang_ignored_W_Group, INVALID, "", 0) +OPTION("-Wwrite-strings", Wwrite_strings, Flag, clang_ignored_W_Group, INVALID, "", 0) OPTION("-W", W, Joined, W_Group, INVALID, "", 0) OPTION("-Xanalyzer", Xanalyzer, Separate, INVALID, INVALID, "", 0) OPTION("-Xarch_", Xarch__, JoinedAndSeparate, INVALID, INVALID, "", 0) @@ -313,6 +347,7 @@ OPTION("-fPIC", fPIC, Flag, f_Group, INVALID, "", 0) OPTION("-fPIE", fPIE, Flag, f_Group, INVALID, "", 0) OPTION("-fapple-kext", fapple_kext, Flag, f_Group, INVALID, "", 0) +OPTION("-fasm-blocks", fasm_blocks, Flag, clang_ignored_f_Group, INVALID, "", 0) OPTION("-fastcp", fastcp, Flag, f_Group, INVALID, "", 0) OPTION("-fastf", fastf, Flag, f_Group, INVALID, "", 0) OPTION("-fast", fast, Flag, f_Group, INVALID, "", 0) @@ -332,13 +367,14 @@ OPTION("-fextdirs=", fextdirs_EQ, Joined, f_Group, INVALID, "", 0) OPTION("-ffreestanding", ffreestanding, Flag, clang_f_Group, INVALID, "", 0) OPTION("-fgnu-runtime", fgnu_runtime, Flag, clang_f_Group, INVALID, "", 0) -OPTION("-filelist", filelist, Separate, INVALID, INVALID, "l", 0) OPTION("-fheinous-gnu-extensions", fheinous_gnu_extensions, Flag, INVALID, INVALID, "", 0) +OPTION("-filelist", filelist, Separate, INVALID, INVALID, "l", 0) OPTION("-findirect-virtual-calls", findirect_virtual_calls, Flag, f_Group, INVALID, "", 0) OPTION("-flat_namespace", flat__namespace, Flag, INVALID, INVALID, "", 0) OPTION("-flax-vector-conversions", flax_vector_conversions, Flag, clang_f_Group, INVALID, "", 0) OPTION("-flimited-precision=", flimited_precision_EQ, Joined, f_Group, INVALID, "", 0) OPTION("-fmath-errno", fmath_errno, Flag, f_Group, INVALID, "", 0) +OPTION("-fmessage-length=", fmessage_length_EQ, Joined, clang_ignored_f_Group, INVALID, "", 0) OPTION("-fms-extensions", fms_extensions, Flag, clang_f_Group, INVALID, "", 0) OPTION("-fmudflapth", fmudflapth, Flag, f_Group, INVALID, "", 0) OPTION("-fmudflap", fmudflap, Flag, f_Group, INVALID, "", 0) Modified: cfe/trunk/lib/Driver/Tools.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Tools.cpp?rev=67549&r1=67548&r2=67549&view=diff ============================================================================== --- cfe/trunk/lib/Driver/Tools.cpp (original) +++ cfe/trunk/lib/Driver/Tools.cpp Mon Mar 23 14:03:36 2009 @@ -334,6 +334,18 @@ const char *Exec = Args.MakeArgString(getToolChain().GetProgramPath(C, "clang").c_str()); Dest.addCommand(new Command(Exec, CmdArgs)); + + // Claim some arguments which clang doesn't support, but we don't + // care to warn the user about. + + // FIXME: Use iterator. + for (ArgList::const_iterator + it = Args.begin(), ie = Args.end(); it != ie; ++it) { + const Arg *A = *it; + if (A->getOption().matches(options::OPT_clang_ignored_W_Group) || + A->getOption().matches(options::OPT_clang_ignored_f_Group)) + A->claim(); + } } void gcc::Common::ConstructJob(Compilation &C, const JobAction &JA, From andersca at mac.com Mon Mar 23 14:10:31 2009 From: andersca at mac.com (Anders Carlsson) Date: Mon, 23 Mar 2009 19:10:31 -0000 Subject: [cfe-commits] r67550 - in /cfe/trunk: lib/Sema/SemaDecl.cpp lib/Sema/SemaDeclCXX.cpp lib/Sema/SemaExprCXX.cpp test/SemaCXX/abstract.cpp Message-ID: <200903231910.n2NJAW6T025694@zion.cs.uiuc.edu> Author: andersca Date: Mon Mar 23 14:10:31 2009 New Revision: 67550 URL: http://llvm.org/viewvc/llvm-project?rev=67550&view=rev Log: More improvements to abstract type checking. Handle arrays correctly, and make sure to check parameter types before they decay. Modified: cfe/trunk/lib/Sema/SemaDecl.cpp cfe/trunk/lib/Sema/SemaDeclCXX.cpp cfe/trunk/lib/Sema/SemaExprCXX.cpp cfe/trunk/test/SemaCXX/abstract.cpp Modified: cfe/trunk/lib/Sema/SemaDecl.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaDecl.cpp?rev=67550&r1=67549&r2=67550&view=diff ============================================================================== --- cfe/trunk/lib/Sema/SemaDecl.cpp (original) +++ cfe/trunk/lib/Sema/SemaDecl.cpp Mon Mar 23 14:10:31 2009 @@ -1996,12 +1996,6 @@ } else if (FTI.NumArgs > 0 && FTI.ArgInfo[0].Param != 0) { for (unsigned i = 0, e = FTI.NumArgs; i != e; ++i) { ParmVarDecl *PVD = (ParmVarDecl *)FTI.ArgInfo[i].Param; - - // Function parameters cannot have abstract class types. - if (RequireNonAbstractType(PVD->getLocation(), PVD->getType(), - diag::err_abstract_type_in_decl, - 1 /* parameter type */)) - InvalidDecl = true; Params.push_back(PVD); } } @@ -2611,6 +2605,13 @@ // FIXME: If a source translation tool needs to see the original type, then // we need to consider storing both types (in ParmVarDecl)... // + + // Parameters can not be abstract class types. + if (RequireNonAbstractType(D.getIdentifierLoc(), parmDeclType, + diag::err_abstract_type_in_decl, + 1 /* parameter type */)) + D.setInvalidType(true); + if (parmDeclType->isArrayType()) { // int x[restrict 4] -> int *restrict parmDeclType = Context.getArrayDecayedType(parmDeclType); Modified: cfe/trunk/lib/Sema/SemaDeclCXX.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaDeclCXX.cpp?rev=67550&r1=67549&r2=67550&view=diff ============================================================================== --- cfe/trunk/lib/Sema/SemaDeclCXX.cpp (original) +++ cfe/trunk/lib/Sema/SemaDeclCXX.cpp Mon Mar 23 14:10:31 2009 @@ -788,6 +788,9 @@ if (!getLangOptions().CPlusPlus) return false; + + if (const ArrayType *AT = Context.getAsArrayType(T)) + return RequireNonAbstractType(Loc, AT->getElementType(), DiagID, SelID); const RecordType *RT = T->getAsRecordType(); if (!RT) Modified: cfe/trunk/lib/Sema/SemaExprCXX.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaExprCXX.cpp?rev=67550&r1=67549&r2=67550&view=diff ============================================================================== --- cfe/trunk/lib/Sema/SemaExprCXX.cpp (original) +++ cfe/trunk/lib/Sema/SemaExprCXX.cpp Mon Mar 23 14:10:31 2009 @@ -197,6 +197,10 @@ diag::err_invalid_incomplete_type_use, FullRange)) return ExprError(); + if (RequireNonAbstractType(TyBeginLoc, Ty, + diag::err_allocation_of_abstract_type, 0)) + return ExprError(); + exprs.release(); return Owned(new (Context) CXXZeroInitValueExpr(Ty, TyBeginLoc, RParenLoc)); } Modified: cfe/trunk/test/SemaCXX/abstract.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaCXX/abstract.cpp?rev=67550&r1=67549&r2=67550&view=diff ============================================================================== --- cfe/trunk/test/SemaCXX/abstract.cpp (original) +++ cfe/trunk/test/SemaCXX/abstract.cpp Mon Mar 23 14:10:31 2009 @@ -35,3 +35,20 @@ C c; // expected-error {{field type 'C' is an abstract class}} }; +void t3(const C&); + +void f() { + C(); // expected-error {{allocation of an object of abstract type 'C'}} + t3(C()); // expected-error {{allocation of an object of abstract type 'C'}} +} + +C e[2]; // expected-error {{variable type 'C' is an abstract class}} + +void t4(C c[2]); // expected-error {{parameter type 'C' is an abstract class}} + +void t5(void (*)(C)); // expected-error {{parameter type 'C' is an abstract class}} + +typedef void (*Func)(C); // expected-error {{parameter type 'C' is an abstract class}} +void t6(Func); + + From fjahanian at apple.com Mon Mar 23 14:10:40 2009 From: fjahanian at apple.com (Fariborz Jahanian) Date: Mon, 23 Mar 2009 19:10:40 -0000 Subject: [cfe-commits] r67551 - in /cfe/trunk: lib/CodeGen/CGObjCMac.cpp test/CodeGenObjC/objc2-strong-cast-1.m Message-ID: <200903231910.n2NJAe37025711@zion.cs.uiuc.edu> Author: fjahanian Date: Mon Mar 23 14:10:40 2009 New Revision: 67551 URL: http://llvm.org/viewvc/llvm-project?rev=67551&view=rev Log: Must allow for strong cast of floats as well (objc2 gc). Added: cfe/trunk/test/CodeGenObjC/objc2-strong-cast-1.m Modified: cfe/trunk/lib/CodeGen/CGObjCMac.cpp Modified: cfe/trunk/lib/CodeGen/CGObjCMac.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGObjCMac.cpp?rev=67551&r1=67550&r2=67551&view=diff ============================================================================== --- cfe/trunk/lib/CodeGen/CGObjCMac.cpp (original) +++ cfe/trunk/lib/CodeGen/CGObjCMac.cpp Mon Mar 23 14:10:40 2009 @@ -41,7 +41,7 @@ CodeGen::CodeGenModule &CGM; public: - const llvm::Type *ShortTy, *IntTy, *LongTy; + const llvm::Type *ShortTy, *IntTy, *LongTy, *LongLongTy; const llvm::Type *Int8PtrTy; /// ObjectPtrTy - LLVM type for object handles (typeof(id)) @@ -2238,8 +2238,12 @@ void CGObjCMac::EmitObjCWeakAssign(CodeGen::CodeGenFunction &CGF, llvm::Value *src, llvm::Value *dst) { - if (!isa(src->getType())) { - src = CGF.Builder.CreateBitCast(src, ObjCTypes.LongTy); + const llvm::Type * SrcTy = src->getType(); + if (!isa(SrcTy)) { + unsigned Size = CGM.getTargetData().getTypePaddedSize(SrcTy); + assert(Size <= 8 && "does not support size > 8"); + src = (Size == 4) ? CGF.Builder.CreateBitCast(src, ObjCTypes.IntTy) + : CGF.Builder.CreateBitCast(src, ObjCTypes.LongLongTy); src = CGF.Builder.CreateIntToPtr(src, ObjCTypes.Int8PtrTy); } src = CGF.Builder.CreateBitCast(src, ObjCTypes.ObjectPtrTy); @@ -2255,8 +2259,12 @@ void CGObjCMac::EmitObjCGlobalAssign(CodeGen::CodeGenFunction &CGF, llvm::Value *src, llvm::Value *dst) { - if (!isa(src->getType())) { - src = CGF.Builder.CreateBitCast(src, ObjCTypes.LongTy); + const llvm::Type * SrcTy = src->getType(); + if (!isa(SrcTy)) { + unsigned Size = CGM.getTargetData().getTypePaddedSize(SrcTy); + assert(Size <= 8 && "does not support size > 8"); + src = (Size == 4) ? CGF.Builder.CreateBitCast(src, ObjCTypes.IntTy) + : CGF.Builder.CreateBitCast(src, ObjCTypes.LongLongTy); src = CGF.Builder.CreateIntToPtr(src, ObjCTypes.Int8PtrTy); } src = CGF.Builder.CreateBitCast(src, ObjCTypes.ObjectPtrTy); @@ -2272,8 +2280,12 @@ void CGObjCMac::EmitObjCIvarAssign(CodeGen::CodeGenFunction &CGF, llvm::Value *src, llvm::Value *dst) { - if (!isa(src->getType())) { - src = CGF.Builder.CreateBitCast(src, ObjCTypes.LongTy); + const llvm::Type * SrcTy = src->getType(); + if (!isa(SrcTy)) { + unsigned Size = CGM.getTargetData().getTypePaddedSize(SrcTy); + assert(Size <= 8 && "does not support size > 8"); + src = (Size == 4) ? CGF.Builder.CreateBitCast(src, ObjCTypes.IntTy) + : CGF.Builder.CreateBitCast(src, ObjCTypes.LongLongTy); src = CGF.Builder.CreateIntToPtr(src, ObjCTypes.Int8PtrTy); } src = CGF.Builder.CreateBitCast(src, ObjCTypes.ObjectPtrTy); @@ -2289,8 +2301,12 @@ void CGObjCMac::EmitObjCStrongCastAssign(CodeGen::CodeGenFunction &CGF, llvm::Value *src, llvm::Value *dst) { - if (!isa(src->getType())) { - src = CGF.Builder.CreateBitCast(src, ObjCTypes.LongTy); + const llvm::Type * SrcTy = src->getType(); + if (!isa(SrcTy)) { + unsigned Size = CGM.getTargetData().getTypePaddedSize(SrcTy); + assert(Size <= 8 && "does not support size > 8"); + src = (Size == 4) ? CGF.Builder.CreateBitCast(src, ObjCTypes.IntTy) + : CGF.Builder.CreateBitCast(src, ObjCTypes.LongLongTy); src = CGF.Builder.CreateIntToPtr(src, ObjCTypes.Int8PtrTy); } src = CGF.Builder.CreateBitCast(src, ObjCTypes.ObjectPtrTy); @@ -3087,6 +3103,7 @@ ShortTy = Types.ConvertType(Ctx.ShortTy); IntTy = Types.ConvertType(Ctx.IntTy); LongTy = Types.ConvertType(Ctx.LongTy); + LongLongTy = Types.ConvertType(Ctx.LongLongTy); Int8PtrTy = llvm::PointerType::getUnqual(llvm::Type::Int8Ty); ObjectPtrTy = Types.ConvertType(Ctx.getObjCIdType()); @@ -5112,8 +5129,12 @@ void CGObjCNonFragileABIMac::EmitObjCIvarAssign(CodeGen::CodeGenFunction &CGF, llvm::Value *src, llvm::Value *dst) { - if (!isa(src->getType())) { - src = CGF.Builder.CreateBitCast(src, ObjCTypes.LongTy); + const llvm::Type * SrcTy = src->getType(); + if (!isa(SrcTy)) { + unsigned Size = CGM.getTargetData().getTypePaddedSize(SrcTy); + assert(Size <= 8 && "does not support size > 8"); + src = (Size == 4 ? CGF.Builder.CreateBitCast(src, ObjCTypes.IntTy) + : CGF.Builder.CreateBitCast(src, ObjCTypes.LongTy)); src = CGF.Builder.CreateIntToPtr(src, ObjCTypes.Int8PtrTy); } src = CGF.Builder.CreateBitCast(src, ObjCTypes.ObjectPtrTy); @@ -5130,8 +5151,12 @@ CodeGen::CodeGenFunction &CGF, llvm::Value *src, llvm::Value *dst) { - if (!isa(src->getType())) { - src = CGF.Builder.CreateBitCast(src, ObjCTypes.LongTy); + const llvm::Type * SrcTy = src->getType(); + if (!isa(SrcTy)) { + unsigned Size = CGM.getTargetData().getTypePaddedSize(SrcTy); + assert(Size <= 8 && "does not support size > 8"); + src = (Size == 4 ? CGF.Builder.CreateBitCast(src, ObjCTypes.IntTy) + : CGF.Builder.CreateBitCast(src, ObjCTypes.LongTy)); src = CGF.Builder.CreateIntToPtr(src, ObjCTypes.Int8PtrTy); } src = CGF.Builder.CreateBitCast(src, ObjCTypes.ObjectPtrTy); @@ -5163,8 +5188,12 @@ void CGObjCNonFragileABIMac::EmitObjCWeakAssign(CodeGen::CodeGenFunction &CGF, llvm::Value *src, llvm::Value *dst) { - if (!isa(src->getType())) { - src = CGF.Builder.CreateBitCast(src, ObjCTypes.LongTy); + const llvm::Type * SrcTy = src->getType(); + if (!isa(SrcTy)) { + unsigned Size = CGM.getTargetData().getTypePaddedSize(SrcTy); + assert(Size <= 8 && "does not support size > 8"); + src = (Size == 4 ? CGF.Builder.CreateBitCast(src, ObjCTypes.IntTy) + : CGF.Builder.CreateBitCast(src, ObjCTypes.LongTy)); src = CGF.Builder.CreateIntToPtr(src, ObjCTypes.Int8PtrTy); } src = CGF.Builder.CreateBitCast(src, ObjCTypes.ObjectPtrTy); @@ -5180,8 +5209,12 @@ void CGObjCNonFragileABIMac::EmitObjCGlobalAssign(CodeGen::CodeGenFunction &CGF, llvm::Value *src, llvm::Value *dst) { - if (!isa(src->getType())) { - src = CGF.Builder.CreateBitCast(src, ObjCTypes.LongTy); + const llvm::Type * SrcTy = src->getType(); + if (!isa(SrcTy)) { + unsigned Size = CGM.getTargetData().getTypePaddedSize(SrcTy); + assert(Size <= 8 && "does not support size > 8"); + src = (Size == 4 ? CGF.Builder.CreateBitCast(src, ObjCTypes.IntTy) + : CGF.Builder.CreateBitCast(src, ObjCTypes.LongTy)); src = CGF.Builder.CreateIntToPtr(src, ObjCTypes.Int8PtrTy); } src = CGF.Builder.CreateBitCast(src, ObjCTypes.ObjectPtrTy); Added: cfe/trunk/test/CodeGenObjC/objc2-strong-cast-1.m URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjC/objc2-strong-cast-1.m?rev=67551&view=auto ============================================================================== --- cfe/trunk/test/CodeGenObjC/objc2-strong-cast-1.m (added) +++ cfe/trunk/test/CodeGenObjC/objc2-strong-cast-1.m Mon Mar 23 14:10:40 2009 @@ -0,0 +1,23 @@ +// RUN: clang -triple x86_64-unknown-unknown -fobjc-gc -emit-llvm -o %t %s + + at interface I { + __attribute__((objc_gc(strong))) int *i_IdocumentIDs; + __attribute__((objc_gc(strong))) long *l_IdocumentIDs; + __attribute__((objc_gc(strong))) long long *ll_IdocumentIDs; + __attribute__((objc_gc(strong))) float *IdocumentIDs; + __attribute__((objc_gc(strong))) double *d_IdocumentIDs; +} +- (void) _getResultsOfMatches; + at end + + at implementation I +-(void) _getResultsOfMatches { + IdocumentIDs[2] = IdocumentIDs[3]; + d_IdocumentIDs[2] = d_IdocumentIDs[3]; + l_IdocumentIDs[2] = l_IdocumentIDs[3]; + ll_IdocumentIDs[2] = ll_IdocumentIDs[3]; + i_IdocumentIDs[2] = i_IdocumentIDs[3]; +} + + at end + From daniel at zuster.org Mon Mar 23 14:19:19 2009 From: daniel at zuster.org (Daniel Dunbar) Date: Mon, 23 Mar 2009 19:19:19 -0000 Subject: [cfe-commits] r67552 - /cfe/trunk/lib/Driver/OptTable.cpp Message-ID: <200903231919.n2NJJJh7026048@zion.cs.uiuc.edu> Author: ddunbar Date: Mon Mar 23 14:19:19 2009 New Revision: 67552 URL: http://llvm.org/viewvc/llvm-project?rev=67552&view=rev Log: Driver: Fix off by one in computation of first searchable option. Modified: cfe/trunk/lib/Driver/OptTable.cpp Modified: cfe/trunk/lib/Driver/OptTable.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/OptTable.cpp?rev=67552&r1=67551&r2=67552&view=diff ============================================================================== --- cfe/trunk/lib/Driver/OptTable.cpp (original) +++ cfe/trunk/lib/Driver/OptTable.cpp Mon Mar 23 14:19:19 2009 @@ -91,7 +91,7 @@ FirstSearchableOption = 0; for (unsigned i = OPT_UNKNOWN + 1; i < LastOption; ++i) { if (getInfo(i).Kind != Option::GroupClass) { - FirstSearchableOption = i + 1; + FirstSearchableOption = i; break; } } From daniel at zuster.org Mon Mar 23 14:23:24 2009 From: daniel at zuster.org (Daniel Dunbar) Date: Mon, 23 Mar 2009 12:23:24 -0700 Subject: [cfe-commits] r67532 - /cfe/trunk/Driver/clang.cpp In-Reply-To: <200903231624.n2NGObQG016864@zion.cs.uiuc.edu> References: <200903231624.n2NGObQG016864@zion.cs.uiuc.edu> Message-ID: <6a8523d60903231223s2481e19eqb6f51cf11eb4e7c0@mail.gmail.com> This changes makes since, but out of curiosity was it necessary? The driver should always call clang with -x. - Daniel On Mon, Mar 23, 2009 at 9:24 AM, Chris Lattner wrote: > Author: lattner > Date: Mon Mar 23 11:24:37 2009 > New Revision: 67532 > > URL: http://llvm.org/viewvc/llvm-project?rev=67532&view=rev > Log: > if the driver decides to run clang on a .s file, treat it as a .S file. > > Modified: > cfe/trunk/Driver/clang.cpp > > Modified: cfe/trunk/Driver/clang.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/Driver/clang.cpp?rev=67532&r1=67531&r2=67532&view=diff > > > ============================================================================== > --- cfe/trunk/Driver/clang.cpp (original) > +++ cfe/trunk/Driver/clang.cpp Mon Mar 23 11:24:37 2009 > @@ -322,7 +322,9 @@ > // assembler: .S > if (Ext == "c") > return langkind_c; > - else if (Ext == "S") > + else if (Ext == "S" || > + // If the compiler is run on a .s file, preprocess it as .S > + Ext == "s") > return langkind_asm_cpp; > else if (Ext == "i") > return langkind_c_cpp; > > > _______________________________________________ > cfe-commits mailing list > cfe-commits at cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits > -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.cs.uiuc.edu/pipermail/cfe-commits/attachments/20090323/8eca100a/attachment.html From kremenek at apple.com Mon Mar 23 14:53:31 2009 From: kremenek at apple.com (Ted Kremenek) Date: Mon, 23 Mar 2009 19:53:31 -0000 Subject: [cfe-commits] r67553 - /cfe/trunk/www/latest_checker.html.incl Message-ID: <200903231953.n2NJrVMu027191@zion.cs.uiuc.edu> Author: kremenek Date: Mon Mar 23 14:53:30 2009 New Revision: 67553 URL: http://llvm.org/viewvc/llvm-project?rev=67553&view=rev Log: Update checker build. Modified: cfe/trunk/www/latest_checker.html.incl Modified: cfe/trunk/www/latest_checker.html.incl URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/www/latest_checker.html.incl?rev=67553&r1=67552&r2=67553&view=diff ============================================================================== --- cfe/trunk/www/latest_checker.html.incl (original) +++ cfe/trunk/www/latest_checker.html.incl Mon Mar 23 14:53:30 2009 @@ -1 +1 @@ -checker-0.178.tar.bz2 (built March 22, 2009) +checker-0.179.tar.bz2 (built March 23, 2009) From clattner at apple.com Mon Mar 23 15:01:14 2009 From: clattner at apple.com (Chris Lattner) Date: Mon, 23 Mar 2009 13:01:14 -0700 Subject: [cfe-commits] r67532 - /cfe/trunk/Driver/clang.cpp In-Reply-To: <6a8523d60903231223s2481e19eqb6f51cf11eb4e7c0@mail.gmail.com> References: <200903231624.n2NGObQG016864@zion.cs.uiuc.edu> <6a8523d60903231223s2481e19eqb6f51cf11eb4e7c0@mail.gmail.com> Message-ID: <94F46AC2-B187-42BF-8943-BCB3D122F28A@apple.com> On Mar 23, 2009, at 12:23 PM, Daniel Dunbar wrote: > This changes makes since, but out of curiosity was it necessary? The > driver should always call clang with -x. > I noticed this running "clang foo.s -E" which treated the file as a .c file instead of .S file. I believe it is not necessary when using the driver. -Chris From andersca at mac.com Mon Mar 23 15:47:44 2009 From: andersca at mac.com (Anders Carlsson) Date: Mon, 23 Mar 2009 20:47:44 -0000 Subject: [cfe-commits] r67559 - /cfe/trunk/clang.xcodeproj/project.pbxproj Message-ID: <200903232047.n2NKliW5029280@zion.cs.uiuc.edu> Author: andersca Date: Mon Mar 23 15:47:43 2009 New Revision: 67559 URL: http://llvm.org/viewvc/llvm-project?rev=67559&view=rev Log: Add SemaTypeInstantiateDecl.cpp Modified: cfe/trunk/clang.xcodeproj/project.pbxproj Modified: cfe/trunk/clang.xcodeproj/project.pbxproj URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/clang.xcodeproj/project.pbxproj?rev=67559&r1=67558&r2=67559&view=diff ============================================================================== --- cfe/trunk/clang.xcodeproj/project.pbxproj (original) +++ cfe/trunk/clang.xcodeproj/project.pbxproj Mon Mar 23 15:47:43 2009 @@ -19,6 +19,7 @@ 1A869A700BA2164C008DA07A /* LiteralSupport.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 1A869A6E0BA2164C008DA07A /* LiteralSupport.h */; }; 1A869AA80BA21ABA008DA07A /* LiteralSupport.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A869AA70BA21ABA008DA07A /* LiteralSupport.cpp */; }; 1ABC36940C7A4BDC006DB0AB /* CGBuiltin.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1ABC36930C7A4BDC006DB0AB /* CGBuiltin.cpp */; }; + 1ADF47AF0F782C3200E48A8A /* SemaTemplateInstantiateDecl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1ADF47AE0F782C3200E48A8A /* SemaTemplateInstantiateDecl.cpp */; }; 3507E4C20E27FE2D00FB7B57 /* CheckObjCInstMethSignature.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3507E4C10E27FE2D00FB7B57 /* CheckObjCInstMethSignature.cpp */; }; 351318600CD14468006B66F7 /* DeclSerialization.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3513185F0CD14468006B66F7 /* DeclSerialization.cpp */; }; 352246E70F5C6BE000D0D279 /* HTMLDiagnostics.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 352246E10F5C6BE000D0D279 /* HTMLDiagnostics.cpp */; }; @@ -313,6 +314,7 @@ 1A869A6E0BA2164C008DA07A /* LiteralSupport.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LiteralSupport.h; sourceTree = ""; }; 1A869AA70BA21ABA008DA07A /* LiteralSupport.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = LiteralSupport.cpp; sourceTree = ""; }; 1ABC36930C7A4BDC006DB0AB /* CGBuiltin.cpp */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 2; lastKnownFileType = sourcecode.cpp.cpp; name = CGBuiltin.cpp; path = lib/CodeGen/CGBuiltin.cpp; sourceTree = ""; tabWidth = 2; }; + 1ADF47AE0F782C3200E48A8A /* SemaTemplateInstantiateDecl.cpp */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 2; lastKnownFileType = sourcecode.cpp.cpp; name = SemaTemplateInstantiateDecl.cpp; path = lib/Sema/SemaTemplateInstantiateDecl.cpp; sourceTree = ""; tabWidth = 2; }; 3507E4C10E27FE2D00FB7B57 /* CheckObjCInstMethSignature.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CheckObjCInstMethSignature.cpp; path = lib/Analysis/CheckObjCInstMethSignature.cpp; sourceTree = ""; }; 3513185F0CD14468006B66F7 /* DeclSerialization.cpp */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 2; lastKnownFileType = sourcecode.cpp.cpp; name = DeclSerialization.cpp; path = lib/AST/DeclSerialization.cpp; sourceTree = ""; tabWidth = 2; }; 352028460E2C16820096ADE0 /* Analyses.def */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = Analyses.def; path = Driver/Analyses.def; sourceTree = ""; }; @@ -939,6 +941,7 @@ DE67E70C0C020ECA00F66BC5 /* SemaStmt.cpp */, 3591853E0EFB1088000039AF /* SemaTemplate.cpp */, 35544B8B0F5C803200D92AA9 /* SemaTemplateInstantiate.cpp */, + 1ADF47AE0F782C3200E48A8A /* SemaTemplateInstantiateDecl.cpp */, DE67E70A0C020EC500F66BC5 /* SemaType.cpp */, ); name = Sema; @@ -1461,6 +1464,7 @@ 35544B8C0F5C803200D92AA9 /* SemaTemplateInstantiate.cpp in Sources */, DEF1614F0F65B66B0098507F /* Warnings.cpp in Sources */, DEDFE5CF0F7206E40035BD10 /* NestedNameSpecifier.cpp in Sources */, + 1ADF47AF0F782C3200E48A8A /* SemaTemplateInstantiateDecl.cpp in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; From daniel at zuster.org Mon Mar 23 16:50:40 2009 From: daniel at zuster.org (Daniel Dunbar) Date: Mon, 23 Mar 2009 21:50:40 -0000 Subject: [cfe-commits] r67564 - /cfe/trunk/lib/Driver/OptTable.cpp Message-ID: <200903232150.n2NLoeAm032024@zion.cs.uiuc.edu> Author: ddunbar Date: Mon Mar 23 16:50:40 2009 New Revision: 67564 URL: http://llvm.org/viewvc/llvm-project?rev=67564&view=rev Log: Driver: Make argument parsing fast. On a synthetic command line consisting of almost all defined options, this drops wall time from .00494 to .00336 and user time from .00258 to .00105. On the same benchmark, clang-driver is about 15% faster than the primary gcc driver and almost twice as fast as the gcc driver driver. Modified: cfe/trunk/lib/Driver/OptTable.cpp Modified: cfe/trunk/lib/Driver/OptTable.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/OptTable.cpp?rev=67564&r1=67563&r2=67564&view=diff ============================================================================== --- cfe/trunk/lib/Driver/OptTable.cpp (original) +++ cfe/trunk/lib/Driver/OptTable.cpp Mon Mar 23 16:50:40 2009 @@ -12,6 +12,7 @@ #include "clang/Driver/Arg.h" #include "clang/Driver/ArgList.h" #include "clang/Driver/Option.h" +#include #include using namespace clang::driver; @@ -199,6 +200,14 @@ return Opt; } +// Support lower_bound between info and an option name. +static inline bool operator<(struct Info &I, const char *Name) { + return StrCmpOptionName(I.Name, Name) == -1; +} +static inline bool operator<(const char *Name, struct Info &I) { + return StrCmpOptionName(Name, I.Name) == -1; +} + Arg *OptTable::ParseOneArg(const ArgList &Args, unsigned &Index) const { unsigned Prev = Index; const char *Str = Args.getArgString(Index); @@ -207,19 +216,29 @@ if (Str[0] != '-' || Str[1] == '\0') return new PositionalArg(getOption(OPT_INPUT), Index++); - // FIXME: Make this fast. - for (unsigned j = FirstSearchableOption; j < LastOption; ++j) { - const char *OptName = getOptionName((options::ID) j); - - // Arguments are only accepted by options which prefix them. - if (memcmp(Str, OptName, strlen(OptName)) == 0) { - if (Arg *A = getOption((options::ID) j)->accept(Args, Index)) - return A; - - // Otherwise, see if this argument was missing values. - if (Prev != Index) - return 0; - } + struct Info *Start = OptionInfos + FirstSearchableOption - 1; + struct Info *End = OptionInfos + LastOption - 1; + + // Find the first option which could be a prefix. + Start = std::lower_bound(Start, End, Str); + + // Scan for first option which is a proper prefix. + for (; Start != End; ++Start) + if (memcmp(Str, Start->Name, strlen(Start->Name)) == 0) + break; + + // Look for a match until we don't have a prefix. + for (; Start != End; ++Start) { + if (memcmp(Start->Name, Str, strlen(Start->Name)) != 0) + break; + + options::ID id = (options::ID) (Start - OptionInfos + 1); + if (Arg *A = getOption(id)->accept(Args, Index)) + return A; + + // Otherwise, see if this argument was missing values. + if (Prev != Index) + return 0; } return new PositionalArg(getOption(OPT_UNKNOWN), Index++); From kremenek at apple.com Mon Mar 23 17:28:25 2009 From: kremenek at apple.com (Ted Kremenek) Date: Mon, 23 Mar 2009 22:28:25 -0000 Subject: [cfe-commits] r67569 - in /cfe/trunk: include/clang/Basic/DiagnosticParseKinds.td include/clang/Basic/DiagnosticSemaKinds.td include/clang/Parse/Action.h include/clang/Parse/Parser.h lib/Parse/ParsePragma.cpp lib/Parse/ParsePragma.h lib/Parse/Parser.cpp lib/Sema/Sema.h lib/Sema/SemaAttr.cpp test/Sema/pragma-unused.c Message-ID: <200903232228.n2NMSPZW001495@zion.cs.uiuc.edu> Author: kremenek Date: Mon Mar 23 17:28:25 2009 New Revision: 67569 URL: http://llvm.org/viewvc/llvm-project?rev=67569&view=rev Log: Implement '#pragma unused'. Added: cfe/trunk/test/Sema/pragma-unused.c Modified: cfe/trunk/include/clang/Basic/DiagnosticParseKinds.td cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.td cfe/trunk/include/clang/Parse/Action.h cfe/trunk/include/clang/Parse/Parser.h cfe/trunk/lib/Parse/ParsePragma.cpp cfe/trunk/lib/Parse/ParsePragma.h cfe/trunk/lib/Parse/Parser.cpp cfe/trunk/lib/Sema/Sema.h cfe/trunk/lib/Sema/SemaAttr.cpp Modified: cfe/trunk/include/clang/Basic/DiagnosticParseKinds.td URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/DiagnosticParseKinds.td?rev=67569&r1=67568&r2=67569&view=diff ============================================================================== --- cfe/trunk/include/clang/Basic/DiagnosticParseKinds.td (original) +++ cfe/trunk/include/clang/Basic/DiagnosticParseKinds.td Mon Mar 23 17:28:25 2009 @@ -234,16 +234,24 @@ // Language specific pragmas -// #pragma pack -def warn_pragma_pack_expected_lparen : Warning< - "missing '(' after '#pragma pack' - ignoring">; -def warn_pragma_pack_expected_rparen : Warning< - "missing ')' after '#pragma pack' - ignoring">; +// - Generic warnings +def warn_pragma_expected_lparen : Warning< + "missing '(' after '#pragma %0' - ignoring">; +def warn_pragma_expected_rparen : Warning< + "missing ')' after '#pragma %0' - ignoring">; +def warn_pragma_expected_identifier : Warning< + "expected identifier in '#pragma %0' - ignored">; +// - #pragma pack def warn_pragma_pack_invalid_action : Warning< "unknown action for '#pragma pack' - ignored">; def warn_pragma_pack_invalid_constant : Warning< "invalid constant for '#pragma pack', expected %0 - ignored">; def warn_pragma_pack_malformed : Warning< "expected integer or identifier in '#pragma pack' - ignored">; - -} +// - #pragma unused +def warn_pragma_unused_expected_var : Warning< + "expected '#pragma unused' argument to be a variable name">; +def warn_pragma_unused_expected_punc : Warning< + "expected ')' or ',' in '#pragma unused'">; + +} // end of Parser diagnostics Modified: cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.td URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.td?rev=67569&r1=67568&r2=67569&view=diff ============================================================================== --- cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.td (original) +++ cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.td Mon Mar 23 17:28:25 2009 @@ -117,6 +117,8 @@ "specifying both a name and alignment to 'pop' is undefined">; def warn_pragma_pack_pop_failed : Warning<"#pragma pack(pop, ...) failed: %0">; +def warn_pragma_unused_expected_localvar : Warning< + "only local variables can be arguments to '#pragma unused'">; /// Objective-C parser diagnostics def err_duplicate_class_def : Error< Modified: cfe/trunk/include/clang/Parse/Action.h URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Parse/Action.h?rev=67569&r1=67568&r2=67569&view=diff ============================================================================== --- cfe/trunk/include/clang/Parse/Action.h (original) +++ cfe/trunk/include/clang/Parse/Action.h Mon Mar 23 17:28:25 2009 @@ -1483,6 +1483,14 @@ SourceLocation RParenLoc) { return; } + + /// ActOnPragmaPack - Called on well formed #pragma pack(...). + virtual void ActOnPragmaUnused(ExprTy **Exprs, unsigned NumExprs, + SourceLocation PragmaLoc, + SourceLocation LParenLoc, + SourceLocation RParenLoc) { + return; + } }; /// MinimalAction - Minimal actions are used by light-weight clients of the Modified: cfe/trunk/include/clang/Parse/Parser.h URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Parse/Parser.h?rev=67569&r1=67568&r2=67569&view=diff ============================================================================== --- cfe/trunk/include/clang/Parse/Parser.h (original) +++ cfe/trunk/include/clang/Parse/Parser.h Mon Mar 23 17:28:25 2009 @@ -17,6 +17,7 @@ #include "clang/Lex/Preprocessor.h" #include "clang/Parse/Action.h" #include "clang/Parse/DeclSpec.h" +#include "llvm/ADT/OwningPtr.h" #include #include @@ -26,6 +27,7 @@ class Scope; class DiagnosticBuilder; class Parser; + class PragmaUnusedHandler; /// PrettyStackTraceParserEntry - If a crash happens while the parser is active, /// an entry is printed for it. @@ -42,6 +44,7 @@ /// been read. /// class Parser { + friend class PragmaUnusedHandler; PrettyStackTraceParserEntry CrashInfo; Preprocessor &PP; @@ -75,7 +78,8 @@ /// comparison. IdentifierInfo *Ident_super; - PragmaHandler *PackHandler; + llvm::OwningPtr PackHandler; + llvm::OwningPtr UnusedHandler; /// Whether the '>' token acts as an operator or not. This will be /// true except when we are parsing an expression within a C++ Modified: cfe/trunk/lib/Parse/ParsePragma.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Parse/ParsePragma.cpp?rev=67569&r1=67568&r2=67569&view=diff ============================================================================== --- cfe/trunk/lib/Parse/ParsePragma.cpp (original) +++ cfe/trunk/lib/Parse/ParsePragma.cpp Mon Mar 23 17:28:25 2009 @@ -15,6 +15,7 @@ #include "clang/Parse/ParseDiagnostic.h" #include "clang/Lex/Preprocessor.h" #include "clang/Parse/Action.h" +#include "clang/Parse/Parser.h" using namespace clang; // #pragma pack(...) comes in the following delicious flavors: @@ -28,7 +29,7 @@ Token Tok; PP.Lex(Tok); if (Tok.isNot(tok::l_paren)) { - PP.Diag(Tok.getLocation(), diag::warn_pragma_pack_expected_lparen); + PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_lparen) << "pack"; return; } @@ -95,7 +96,7 @@ } if (Tok.isNot(tok::r_paren)) { - PP.Diag(Tok.getLocation(), diag::warn_pragma_pack_expected_rparen); + PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_rparen) << "pack"; return; } @@ -104,3 +105,78 @@ LParenLoc, RParenLoc); } +// #pragma unused(identifier) +void PragmaUnusedHandler::HandlePragma(Preprocessor &PP, Token &UnusedTok) { + // FIXME: Should we be expanding macros here? My guess is no. + SourceLocation UnusedLoc = UnusedTok.getLocation(); + + // Lex the left '('. + Token Tok; + PP.Lex(Tok); + if (Tok.isNot(tok::l_paren)) { + PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_lparen) << "unused"; + return; + } + SourceLocation LParenLoc = Tok.getLocation(); + + // Lex the declaration reference(s). + llvm::SmallVector Ex; + SourceLocation RParenLoc; + bool LexID = true; + + while (true) { + PP.Lex(Tok); + + if (LexID) { + if (Tok.is(tok::identifier)) { + Action::OwningExprResult Name = + Actions.ActOnIdentifierExpr(parser.CurScope, Tok.getLocation(), + *Tok.getIdentifierInfo(), false); + + if (Name.isInvalid()) { + if (!Ex.empty()) + Action::MultiExprArg Release(Actions, &Ex[0], Ex.size()); + return; + } + + Ex.push_back(Name.release()); + LexID = false; + continue; + } + + // Illegal token! Release the parsed expressions (if any) and emit + // a warning. + if (!Ex.empty()) + Action::MultiExprArg Release(Actions, &Ex[0], Ex.size()); + + PP.Diag(Tok.getLocation(), diag::warn_pragma_unused_expected_var); + return; + } + + // We are execting a ')' or a ','. + if (Tok.is(tok::comma)) { + LexID = true; + continue; + } + + if (Tok.is(tok::r_paren)) { + RParenLoc = Tok.getLocation(); + break; + } + + // Illegal token! Release the parsed expressions (if any) and emit + // a warning. + if (!Ex.empty()) + Action::MultiExprArg Release(Actions, &Ex[0], Ex.size()); + + PP.Diag(Tok.getLocation(), diag::warn_pragma_unused_expected_punc); + return; + } + + // Verify that we have a location for the right parenthesis. + assert(RParenLoc.isValid() && "Valid '#pragma unused' must have ')'"); + assert(!Ex.empty() && "Valid '#pragma unused' must have arguments"); + + // Perform the action to handle the pragma. + Actions.ActOnPragmaUnused(&Ex[0], Ex.size(), UnusedLoc, LParenLoc, RParenLoc); +} Modified: cfe/trunk/lib/Parse/ParsePragma.h URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Parse/ParsePragma.h?rev=67569&r1=67568&r2=67569&view=diff ============================================================================== --- cfe/trunk/lib/Parse/ParsePragma.h (original) +++ cfe/trunk/lib/Parse/ParsePragma.h Mon Mar 23 17:28:25 2009 @@ -18,6 +18,7 @@ namespace clang { class Action; + class Parser; class PragmaPackHandler : public PragmaHandler { Action &Actions; @@ -27,6 +28,16 @@ virtual void HandlePragma(Preprocessor &PP, Token &FirstToken); }; + +class PragmaUnusedHandler : public PragmaHandler { + Action &Actions; + Parser &parser; +public: + PragmaUnusedHandler(const IdentifierInfo *N, Action &A, Parser& p) + : PragmaHandler(N), Actions(A), parser(p) {} + + virtual void HandlePragma(Preprocessor &PP, Token &FirstToken); +}; } // end namespace clang Modified: cfe/trunk/lib/Parse/Parser.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Parse/Parser.cpp?rev=67569&r1=67568&r2=67569&view=diff ============================================================================== --- cfe/trunk/lib/Parse/Parser.cpp (original) +++ cfe/trunk/lib/Parse/Parser.cpp Mon Mar 23 17:28:25 2009 @@ -31,9 +31,14 @@ // Add #pragma handlers. These are removed and destroyed in the // destructor. - PackHandler = - new PragmaPackHandler(&PP.getIdentifierTable().get("pack"), actions); - PP.AddPragmaHandler(0, PackHandler); + PackHandler.reset(new + PragmaPackHandler(&PP.getIdentifierTable().get("pack"), actions)); + PP.AddPragmaHandler(0, PackHandler.get()); + + UnusedHandler.reset(new + PragmaUnusedHandler(&PP.getIdentifierTable().get("unused"), actions, + *this)); + PP.AddPragmaHandler(0, UnusedHandler.get()); // Instantiate a LexedMethodsForTopClass for all the non-nested classes. PushTopClassStack(); @@ -282,8 +287,10 @@ delete ScopeCache[i]; // Remove the pragma handlers we installed. - PP.RemovePragmaHandler(0, PackHandler); - delete PackHandler; + PP.RemovePragmaHandler(0, PackHandler.get()); + PackHandler.reset(); + PP.RemovePragmaHandler(0, UnusedHandler.get()); + UnusedHandler.reset(); } /// Initialize - Warm up the parser. Modified: cfe/trunk/lib/Sema/Sema.h URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/Sema.h?rev=67569&r1=67568&r2=67569&view=diff ============================================================================== --- cfe/trunk/lib/Sema/Sema.h (original) +++ cfe/trunk/lib/Sema/Sema.h Mon Mar 23 17:28:25 2009 @@ -2073,6 +2073,12 @@ SourceLocation LParenLoc, SourceLocation RParenLoc); + /// ActOnPragmaUnused - Called on well-formed '#pragma unused'. + virtual void ActOnPragmaUnused(ExprTy **Exprs, unsigned NumExprs, + SourceLocation PragmaLoc, + SourceLocation LParenLoc, + SourceLocation RParenLoc); + /// getPragmaPackAlignment() - Return the current alignment as specified by /// the current #pragma pack directive, or 0 if none is currently active. unsigned getPragmaPackAlignment() const; Modified: cfe/trunk/lib/Sema/SemaAttr.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaAttr.cpp?rev=67569&r1=67568&r2=67569&view=diff ============================================================================== --- cfe/trunk/lib/Sema/SemaAttr.cpp (original) +++ cfe/trunk/lib/Sema/SemaAttr.cpp Mon Mar 23 17:28:25 2009 @@ -170,3 +170,41 @@ } } +void Sema::ActOnPragmaUnused(ExprTy **Exprs, unsigned NumExprs, + SourceLocation PragmaLoc, + SourceLocation LParenLoc, + SourceLocation RParenLoc) { + + // Verify that all of the expressions are valid before + // modifying the attributes of any referenced decl. + Expr *ErrorExpr = 0; + + for (unsigned i = 0; i < NumExprs; ++i) { + Expr *Ex = (Expr*) Exprs[i]; + if (!isa(Ex)) { + ErrorExpr = Ex; + break; + } + + Decl *d = cast(Ex)->getDecl();; + + if (!isa(d) || !cast(d)->hasLocalStorage()) { + ErrorExpr = Ex; + break; + } + } + + // Delete the expressions if we encountered any error. + if (ErrorExpr) { + Diag(ErrorExpr->getLocStart(), diag::warn_pragma_unused_expected_localvar); + for (unsigned i = 0; i < NumExprs; ++i) + ((Expr*) Exprs[i])->Destroy(Context); + return; + } + + // Otherwise, add the 'unused' attribute to each referenced declaration. + for (unsigned i = 0; i < NumExprs; ++i) { + DeclRefExpr *DR = (DeclRefExpr*) Exprs[i]; + DR->getDecl()->addAttr(::new (Context) UnusedAttr()); + } +} Added: cfe/trunk/test/Sema/pragma-unused.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Sema/pragma-unused.c?rev=67569&view=auto ============================================================================== --- cfe/trunk/test/Sema/pragma-unused.c (added) +++ cfe/trunk/test/Sema/pragma-unused.c Mon Mar 23 17:28:25 2009 @@ -0,0 +1,38 @@ +// RUN: clang -fsyntax-only -verify %s + +void f1(void) { + int x, y, z; + #pragma unused(x) + #pragma unused(y, z) + + int w; // FIXME: We should emit a warning that 'w' is unused. + #pragma unused w // expected-warning{{missing '(' after '#pragma unused' - ignoring}} +} + +void f2(void) { + int x, y; + #pragma unused(x,) // expected-warning{{expected '#pragma unused' argument to be a variable name}} + #pragma unused() // expected-warning{{expected '#pragma unused' argument to be a variable name}} +} + +void f3(void) { + #pragma unused(x) // expected-error{{use of undeclared identifier 'x'}} +} + +void f4(void) { + int w; // FIXME: We should emit a warning that 'w' is unused. + #pragma unused((w)) // expected-warning{{expected '#pragma unused' argument to be a variable name}} +} + +int k; +void f5(void) { + #pragma unused(k) // expected-warning{{only local variables can be arguments to '#pragma unused' - ignored}} +} + +void f6(void) { + int z; // no-warning + { + #pragma unused(z) // no-warning + } +} + From kremenek at apple.com Mon Mar 23 17:30:59 2009 From: kremenek at apple.com (Ted Kremenek) Date: Mon, 23 Mar 2009 22:30:59 -0000 Subject: [cfe-commits] r67570 - /cfe/trunk/test/Analysis/dead-stores.c Message-ID: <200903232230.n2NMUxD1001664@zion.cs.uiuc.edu> Author: kremenek Date: Mon Mar 23 17:30:58 2009 New Revision: 67570 URL: http://llvm.org/viewvc/llvm-project?rev=67570&view=rev Log: A test case to test that -warn-dead-stores does not emit a warning for stores to variables marked with '#pragma unused'. Modified: cfe/trunk/test/Analysis/dead-stores.c Modified: cfe/trunk/test/Analysis/dead-stores.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis/dead-stores.c?rev=67570&r1=67569&r2=67570&view=diff ============================================================================== --- cfe/trunk/test/Analysis/dead-stores.c (original) +++ cfe/trunk/test/Analysis/dead-stores.c Mon Mar 23 17:30:58 2009 @@ -167,3 +167,9 @@ x = 1; return x; } + +void f20(void) { + int x = 1; // no-warning +#pragma unused(x) +} + From kremenek at apple.com Mon Mar 23 17:32:52 2009 From: kremenek at apple.com (Ted Kremenek) Date: Mon, 23 Mar 2009 22:32:52 -0000 Subject: [cfe-commits] r67572 - /cfe/tags/checker/checker-0.180/ Message-ID: <200903232232.n2NMWq3L001811@zion.cs.uiuc.edu> Author: kremenek Date: Mon Mar 23 17:32:51 2009 New Revision: 67572 URL: http://llvm.org/viewvc/llvm-project?rev=67572&view=rev Log: Tagging checker-0.180. Added: cfe/tags/checker/checker-0.180/ - copied from r67571, cfe/trunk/ From dgregor at apple.com Mon Mar 23 17:42:58 2009 From: dgregor at apple.com (Douglas Gregor) Date: Mon, 23 Mar 2009 15:42:58 -0700 Subject: [cfe-commits] r67569 - in /cfe/trunk: include/clang/Basic/DiagnosticParseKinds.td include/clang/Basic/DiagnosticSemaKinds.td include/clang/Parse/Action.h include/clang/Parse/Parser.h lib/Parse/ParsePragma.cpp lib/Parse/ParsePragma.h lib/Parse/Parser.cpp lib/Sema/Sema.h lib/Sema/SemaAttr.cpp test/Sema/pragma-unused.c In-Reply-To: <200903232228.n2NMSPZW001495@zion.cs.uiuc.edu> References: <200903232228.n2NMSPZW001495@zion.cs.uiuc.edu> Message-ID: <026F6206-4FED-4DA4-B8A8-7DB9E3F2CC4F@apple.com> On Mar 23, 2009, at 3:28 PM, Ted Kremenek wrote: > Author: kremenek > Date: Mon Mar 23 17:28:25 2009 > New Revision: 67569 > > URL: http://llvm.org/viewvc/llvm-project?rev=67569&view=rev > Log: > Implement '#pragma unused'. Cool. Some comments below. > Modified: cfe/trunk/include/clang/Parse/Action.h > URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Parse/Action.h?rev=67569&r1=67568&r2=67569&view=diff > > = > = > = > = > = > = > = > = > ====================================================================== > --- cfe/trunk/include/clang/Parse/Action.h (original) > +++ cfe/trunk/include/clang/Parse/Action.h Mon Mar 23 17:28:25 2009 > @@ -1483,6 +1483,14 @@ > SourceLocation RParenLoc) { > return; > } > + > + /// ActOnPragmaPack - Called on well formed #pragma pack(...). > + virtual void ActOnPragmaUnused(ExprTy **Exprs, unsigned NumExprs, > + SourceLocation PragmaLoc, > + SourceLocation LParenLoc, > + SourceLocation RParenLoc) { > + return; > + } The comment here refers to #pragma pack, not #pragma unused. > +// #pragma unused(identifier) > +void PragmaUnusedHandler::HandlePragma(Preprocessor &PP, Token > &UnusedTok) { > + // FIXME: Should we be expanding macros here? My guess is no. > + SourceLocation UnusedLoc = UnusedTok.getLocation(); > + > + // Lex the left '('. > + Token Tok; > + PP.Lex(Tok); > + if (Tok.isNot(tok::l_paren)) { > + PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_lparen) > << "unused"; > + return; > + } > + SourceLocation LParenLoc = Tok.getLocation(); > + > + // Lex the declaration reference(s). > + llvm::SmallVector Ex; > + SourceLocation RParenLoc; > + bool LexID = true; > + > + while (true) { > + PP.Lex(Tok); > + > + if (LexID) { > + if (Tok.is(tok::identifier)) { > + Action::OwningExprResult Name = > + Actions.ActOnIdentifierExpr(parser.CurScope, > Tok.getLocation(), > + *Tok.getIdentifierInfo(), > false); > + > + if (Name.isInvalid()) { > + if (!Ex.empty()) > + Action::MultiExprArg Release(Actions, &Ex[0], Ex.size()); > + return; > + } > + > + Ex.push_back(Name.release()); > + LexID = false; > + continue; > + } > + > + // Illegal token! Release the parsed expressions (if any) and > emit > + // a warning. > + if (!Ex.empty()) > + Action::MultiExprArg Release(Actions, &Ex[0], Ex.size()); > + > + PP.Diag(Tok.getLocation(), > diag::warn_pragma_unused_expected_var); > + return; > + } > + > + // We are execting a ')' or a ','. > + if (Tok.is(tok::comma)) { > + LexID = true; > + continue; > + } > + > + if (Tok.is(tok::r_paren)) { > + RParenLoc = Tok.getLocation(); > + break; > + } > + > + // Illegal token! Release the parsed expressions (if any) and > emit > + // a warning. > + if (!Ex.empty()) > + Action::MultiExprArg Release(Actions, &Ex[0], Ex.size()); > + > + PP.Diag(Tok.getLocation(), > diag::warn_pragma_unused_expected_punc); > + return; > + } > + > + // Verify that we have a location for the right parenthesis. > + assert(RParenLoc.isValid() && "Valid '#pragma unused' must have > ')'"); > + assert(!Ex.empty() && "Valid '#pragma unused' must have > arguments"); > + > + // Perform the action to handle the pragma. > + Actions.ActOnPragmaUnused(&Ex[0], Ex.size(), UnusedLoc, > LParenLoc, RParenLoc); > +} We're going through some extra work here. For each name, we call ActOnIdentifierExpr to build a DeclRefExpr, then we have to reverse- engineer the DeclRefExpr in ActOnPragmaUnused. Perhaps it would be easier to pass arrays of identifiers and locations into ActOnPragmaUnused, and skip the interim representation as a DeclRefExpr? ActOnPragmaUnused will, of course, need to receive the scope so that it can perform lookup for those identifiers. > Modified: cfe/trunk/lib/Sema/SemaAttr.cpp > URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaAttr.cpp?rev=67569&r1=67568&r2=67569&view=diff > > = > = > = > = > = > = > = > = > ====================================================================== > --- cfe/trunk/lib/Sema/SemaAttr.cpp (original) > +++ cfe/trunk/lib/Sema/SemaAttr.cpp Mon Mar 23 17:28:25 2009 > @@ -170,3 +170,41 @@ > } > } > > +void Sema::ActOnPragmaUnused(ExprTy **Exprs, unsigned NumExprs, > + SourceLocation PragmaLoc, > + SourceLocation LParenLoc, > + SourceLocation RParenLoc) { > + > + // Verify that all of the expressions are valid before > + // modifying the attributes of any referenced decl. > + Expr *ErrorExpr = 0; > + > + for (unsigned i = 0; i < NumExprs; ++i) { > + Expr *Ex = (Expr*) Exprs[i]; > + if (!isa(Ex)) { > + ErrorExpr = Ex; > + break; > + } > + > + Decl *d = cast(Ex)->getDecl();; > + > + if (!isa(d) || !cast(d)->hasLocalStorage()) { > + ErrorExpr = Ex; > + break; > + } > + } > + > + // Delete the expressions if we encountered any error. > + if (ErrorExpr) { > + Diag(ErrorExpr->getLocStart(), > diag::warn_pragma_unused_expected_localvar); > + for (unsigned i = 0; i < NumExprs; ++i) > + ((Expr*) Exprs[i])->Destroy(Context); > + return; > + } > + > + // Otherwise, add the 'unused' attribute to each referenced > declaration. > + for (unsigned i = 0; i < NumExprs; ++i) { > + DeclRefExpr *DR = (DeclRefExpr*) Exprs[i]; > + DR->getDecl()->addAttr(::new (Context) UnusedAttr()); > + } > +} Much of this code could be simplified if we just performed the lookup of these variables here. Also, aren't we leaking the DeclRefExprs in the case where the #pragma unused is well-formed? - Doug From kremenek at apple.com Mon Mar 23 17:50:47 2009 From: kremenek at apple.com (Ted Kremenek) Date: Mon, 23 Mar 2009 22:50:47 -0000 Subject: [cfe-commits] r67573 - /cfe/trunk/lib/Sema/SemaAttr.cpp Message-ID: <200903232250.n2NMolbr002689@zion.cs.uiuc.edu> Author: kremenek Date: Mon Mar 23 17:50:47 2009 New Revision: 67573 URL: http://llvm.org/viewvc/llvm-project?rev=67573&view=rev Log: Deallocate 'DeclRefExpr's in correctly formed '#pragma unused' Modified: cfe/trunk/lib/Sema/SemaAttr.cpp Modified: cfe/trunk/lib/Sema/SemaAttr.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaAttr.cpp?rev=67573&r1=67572&r2=67573&view=diff ============================================================================== --- cfe/trunk/lib/Sema/SemaAttr.cpp (original) +++ cfe/trunk/lib/Sema/SemaAttr.cpp Mon Mar 23 17:50:47 2009 @@ -206,5 +206,6 @@ for (unsigned i = 0; i < NumExprs; ++i) { DeclRefExpr *DR = (DeclRefExpr*) Exprs[i]; DR->getDecl()->addAttr(::new (Context) UnusedAttr()); + DR->Destroy(Context); } } From kremenek at apple.com Mon Mar 23 18:00:16 2009 From: kremenek at apple.com (Ted Kremenek) Date: Mon, 23 Mar 2009 16:00:16 -0700 Subject: [cfe-commits] r67569 - in /cfe/trunk: include/clang/Basic/DiagnosticParseKinds.td include/clang/Basic/DiagnosticSemaKinds.td include/clang/Parse/Action.h include/clang/Parse/Parser.h lib/Parse/ParsePragma.cpp lib/Parse/ParsePragma.h lib/Parse/Parser.cpp lib/Sema/Sema.h lib/Sema/SemaAttr.cpp test/Sema/pragma-unused.c In-Reply-To: <026F6206-4FED-4DA4-B8A8-7DB9E3F2CC4F@apple.com> References: <200903232228.n2NMSPZW001495@zion.cs.uiuc.edu> <026F6206-4FED-4DA4-B8A8-7DB9E3F2CC4F@apple.com> Message-ID: <2683AF94-7730-4D13-B082-EBB37D0B9C03@apple.com> Thanks Doug. Your suggested fixes would definitely improve the code. I'll go ahead and implement them. On Mar 23, 2009, at 3:42 PM, Douglas Gregor wrote: > > On Mar 23, 2009, at 3:28 PM, Ted Kremenek wrote: > >> Author: kremenek >> Date: Mon Mar 23 17:28:25 2009 >> New Revision: 67569 >> >> URL: http://llvm.org/viewvc/llvm-project?rev=67569&view=rev >> Log: >> Implement '#pragma unused'. > > Cool. Some comments below. > >> Modified: cfe/trunk/include/clang/Parse/Action.h >> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Parse/Action.h?rev=67569&r1=67568&r2=67569&view=diff >> >> = >> = >> = >> = >> = >> = >> = >> = >> = >> ===================================================================== >> --- cfe/trunk/include/clang/Parse/Action.h (original) >> +++ cfe/trunk/include/clang/Parse/Action.h Mon Mar 23 17:28:25 2009 >> @@ -1483,6 +1483,14 @@ >> SourceLocation RParenLoc) { >> return; >> } >> + >> + /// ActOnPragmaPack - Called on well formed #pragma pack(...). >> + virtual void ActOnPragmaUnused(ExprTy **Exprs, unsigned NumExprs, >> + SourceLocation PragmaLoc, >> + SourceLocation LParenLoc, >> + SourceLocation RParenLoc) { >> + return; >> + } > > The comment here refers to #pragma pack, not #pragma unused. > > >> +// #pragma unused(identifier) >> +void PragmaUnusedHandler::HandlePragma(Preprocessor &PP, Token >> &UnusedTok) { >> + // FIXME: Should we be expanding macros here? My guess is no. >> + SourceLocation UnusedLoc = UnusedTok.getLocation(); >> + >> + // Lex the left '('. >> + Token Tok; >> + PP.Lex(Tok); >> + if (Tok.isNot(tok::l_paren)) { >> + PP.Diag(Tok.getLocation(), diag::warn_pragma_expected_lparen) >> << "unused"; >> + return; >> + } >> + SourceLocation LParenLoc = Tok.getLocation(); >> + >> + // Lex the declaration reference(s). >> + llvm::SmallVector Ex; >> + SourceLocation RParenLoc; >> + bool LexID = true; >> + >> + while (true) { >> + PP.Lex(Tok); >> + >> + if (LexID) { >> + if (Tok.is(tok::identifier)) { >> + Action::OwningExprResult Name = >> + Actions.ActOnIdentifierExpr(parser.CurScope, >> Tok.getLocation(), >> + *Tok.getIdentifierInfo(), >> false); >> + >> + if (Name.isInvalid()) { >> + if (!Ex.empty()) >> + Action::MultiExprArg Release(Actions, &Ex[0], >> Ex.size()); >> + return; >> + } >> + >> + Ex.push_back(Name.release()); >> + LexID = false; >> + continue; >> + } >> + >> + // Illegal token! Release the parsed expressions (if any) >> and emit >> + // a warning. >> + if (!Ex.empty()) >> + Action::MultiExprArg Release(Actions, &Ex[0], Ex.size()); >> + >> + PP.Diag(Tok.getLocation(), >> diag::warn_pragma_unused_expected_var); >> + return; >> + } >> + >> + // We are execting a ')' or a ','. >> + if (Tok.is(tok::comma)) { >> + LexID = true; >> + continue; >> + } >> + >> + if (Tok.is(tok::r_paren)) { >> + RParenLoc = Tok.getLocation(); >> + break; >> + } >> + >> + // Illegal token! Release the parsed expressions (if any) and >> emit >> + // a warning. >> + if (!Ex.empty()) >> + Action::MultiExprArg Release(Actions, &Ex[0], Ex.size()); >> + >> + PP.Diag(Tok.getLocation(), >> diag::warn_pragma_unused_expected_punc); >> + return; >> + } >> + >> + // Verify that we have a location for the right parenthesis. >> + assert(RParenLoc.isValid() && "Valid '#pragma unused' must have >> ')'"); >> + assert(!Ex.empty() && "Valid '#pragma unused' must have >> arguments"); >> + >> + // Perform the action to handle the pragma. >> + Actions.ActOnPragmaUnused(&Ex[0], Ex.size(), UnusedLoc, >> LParenLoc, RParenLoc); >> +} > > We're going through some extra work here. For each name, we call > ActOnIdentifierExpr to build a DeclRefExpr, then we have to reverse- > engineer the DeclRefExpr in ActOnPragmaUnused. Perhaps it would be > easier to pass arrays of identifiers and locations into > ActOnPragmaUnused, and skip the interim representation as a > DeclRefExpr? ActOnPragmaUnused will, of course, need to receive the > scope so that it can perform lookup for those identifiers. > > >> Modified: cfe/trunk/lib/Sema/SemaAttr.cpp >> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaAttr.cpp?rev=67569&r1=67568&r2=67569&view=diff >> >> = >> = >> = >> = >> = >> = >> = >> = >> = >> ===================================================================== >> --- cfe/trunk/lib/Sema/SemaAttr.cpp (original) >> +++ cfe/trunk/lib/Sema/SemaAttr.cpp Mon Mar 23 17:28:25 2009 >> @@ -170,3 +170,41 @@ >> } >> } >> >> +void Sema::ActOnPragmaUnused(ExprTy **Exprs, unsigned NumExprs, >> + SourceLocation PragmaLoc, >> + SourceLocation LParenLoc, >> + SourceLocation RParenLoc) { >> + >> + // Verify that all of the expressions are valid before >> + // modifying the attributes of any referenced decl. >> + Expr *ErrorExpr = 0; >> + >> + for (unsigned i = 0; i < NumExprs; ++i) { >> + Expr *Ex = (Expr*) Exprs[i]; >> + if (!isa(Ex)) { >> + ErrorExpr = Ex; >> + break; >> + } >> + >> + Decl *d = cast(Ex)->getDecl();; >> + >> + if (!isa(d) || !cast(d)->hasLocalStorage()) { >> + ErrorExpr = Ex; >> + break; >> + } >> + } >> + >> + // Delete the expressions if we encountered any error. >> + if (ErrorExpr) { >> + Diag(ErrorExpr->getLocStart(), >> diag::warn_pragma_unused_expected_localvar); >> + for (unsigned i = 0; i < NumExprs; ++i) >> + ((Expr*) Exprs[i])->Destroy(Context); >> + return; >> + } >> + >> + // Otherwise, add the 'unused' attribute to each referenced >> declaration. >> + for (unsigned i = 0; i < NumExprs; ++i) { >> + DeclRefExpr *DR = (DeclRefExpr*) Exprs[i]; >> + DR->getDecl()->addAttr(::new (Context) UnusedAttr()); >> + } >> +} > > Much of this code could be simplified if we just performed the > lookup of these variables here. Also, aren't we leaking the > DeclRefExprs in the case where the #pragma unused is well-formed? > > - Doug From dgregor at apple.com Mon Mar 23 18:06:20 2009 From: dgregor at apple.com (Douglas Gregor) Date: Mon, 23 Mar 2009 23:06:20 -0000 Subject: [cfe-commits] r67575 - in /cfe/trunk: lib/Sema/Sema.h lib/Sema/SemaDecl.cpp lib/Sema/SemaTemplateInstantiateDecl.cpp lib/Sema/SemaType.cpp test/SemaCXX/nested-name-spec.cpp test/SemaTemplate/instantiate-method.cpp Message-ID: <200903232306.n2NN6KtA003712@zion.cs.uiuc.edu> Author: dgregor Date: Mon Mar 23 18:06:20 2009 New Revision: 67575 URL: http://llvm.org/viewvc/llvm-project?rev=67575&view=rev Log: Template instantiation for the declarations of member functions within a class template. At present, we can only instantiation normal methods, but not constructors, destructors, or conversion operators. As ever, this contains a bit of refactoring in Sema's type-checking. In particular: - Split ActOnFunctionDeclarator into ActOnFunctionDeclarator (handling the declarator itself) and CheckFunctionDeclaration (checking for the the function declaration), the latter of which is also used by template instantiation. - We were performing the adjustment of function parameter types in three places; collect those into a single new routine. - When the type of a parameter is adjusted, allocate an OriginalParmVarDecl to keep track of the type as it was written. - Eliminate a redundant check for out-of-line declarations of member functions; hide more C++-specific checks on function declarations behind if(getLangOptions().CPlusPlus). Added: cfe/trunk/test/SemaTemplate/instantiate-method.cpp Modified: cfe/trunk/lib/Sema/Sema.h cfe/trunk/lib/Sema/SemaDecl.cpp cfe/trunk/lib/Sema/SemaTemplateInstantiateDecl.cpp cfe/trunk/lib/Sema/SemaType.cpp cfe/trunk/test/SemaCXX/nested-name-spec.cpp Modified: cfe/trunk/lib/Sema/Sema.h URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/Sema.h?rev=67575&r1=67574&r2=67575&view=diff ============================================================================== --- cfe/trunk/lib/Sema/Sema.h (original) +++ cfe/trunk/lib/Sema/Sema.h Mon Mar 23 18:06:20 2009 @@ -290,6 +290,7 @@ //===--------------------------------------------------------------------===// // Type Analysis / Processing: SemaType.cpp. // + QualType adjustParameterType(QualType T); QualType ConvertDeclSpecToType(const DeclSpec &DS); void ProcessTypeAttributeList(QualType &Result, const AttributeList *AL); QualType BuildPointerType(QualType T, unsigned Quals, @@ -349,6 +350,9 @@ NamedDecl* PrevDecl, bool IsFunctionDefinition, bool& InvalidDecl, bool &Redeclaration); + bool CheckFunctionDeclaration(FunctionDecl *NewFD, NamedDecl *&PrevDecl, + bool &Redeclaration, + bool &OverloadableAttrRequired); virtual DeclTy *ActOnParamDeclarator(Scope *S, Declarator &D); virtual void ActOnParamDefaultArgument(DeclTy *param, SourceLocation EqualLoc, Modified: cfe/trunk/lib/Sema/SemaDecl.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaDecl.cpp?rev=67575&r1=67574&r2=67575&view=diff ============================================================================== --- cfe/trunk/lib/Sema/SemaDecl.cpp (original) +++ cfe/trunk/lib/Sema/SemaDecl.cpp Mon Mar 23 18:06:20 2009 @@ -1437,7 +1437,7 @@ // If there was a previous declaration of this variable, it may be // in our identifier chain. Update the identifier chain with the new // declaration. - if (IdResolver.ReplaceDecl(PrevDecl, ND)) { + if (S && IdResolver.ReplaceDecl(PrevDecl, ND)) { // The previous declaration was found on the identifer resolver // chain, so remove it from its scope. while (S && !S->isDeclScope(PrevDecl)) @@ -2034,23 +2034,6 @@ NewFD->setParams(Context, &Params[0], Params.size()); } } - - if (CXXConstructorDecl *Constructor = dyn_cast(NewFD)) - InvalidDecl = InvalidDecl || CheckConstructor(Constructor); - else if (isa(NewFD)) { - CXXRecordDecl *Record = cast(NewFD->getParent()); - Record->setUserDeclaredDestructor(true); - // C++ [class]p4: A POD-struct is an aggregate class that has [...] no - // user-defined destructor. - Record->setPOD(false); - } else if (CXXConversionDecl *Conversion = - dyn_cast(NewFD)) - ActOnConversionDeclarator(Conversion); - - // Extra checking for C++ overloaded operators (C++ [over.oper]). - if (NewFD->isOverloadedOperator() && - CheckOverloadedOperatorDeclaration(NewFD)) - NewFD->setInvalidDecl(); // If name lookup finds a previous declaration that is not in the // same scope as the new declaration, this may still be an @@ -2060,19 +2043,130 @@ isOutOfScopePreviousDeclaration(PrevDecl, DC, Context))) PrevDecl = 0; + // Perform semantic checking on the function declaration. + bool OverloadableAttrRequired = false; // FIXME: HACK! + if (CheckFunctionDeclaration(NewFD, PrevDecl, Redeclaration, + /*FIXME:*/OverloadableAttrRequired)) + InvalidDecl = true; + + if (D.getCXXScopeSpec().isSet() && !InvalidDecl) { + // An out-of-line member function declaration must also be a + // definition (C++ [dcl.meaning]p1). + if (!IsFunctionDefinition) { + Diag(NewFD->getLocation(), diag::err_out_of_line_declaration) + << D.getCXXScopeSpec().getRange(); + InvalidDecl = true; + } else if (!Redeclaration) { + // The user tried to provide an out-of-line definition for a + // function that is a member of a class or namespace, but there + // was no such member function declared (C++ [class.mfct]p2, + // C++ [namespace.memdef]p2). For example: + // + // class X { + // void f() const; + // }; + // + // void X::f() { } // ill-formed + // + // Complain about this problem, and attempt to suggest close + // matches (e.g., those that differ only in cv-qualifiers and + // whether the parameter types are references). + Diag(D.getIdentifierLoc(), diag::err_member_def_does_not_match) + << cast(DC) << D.getCXXScopeSpec().getRange(); + InvalidDecl = true; + + LookupResult Prev = LookupQualifiedName(DC, Name, LookupOrdinaryName, + true); + assert(!Prev.isAmbiguous() && + "Cannot have an ambiguity in previous-declaration lookup"); + for (LookupResult::iterator Func = Prev.begin(), FuncEnd = Prev.end(); + Func != FuncEnd; ++Func) { + if (isa(*Func) && + isNearlyMatchingFunction(Context, cast(*Func), NewFD)) + Diag((*Func)->getLocation(), diag::note_member_def_close_match); + } + + PrevDecl = 0; + } + } + + // Handle attributes. We need to have merged decls when handling attributes + // (for example to check for conflicts, etc). + // FIXME: This needs to happen before we merge declarations. Then, + // let attribute merging cope with attribute conflicts. + ProcessDeclAttributes(NewFD, D); + AddKnownFunctionAttributes(NewFD); + + if (OverloadableAttrRequired && !NewFD->getAttr()) { + // If a function name is overloadable in C, then every function + // with that name must be marked "overloadable". + Diag(NewFD->getLocation(), diag::err_attribute_overloadable_missing) + << Redeclaration << NewFD; + if (PrevDecl) + Diag(PrevDecl->getLocation(), + diag::note_attribute_overloadable_prev_overload); + NewFD->addAttr(::new (Context) OverloadableAttr()); + } + + // If this is a locally-scoped extern C function, update the + // map of such names. + if (CurContext->isFunctionOrMethod() && NewFD->isExternC(Context) + && !InvalidDecl) + RegisterLocallyScopedExternCDecl(NewFD, PrevDecl, S); + + return NewFD; +} + +/// \brief Perform semantic checking of a new function declaration. +/// +/// Performs semantic analysis of the new function declaration +/// NewFD. This routine performs all semantic checking that does not +/// require the actual declarator involved in the declaration, and is +/// used both for the declaration of functions as they are parsed +/// (called via ActOnDeclarator) and for the declaration of functions +/// that have been instantiated via C++ template instantiation (called +/// via InstantiateDecl). +/// +/// \returns true if there was an error, false otherwise. +bool Sema::CheckFunctionDeclaration(FunctionDecl *NewFD, NamedDecl *&PrevDecl, + bool &Redeclaration, + bool &OverloadableAttrRequired) { + bool InvalidDecl = false; + + // Semantic checking for this function declaration (in isolation). + if (getLangOptions().CPlusPlus) { + // C++-specific checks. + if (CXXConstructorDecl *Constructor = dyn_cast(NewFD)) + InvalidDecl = InvalidDecl || CheckConstructor(Constructor); + else if (isa(NewFD)) { + CXXRecordDecl *Record = cast(NewFD->getParent()); + Record->setUserDeclaredDestructor(true); + // C++ [class]p4: A POD-struct is an aggregate class that has [...] no + // user-defined destructor. + Record->setPOD(false); + } else if (CXXConversionDecl *Conversion + = dyn_cast(NewFD)) + ActOnConversionDeclarator(Conversion); + + // Extra checking for C++ overloaded operators (C++ [over.oper]). + if (NewFD->isOverloadedOperator() && + CheckOverloadedOperatorDeclaration(NewFD)) + InvalidDecl = true; + } + + // Check for a previous declaration of this name. if (!PrevDecl && NewFD->isExternC(Context)) { // Since we did not find anything by this name and we're declaring // an extern "C" function, look for a non-visible extern "C" // declaration with the same name. llvm::DenseMap::iterator Pos - = LocallyScopedExternalDecls.find(Name); + = LocallyScopedExternalDecls.find(NewFD->getDeclName()); if (Pos != LocallyScopedExternalDecls.end()) PrevDecl = Pos->second; } // Merge or overload the declaration with an existing declaration of // the same name, if appropriate. - bool OverloadableAttrRequired = false; if (PrevDecl) { // Determine whether NewFD is an overload of PrevDecl or // a declaration that requires merging. If it's an overload, @@ -2086,15 +2180,16 @@ // Functions marked "overloadable" must have a prototype (that // we can't get through declaration merging). - if (!R->getAsFunctionProtoType()) { + if (!NewFD->getType()->getAsFunctionProtoType()) { Diag(NewFD->getLocation(), diag::err_attribute_overloadable_no_prototype) << NewFD; InvalidDecl = true; Redeclaration = true; // Turn this into a variadic function with no parameters. - R = Context.getFunctionType(R->getAsFunctionType()->getResultType(), - 0, 0, true, 0); + QualType R = Context.getFunctionType( + NewFD->getType()->getAsFunctionType()->getResultType(), + 0, 0, true, 0); NewFD->setType(R); } } @@ -2110,99 +2205,24 @@ if (isa(PrevDecl)) OldDecl = *MatchedDecl; - // NewFD and PrevDecl represent declarations that need to be + // NewFD and OldDecl represent declarations that need to be // merged. if (MergeFunctionDecl(NewFD, OldDecl)) InvalidDecl = true; - if (!InvalidDecl) { + if (!InvalidDecl) NewFD->setPreviousDeclaration(cast(OldDecl)); - - // An out-of-line member function declaration must also be a - // definition (C++ [dcl.meaning]p1). - if (!IsFunctionDefinition && D.getCXXScopeSpec().isSet() && - !InvalidDecl) { - Diag(NewFD->getLocation(), diag::err_out_of_line_declaration) - << D.getCXXScopeSpec().getRange(); - NewFD->setInvalidDecl(); - } - } - } - } - - if (D.getCXXScopeSpec().isSet() && - (!PrevDecl || !Redeclaration)) { - // The user tried to provide an out-of-line definition for a - // function that is a member of a class or namespace, but there - // was no such member function declared (C++ [class.mfct]p2, - // C++ [namespace.memdef]p2). For example: - // - // class X { - // void f() const; - // }; - // - // void X::f() { } // ill-formed - // - // Complain about this problem, and attempt to suggest close - // matches (e.g., those that differ only in cv-qualifiers and - // whether the parameter types are references). - Diag(D.getIdentifierLoc(), diag::err_member_def_does_not_match) - << cast(DC) << D.getCXXScopeSpec().getRange(); - InvalidDecl = true; - - LookupResult Prev = LookupQualifiedName(DC, Name, LookupOrdinaryName, - true); - assert(!Prev.isAmbiguous() && - "Cannot have an ambiguity in previous-declaration lookup"); - for (LookupResult::iterator Func = Prev.begin(), FuncEnd = Prev.end(); - Func != FuncEnd; ++Func) { - if (isa(*Func) && - isNearlyMatchingFunction(Context, cast(*Func), NewFD)) - Diag((*Func)->getLocation(), diag::note_member_def_close_match); } - - PrevDecl = 0; } - // Handle attributes. We need to have merged decls when handling attributes - // (for example to check for conflicts, etc). - ProcessDeclAttributes(NewFD, D); - AddKnownFunctionAttributes(NewFD); - - if (OverloadableAttrRequired && !NewFD->getAttr()) { - // If a function name is overloadable in C, then every function - // with that name must be marked "overloadable". - Diag(NewFD->getLocation(), diag::err_attribute_overloadable_missing) - << Redeclaration << NewFD; - if (PrevDecl) - Diag(PrevDecl->getLocation(), - diag::note_attribute_overloadable_prev_overload); - NewFD->addAttr(::new (Context) OverloadableAttr()); - } - - if (getLangOptions().CPlusPlus) { + if (getLangOptions().CPlusPlus && !CurContext->isRecord()) { // In C++, check default arguments now that we have merged decls. Unless // the lexical context is the class, because in this case this is done // during delayed parsing anyway. - if (!CurContext->isRecord()) - CheckCXXDefaultArguments(NewFD); - - // An out-of-line member function declaration must also be a - // definition (C++ [dcl.meaning]p1). - if (!IsFunctionDefinition && D.getCXXScopeSpec().isSet() && !InvalidDecl) { - Diag(NewFD->getLocation(), diag::err_out_of_line_declaration) - << D.getCXXScopeSpec().getRange(); - InvalidDecl = true; - } + CheckCXXDefaultArguments(NewFD); } - // If this is a locally-scoped extern C function, update the - // map of such names. - if (CurContext->isFunctionOrMethod() && NewFD->isExternC(Context) - && !InvalidDecl) - RegisterLocallyScopedExternCDecl(NewFD, PrevDecl, S); - - return NewFD; + return InvalidDecl || NewFD->isInvalidDecl(); } bool Sema::CheckForConstantInitializer(Expr *Init, QualType DclT) { @@ -2588,40 +2608,24 @@ } } - // Perform the default function/array conversion (C99 6.7.5.3p[7,8]). - // Doing the promotion here has a win and a loss. The win is the type for - // both Decl's and DeclRefExpr's will match (a convenient invariant for the - // code generator). The loss is the orginal type isn't preserved. For example: - // - // void func(int parmvardecl[5]) { // convert "int [5]" to "int *" - // int blockvardecl[5]; - // sizeof(parmvardecl); // size == 4 - // sizeof(blockvardecl); // size == 20 - // } - // - // For expressions, all implicit conversions are captured using the - // ImplicitCastExpr AST node (we have no such mechanism for Decl's). - // - // FIXME: If a source translation tool needs to see the original type, then - // we need to consider storing both types (in ParmVarDecl)... - // - // Parameters can not be abstract class types. if (RequireNonAbstractType(D.getIdentifierLoc(), parmDeclType, diag::err_abstract_type_in_decl, 1 /* parameter type */)) D.setInvalidType(true); + + QualType T = adjustParameterType(parmDeclType); - if (parmDeclType->isArrayType()) { - // int x[restrict 4] -> int *restrict - parmDeclType = Context.getArrayDecayedType(parmDeclType); - } else if (parmDeclType->isFunctionType()) - parmDeclType = Context.getPointerType(parmDeclType); - - ParmVarDecl *New = ParmVarDecl::Create(Context, CurContext, - D.getIdentifierLoc(), II, - parmDeclType, StorageClass, - 0); + ParmVarDecl *New; + if (T == parmDeclType) // parameter type did not need adjustment + New = ParmVarDecl::Create(Context, CurContext, + D.getIdentifierLoc(), II, + parmDeclType, StorageClass, + 0); + else // keep track of both the adjusted and unadjusted types + New = OriginalParmVarDecl::Create(Context, CurContext, + D.getIdentifierLoc(), II, T, + parmDeclType, StorageClass, 0); if (D.getInvalidType()) New->setInvalidDecl(); @@ -2634,7 +2638,7 @@ } // Parameter declarators cannot be interface types. All ObjC objects are // passed by reference. - if (parmDeclType->isObjCInterfaceType()) { + if (T->isObjCInterfaceType()) { Diag(D.getIdentifierLoc(), diag::err_object_cannot_be_by_value) << "passed"; New->setInvalidDecl(); Modified: cfe/trunk/lib/Sema/SemaTemplateInstantiateDecl.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaTemplateInstantiateDecl.cpp?rev=67575&r1=67574&r2=67575&view=diff ============================================================================== --- cfe/trunk/lib/Sema/SemaTemplateInstantiateDecl.cpp (original) +++ cfe/trunk/lib/Sema/SemaTemplateInstantiateDecl.cpp Mon Mar 23 18:06:20 2009 @@ -43,6 +43,9 @@ Decl *VisitFieldDecl(FieldDecl *D); Decl *VisitStaticAssertDecl(StaticAssertDecl *D); Decl *VisitEnumDecl(EnumDecl *D); + Decl *VisitCXXMethodDecl(CXXMethodDecl *D); + Decl *VisitParmVarDecl(ParmVarDecl *D); + Decl *VisitOriginalParmVarDecl(OriginalParmVarDecl *D); // Base case. FIXME: Remove once we can instantiate everything. Decl *VisitDecl(Decl *) { @@ -192,6 +195,121 @@ return Enum; } +Decl *TemplateDeclInstantiator::VisitCXXMethodDecl(CXXMethodDecl *D) { + // Only handle actual methods; we'll deal with constructors, + // destructors, etc. separately. + if (D->getKind() != Decl::CXXMethod) + return 0; + + QualType T = SemaRef.InstantiateType(D->getType(), TemplateArgs, + NumTemplateArgs, D->getLocation(), + D->getDeclName()); + if (T.isNull()) + return 0; + + // Build the instantiated method declaration. + CXXRecordDecl *Record = cast(Owner); + CXXMethodDecl *Method + = CXXMethodDecl::Create(SemaRef.Context, Record, D->getLocation(), + D->getDeclName(), T, D->isStatic(), + D->isInline()); + Method->setAccess(D->getAccess()); + // FIXME: Duplicates some logic in ActOnFunctionDeclarator. + if (D->isVirtual()) { + Method->setVirtual(); + Record->setAggregate(false); + Record->setPOD(false); + Record->setPolymorphic(true); + } + if (D->isDeleted()) + Method->setDeleted(); + if (D->isPure()) { + Method->setPure(); + Record->setAbstract(true); + } + // FIXME: attributes + // FIXME: Method needs a pointer referencing where it came from. + + // Instantiate the function parameters + { + TemplateDeclInstantiator ParamInstantiator(SemaRef, Method, + TemplateArgs, NumTemplateArgs); + llvm::SmallVector Params; + for (FunctionDecl::param_iterator P = Method->param_begin(), + PEnd = Method->param_end(); + P != PEnd; ++P) { + if (ParmVarDecl *PInst = (ParmVarDecl *)ParamInstantiator.Visit(*P)) + Params.push_back(PInst); + else + Method->setInvalidDecl(); + } + } + + NamedDecl *PrevDecl + = SemaRef.LookupQualifiedName(Owner, Method->getDeclName(), + Sema::LookupOrdinaryName, true); + // In C++, the previous declaration we find might be a tag type + // (class or enum). In this case, the new declaration will hide the + // tag type. Note that this does does not apply if we're declaring a + // typedef (C++ [dcl.typedef]p4). + if (PrevDecl && PrevDecl->getIdentifierNamespace() == Decl::IDNS_Tag) + PrevDecl = 0; + bool Redeclaration = false; + bool OverloadableAttrRequired = false; + if (SemaRef.CheckFunctionDeclaration(Method, PrevDecl, Redeclaration, + /*FIXME:*/OverloadableAttrRequired)) + Method->setInvalidDecl(); + + if (!Method->isInvalidDecl() || !PrevDecl) + Owner->addDecl(Method); + return Method; +} + +Decl *TemplateDeclInstantiator::VisitParmVarDecl(ParmVarDecl *D) { + QualType OrigT = SemaRef.InstantiateType(D->getOriginalType(), TemplateArgs, + NumTemplateArgs, D->getLocation(), + D->getDeclName()); + if (OrigT.isNull()) + return 0; + + QualType T = SemaRef.adjustParameterType(OrigT); + + if (D->getDefaultArg()) { + // FIXME: Leave a marker for "uninstantiated" default + // arguments. They only get instantiated on demand at the call + // site. + unsigned DiagID = SemaRef.Diags.getCustomDiagID(Diagnostic::Warning, + "sorry, dropping default argument during template instantiation"); + SemaRef.Diag(D->getDefaultArg()->getSourceRange().getBegin(), DiagID) + << D->getDefaultArg()->getSourceRange(); + } + + // Allocate the parameter + ParmVarDecl *Param = 0; + if (T == OrigT) + Param = ParmVarDecl::Create(SemaRef.Context, Owner, D->getLocation(), + D->getIdentifier(), T, D->getStorageClass(), + 0); + else + Param = OriginalParmVarDecl::Create(SemaRef.Context, Owner, + D->getLocation(), D->getIdentifier(), + T, OrigT, D->getStorageClass(), 0); + + // Note: we don't try to instantiate function parameters until after + // we've instantiated the function's type. Therefore, we don't have + // to check for 'void' parameter types here. + return Param; +} + +Decl * +TemplateDeclInstantiator::VisitOriginalParmVarDecl(OriginalParmVarDecl *D) { + // Since parameter types can decay either before or after + // instantiation, we simply treat OriginalParmVarDecls as + // ParmVarDecls the same way, and create one or the other depending + // on what happens after template instantiation. + return VisitParmVarDecl(D); +} + Decl *Sema::InstantiateDecl(Decl *D, DeclContext *Owner, const TemplateArgument *TemplateArgs, unsigned NumTemplateArgs) { Modified: cfe/trunk/lib/Sema/SemaType.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaType.cpp?rev=67575&r1=67574&r2=67575&view=diff ============================================================================== --- cfe/trunk/lib/Sema/SemaType.cpp (original) +++ cfe/trunk/lib/Sema/SemaType.cpp Mon Mar 23 18:06:20 2009 @@ -19,6 +19,30 @@ #include "clang/Parse/DeclSpec.h" using namespace clang; +/// \brief Perform adjustment on the parameter type of a function. +/// +/// This routine adjusts the given parameter type @p T to the actual +/// parameter type used by semantic analysis (C99 6.7.5.3p[7,8], +/// C++ [dcl.fct]p3). The adjusted parameter type is returned. +QualType Sema::adjustParameterType(QualType T) { + // C99 6.7.5.3p7: + if (T->isArrayType()) { + // C99 6.7.5.3p7: + // A declaration of a parameter as "array of type" shall be + // adjusted to "qualified pointer to type", where the type + // qualifiers (if any) are those specified within the [ and ] of + // the array type derivation. + return Context.getArrayDecayedType(T); + } else if (T->isFunctionType()) + // C99 6.7.5.3p8: + // A declaration of a parameter as "function returning type" + // shall be adjusted to "pointer to function returning type", as + // in 6.3.2.1. + return Context.getPointerType(T); + + return T; +} + /// \brief Convert the specified declspec to the appropriate type /// object. /// \param DS the declaration specifiers @@ -523,12 +547,8 @@ bool Invalid = false; for (unsigned Idx = 0; Idx < NumParamTypes; ++Idx) { - QualType ParamType = ParamTypes[Idx]; - if (ParamType->isArrayType()) - ParamType = Context.getArrayDecayedType(ParamType); - else if (ParamType->isFunctionType()) - ParamType = Context.getPointerType(ParamType); - else if (ParamType->isVoidType()) { + QualType ParamType = adjustParameterType(ParamTypes[Idx]); + if (ParamType->isVoidType()) { Diag(Loc, diag::err_param_with_void_type); Invalid = true; } @@ -683,29 +703,14 @@ ParmVarDecl *Param = (ParmVarDecl *)FTI.ArgInfo[i].Param; QualType ArgTy = Param->getType(); assert(!ArgTy.isNull() && "Couldn't parse type?"); - // - // Perform the default function/array conversion (C99 6.7.5.3p[7,8]). - // This matches the conversion that is done in - // Sema::ActOnParamDeclarator(). Without this conversion, the - // argument type in the function prototype *will not* match the - // type in ParmVarDecl (which makes the code generator unhappy). - // - // FIXME: We still apparently need the conversion in - // Sema::ActOnParamDeclarator(). This doesn't make any sense, since - // it should be driving off the type being created here. - // - // FIXME: If a source translation tool needs to see the original type, - // then we need to consider storing both types somewhere... - // - if (ArgTy->isArrayType()) { - ArgTy = Context.getArrayDecayedType(ArgTy); - } else if (ArgTy->isFunctionType()) - ArgTy = Context.getPointerType(ArgTy); - + + // Adjust the parameter type. + ArgTy = adjustParameterType(ArgTy); + // Look for 'void'. void is allowed only as a single argument to a // function with no other parameters (C99 6.7.5.3p10). We record // int(void) as a FunctionProtoType with an empty argument list. - else if (ArgTy->isVoidType()) { + if (ArgTy->isVoidType()) { // If this is something like 'float(int, void)', reject it. 'void' // is an incomplete type (C99 6.2.5p19) and function decls cannot // have arguments of incomplete type. Modified: cfe/trunk/test/SemaCXX/nested-name-spec.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaCXX/nested-name-spec.cpp?rev=67575&r1=67574&r2=67575&view=diff ============================================================================== --- cfe/trunk/test/SemaCXX/nested-name-spec.cpp (original) +++ cfe/trunk/test/SemaCXX/nested-name-spec.cpp Mon Mar 23 18:06:20 2009 @@ -101,8 +101,7 @@ int A2::RC::x; // expected-error{{non-static data member defined out-of-line}} -void A2::CC::NC::m(); // expected-error{{out-of-line declaration of a member must be a definition}} \ - // expected-error{{out-of-line declaration of a member must be a definition}} +void A2::CC::NC::m(); // expected-error{{out-of-line declaration of a member must be a definition}} namespace E { Added: cfe/trunk/test/SemaTemplate/instantiate-method.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaTemplate/instantiate-method.cpp?rev=67575&view=auto ============================================================================== --- cfe/trunk/test/SemaTemplate/instantiate-method.cpp (added) +++ cfe/trunk/test/SemaTemplate/instantiate-method.cpp Mon Mar 23 18:06:20 2009 @@ -0,0 +1,43 @@ +// RUN: clang -fsyntax-only -verify %s + +template +class X { +public: + void f(T); // expected-error{{argument may not have 'void' type}} + // FIXME: source location isn't very good, because we're + // instantiating the type. Could we do better? + void g(T*); + + static int h(T, T); // expected-error 2{{argument may not have 'void' type}} +}; + +int identity(int x) { return x; } + +void test(X *xi, int *ip, X *xf) { + xi->f(17); + xi->g(ip); + xf->f(&identity); + xf->g(identity); + X::h(17, 25); + X::h(identity, &identity); +} + +void test_bad() { + X xv; // expected-note{{in instantiation of template class 'class X' requested here}} +} + +template +class Overloading { +public: + int& f(T, T); // expected-note{{previous declaration is here}} + float& f(T, U); // expected-error{{functions that differ only in their return type cannot be overloaded}} +}; + +void test_ovl(Overloading *oil, int i, long l) { + int &ir = oil->f(i, i); + float &fr = oil->f(i, l); +} + +void test_ovl_bad() { + Overloading off; // expected-note{{in instantiation of template class 'class Overloading' requested here}} +} From dgregor at apple.com Mon Mar 23 18:17:01 2009 From: dgregor at apple.com (Douglas Gregor) Date: Mon, 23 Mar 2009 23:17:01 -0000 Subject: [cfe-commits] r67576 - /cfe/trunk/lib/Sema/SemaType.cpp Message-ID: <200903232317.n2NNH19r004372@zion.cs.uiuc.edu> Author: dgregor Date: Mon Mar 23 18:17:00 2009 New Revision: 67576 URL: http://llvm.org/viewvc/llvm-project?rev=67576&view=rev Log: Another use of adjustParameterType. Plus, GetTypeForDeclarator will always get ParmVarDecls with already-adjusted types. Assert it. Thanks, Anders! Modified: cfe/trunk/lib/Sema/SemaType.cpp Modified: cfe/trunk/lib/Sema/SemaType.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaType.cpp?rev=67576&r1=67575&r2=67576&view=diff ============================================================================== --- cfe/trunk/lib/Sema/SemaType.cpp (original) +++ cfe/trunk/lib/Sema/SemaType.cpp Mon Mar 23 18:17:00 2009 @@ -705,7 +705,7 @@ assert(!ArgTy.isNull() && "Couldn't parse type?"); // Adjust the parameter type. - ArgTy = adjustParameterType(ArgTy); + assert((ArgTy == adjustParameterType(ArgTy)) && "Unadjusted type?"); // Look for 'void'. void is allowed only as a single argument to a // function with no other parameters (C99 6.7.5.3p10). We record @@ -860,13 +860,7 @@ E = MDecl->param_end(); PI != E; ++PI) { QualType ArgTy = (*PI)->getType(); assert(!ArgTy.isNull() && "Couldn't parse type?"); - // Perform the default function/array conversion (C99 6.7.5.3p[7,8]). - // This matches the conversion that is done in - // Sema::ActOnParamDeclarator(). - if (ArgTy->isArrayType()) - ArgTy = Context.getArrayDecayedType(ArgTy); - else if (ArgTy->isFunctionType()) - ArgTy = Context.getPointerType(ArgTy); + ArgTy = adjustParameterType(ArgTy); ArgTys.push_back(ArgTy); } T = Context.getFunctionType(T, &ArgTys[0], ArgTys.size(), From eli.friedman at gmail.com Mon Mar 23 18:26:24 2009 From: eli.friedman at gmail.com (Eli Friedman) Date: Mon, 23 Mar 2009 23:26:24 -0000 Subject: [cfe-commits] r67577 - /cfe/trunk/lib/CodeGen/CGCall.cpp Message-ID: <200903232326.n2NNQOrR004982@zion.cs.uiuc.edu> Author: efriedma Date: Mon Mar 23 18:26:24 2009 New Revision: 67577 URL: http://llvm.org/viewvc/llvm-project?rev=67577&view=rev Log: Fix the ABI convention for struct returns on x86 outside of Darwin. Modified: cfe/trunk/lib/CodeGen/CGCall.cpp Modified: cfe/trunk/lib/CodeGen/CGCall.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGCall.cpp?rev=67577&r1=67576&r2=67577&view=diff ============================================================================== --- cfe/trunk/lib/CodeGen/CGCall.cpp (original) +++ cfe/trunk/lib/CodeGen/CGCall.cpp Mon Mar 23 18:26:24 2009 @@ -251,6 +251,8 @@ /// X86_32ABIInfo - The X86-32 ABI information. class X86_32ABIInfo : public ABIInfo { + bool IsDarwin; + public: ABIArgInfo classifyReturnType(QualType RetTy, ASTContext &Context) const; @@ -267,6 +269,8 @@ virtual llvm::Value *EmitVAArg(llvm::Value *VAListAddr, QualType Ty, CodeGenFunction &CGF) const; + + X86_32ABIInfo(bool d) : ABIInfo(), IsDarwin(d) {} }; } @@ -275,6 +279,9 @@ if (RetTy->isVoidType()) { return ABIArgInfo::getIgnore(); } else if (CodeGenFunction::hasAggregateLLVMType(RetTy)) { + // Outside of Darwin, structs and unions are always indirect. + if (!IsDarwin && !RetTy->isAnyComplexType()) + return ABIArgInfo::getIndirect(0); // Classify "single element" structs as their element type. const FieldDecl *SeltFD = isSingleElementStruct(RetTy); if (SeltFD) { @@ -1183,9 +1190,10 @@ // to free it. const char *TargetPrefix = getContext().Target.getTargetPrefix(); if (strcmp(TargetPrefix, "x86") == 0) { + bool IsDarwin = strstr(getContext().Target.getTargetTriple(), "darwin"); switch (getContext().Target.getPointerWidth(0)) { case 32: - return *(TheABIInfo = new X86_32ABIInfo()); + return *(TheABIInfo = new X86_32ABIInfo(IsDarwin)); case 64: return *(TheABIInfo = new X86_64ABIInfo()); } From dgregor at apple.com Mon Mar 23 19:15:49 2009 From: dgregor at apple.com (Douglas Gregor) Date: Tue, 24 Mar 2009 00:15:49 -0000 Subject: [cfe-commits] r67579 - in /cfe/trunk: lib/Sema/SemaTemplateInstantiateDecl.cpp test/SemaTemplate/instantiate-method.cpp Message-ID: <200903240015.n2O0FnhL006856@zion.cs.uiuc.edu> Author: dgregor Date: Mon Mar 23 19:15:49 2009 New Revision: 67579 URL: http://llvm.org/viewvc/llvm-project?rev=67579&view=rev Log: Template instantiation for destructors. This is somewhat repetitive; eliminating the duplication is next on the list. Modified: cfe/trunk/lib/Sema/SemaTemplateInstantiateDecl.cpp cfe/trunk/test/SemaTemplate/instantiate-method.cpp Modified: cfe/trunk/lib/Sema/SemaTemplateInstantiateDecl.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaTemplateInstantiateDecl.cpp?rev=67579&r1=67578&r2=67579&view=diff ============================================================================== --- cfe/trunk/lib/Sema/SemaTemplateInstantiateDecl.cpp (original) +++ cfe/trunk/lib/Sema/SemaTemplateInstantiateDecl.cpp Mon Mar 23 19:15:49 2009 @@ -44,9 +44,9 @@ Decl *VisitStaticAssertDecl(StaticAssertDecl *D); Decl *VisitEnumDecl(EnumDecl *D); Decl *VisitCXXMethodDecl(CXXMethodDecl *D); + Decl *VisitCXXDestructorDecl(CXXDestructorDecl *D); Decl *VisitParmVarDecl(ParmVarDecl *D); Decl *VisitOriginalParmVarDecl(OriginalParmVarDecl *D); - // Base case. FIXME: Remove once we can instantiate everything. Decl *VisitDecl(Decl *) { return 0; @@ -265,6 +265,48 @@ return Method; } +Decl *TemplateDeclInstantiator::VisitCXXDestructorDecl(CXXDestructorDecl *D) { + QualType T = SemaRef.InstantiateType(D->getType(), TemplateArgs, + NumTemplateArgs, D->getLocation(), + D->getDeclName()); + if (T.isNull()) + return 0; + + // Build the instantiated destructor declaration. + CXXRecordDecl *Record = cast(Owner); + QualType ClassTy = SemaRef.Context.getTypeDeclType(Record); + CXXDestructorDecl *Destructor + = CXXDestructorDecl::Create(SemaRef.Context, Record, + D->getLocation(), + SemaRef.Context.DeclarationNames.getCXXDestructorName(ClassTy), + T, D->isInline(), false); + + Destructor->setAccess(D->getAccess()); + // FIXME: Duplicates some logic in ActOnFunctionDeclarator, + // VisitCXXDestructorDecl. + if (D->isVirtual()) { + Destructor->setVirtual(); + Record->setAggregate(false); + Record->setPOD(false); + Record->setPolymorphic(true); + } + if (D->isDeleted()) + Destructor->setDeleted(); + if (D->isPure()) { + Destructor->setPure(); + Record->setAbstract(true); + } + + bool Redeclaration = false; + bool OverloadableAttrRequired = false; + NamedDecl *PrevDecl = 0; + if (SemaRef.CheckFunctionDeclaration(Destructor, PrevDecl, Redeclaration, + /*FIXME:*/OverloadableAttrRequired)) + Destructor->setInvalidDecl(); + Owner->addDecl(Destructor); + return Destructor; +} + Decl *TemplateDeclInstantiator::VisitParmVarDecl(ParmVarDecl *D) { QualType OrigT = SemaRef.InstantiateType(D->getOriginalType(), TemplateArgs, NumTemplateArgs, D->getLocation(), Modified: cfe/trunk/test/SemaTemplate/instantiate-method.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaTemplate/instantiate-method.cpp?rev=67579&r1=67578&r2=67579&view=diff ============================================================================== --- cfe/trunk/test/SemaTemplate/instantiate-method.cpp (original) +++ cfe/trunk/test/SemaTemplate/instantiate-method.cpp Mon Mar 23 19:15:49 2009 @@ -1,5 +1,4 @@ // RUN: clang -fsyntax-only -verify %s - template class X { public: @@ -41,3 +40,12 @@ void test_ovl_bad() { Overloading off; // expected-note{{in instantiation of template class 'class Overloading' requested here}} } + +template +class HasDestructor { + virtual ~HasDestructor() = 0; +}; + +int i = sizeof(HasDestructor); // FIXME: forces instantiation, but + // the code below should probably instantiate by itself. +int abstract_destructor[__is_abstract(HasDestructor)? 1 : -1]; From daniel at zuster.org Mon Mar 23 19:20:13 2009 From: daniel at zuster.org (Daniel Dunbar) Date: Tue, 24 Mar 2009 00:20:13 -0000 Subject: [cfe-commits] r67581 - in /cfe/trunk: include/clang/Driver/Options.def tools/ccc/ccclib/Arguments.py Message-ID: <200903240020.n2O0KDcL007027@zion.cs.uiuc.edu> Author: ddunbar Date: Mon Mar 23 19:20:13 2009 New Revision: 67581 URL: http://llvm.org/viewvc/llvm-project?rev=67581&view=rev Log: ccc/Driver: -r option doesn't take an argument. Modified: cfe/trunk/include/clang/Driver/Options.def cfe/trunk/tools/ccc/ccclib/Arguments.py Modified: cfe/trunk/include/clang/Driver/Options.def URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Driver/Options.def?rev=67581&r1=67580&r2=67581&view=diff ============================================================================== --- cfe/trunk/include/clang/Driver/Options.def (original) +++ cfe/trunk/include/clang/Driver/Options.def Mon Mar 23 19:20:13 2009 @@ -517,7 +517,7 @@ OPTION("-p", p, Flag, INVALID, INVALID, "", 0) OPTION("-read_only_relocs", read__only__relocs, Separate, INVALID, INVALID, "", 0) OPTION("-remap", remap, Flag, INVALID, INVALID, "", 0) -OPTION("-r", r, JoinedOrSeparate, INVALID, INVALID, "", 0) +OPTION("-r", r, Flag, INVALID, INVALID, "", 0) OPTION("-save-temps", save_temps, Flag, INVALID, INVALID, "d", 0) OPTION("-sectalign", sectalign, MultiArg, INVALID, INVALID, "", 3) OPTION("-sectcreate", sectcreate, MultiArg, INVALID, INVALID, "", 3) Modified: cfe/trunk/tools/ccc/ccclib/Arguments.py URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/ccc/ccclib/Arguments.py?rev=67581&r1=67580&r2=67581&view=diff ============================================================================== --- cfe/trunk/tools/ccc/ccclib/Arguments.py (original) +++ cfe/trunk/tools/ccc/ccclib/Arguments.py Mon Mar 23 19:20:13 2009 @@ -714,7 +714,7 @@ self.emitLLVMOption = self.addOption(FlagOption('-emit-llvm')) self.eOption = self.addOption(JoinedOrSeparateOption('-e')) - self.rOption = self.addOption(JoinedOrSeparateOption('-r')) + self.rOption = self.addOption(FlagOption('-r')) self.pgOption = self.addOption(FlagOption('-pg')) self.pOption = self.addOption(FlagOption('-p')) From mrs at apple.com Mon Mar 23 19:23:02 2009 From: mrs at apple.com (Mike Stump) Date: Tue, 24 Mar 2009 00:23:02 -0000 Subject: [cfe-commits] r67582 - /cfe/tags/Apple/clang/Makefile Message-ID: <200903240023.n2O0N2Rw007125@zion.cs.uiuc.edu> Author: mrs Date: Mon Mar 23 19:23:01 2009 New Revision: 67582 URL: http://llvm.org/viewvc/llvm-project?rev=67582&view=rev Log: Add debug information. Modified: cfe/tags/Apple/clang/Makefile Modified: cfe/tags/Apple/clang/Makefile URL: http://llvm.org/viewvc/llvm-project/cfe/tags/Apple/clang/Makefile?rev=67582&r1=67581&r2=67582&view=diff ============================================================================== --- cfe/tags/Apple/clang/Makefile (original) +++ cfe/tags/Apple/clang/Makefile Mon Mar 23 19:23:01 2009 @@ -8,7 +8,8 @@ ToolType = Commands Install_Prefix = /Developer/usr Extra_Configure_Flags = --enable-targets=x86 \ - --enable-optimized --disable-assertions --disable-doxygen \ + --enable-optimized --disable-assertions \ + --with-extra-options=-g --disable-doxygen \ $(HOST_TARGET_FLAGS) Extra_CC_Flags = -mdynamic-no-pic GnuAfterInstall = post-install install-plist From daniel at zuster.org Mon Mar 23 19:24:37 2009 From: daniel at zuster.org (Daniel Dunbar) Date: Tue, 24 Mar 2009 00:24:37 -0000 Subject: [cfe-commits] r67583 - /cfe/trunk/lib/Driver/Tools.cpp Message-ID: <200903240024.n2O0Obh8007193@zion.cs.uiuc.edu> Author: ddunbar Date: Mon Mar 23 19:24:37 2009 New Revision: 67583 URL: http://llvm.org/viewvc/llvm-project?rev=67583&view=rev Log: Driver: lipo wasn't being called correctly (translation failure from ccc due to the different way we handle output arguments). Modified: cfe/trunk/lib/Driver/Tools.cpp Modified: cfe/trunk/lib/Driver/Tools.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Tools.cpp?rev=67583&r1=67582&r2=67583&view=diff ============================================================================== --- cfe/trunk/lib/Driver/Tools.cpp (original) +++ cfe/trunk/lib/Driver/Tools.cpp Mon Mar 23 19:24:37 2009 @@ -495,7 +495,10 @@ CmdArgs.push_back("-create"); assert(Output.isFilename() && "Unexpected lipo output."); + + CmdArgs.push_back("-output"); CmdArgs.push_back(Output.getFilename()); + for (InputInfoList::const_iterator it = Inputs.begin(), ie = Inputs.end(); it != ie; ++it) { const InputInfo &II = *it; From kremenek at apple.com Mon Mar 23 19:35:59 2009 From: kremenek at apple.com (Ted Kremenek) Date: Tue, 24 Mar 2009 00:35:59 -0000 Subject: [cfe-commits] r67584 - /cfe/trunk/www/latest_checker.html.incl Message-ID: <200903240035.n2O0ZxsE007601@zion.cs.uiuc.edu> Author: kremenek Date: Mon Mar 23 19:35:59 2009 New Revision: 67584 URL: http://llvm.org/viewvc/llvm-project?rev=67584&view=rev Log: Update checker build. Modified: cfe/trunk/www/latest_checker.html.incl Modified: cfe/trunk/www/latest_checker.html.incl URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/www/latest_checker.html.incl?rev=67584&r1=67583&r2=67584&view=diff ============================================================================== --- cfe/trunk/www/latest_checker.html.incl (original) +++ cfe/trunk/www/latest_checker.html.incl Mon Mar 23 19:35:59 2009 @@ -1 +1 @@ -checker-0.179.tar.bz2 (built March 23, 2009) +checker-0.180.tar.bz2 (built March 23, 2009) From dgregor at apple.com Mon Mar 23 19:38:23 2009 From: dgregor at apple.com (Douglas Gregor) Date: Tue, 24 Mar 2009 00:38:23 -0000 Subject: [cfe-commits] r67585 - in /cfe/trunk: lib/Sema/SemaTemplateInstantiateDecl.cpp test/SemaTemplate/instantiate-method.cpp Message-ID: <200903240038.n2O0cNnE007699@zion.cs.uiuc.edu> Author: dgregor Date: Mon Mar 23 19:38:23 2009 New Revision: 67585 URL: http://llvm.org/viewvc/llvm-project?rev=67585&view=rev Log: Cleanup template instantiation for methods, destructors Modified: cfe/trunk/lib/Sema/SemaTemplateInstantiateDecl.cpp cfe/trunk/test/SemaTemplate/instantiate-method.cpp Modified: cfe/trunk/lib/Sema/SemaTemplateInstantiateDecl.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaTemplateInstantiateDecl.cpp?rev=67585&r1=67584&r2=67585&view=diff ============================================================================== --- cfe/trunk/lib/Sema/SemaTemplateInstantiateDecl.cpp (original) +++ cfe/trunk/lib/Sema/SemaTemplateInstantiateDecl.cpp Mon Mar 23 19:38:23 2009 @@ -47,10 +47,16 @@ Decl *VisitCXXDestructorDecl(CXXDestructorDecl *D); Decl *VisitParmVarDecl(ParmVarDecl *D); Decl *VisitOriginalParmVarDecl(OriginalParmVarDecl *D); + // Base case. FIXME: Remove once we can instantiate everything. Decl *VisitDecl(Decl *) { return 0; } + + // Helper functions for instantiating methods. + QualType InstantiateFunctionType(FunctionDecl *D, + llvm::SmallVectorImpl &Params); + bool InitMethodInstantiation(CXXMethodDecl *New, CXXMethodDecl *Tmpl); }; } @@ -201,9 +207,8 @@ if (D->getKind() != Decl::CXXMethod) return 0; - QualType T = SemaRef.InstantiateType(D->getType(), TemplateArgs, - NumTemplateArgs, D->getLocation(), - D->getDeclName()); + llvm::SmallVector Params; + QualType T = InstantiateFunctionType(D, Params); if (T.isNull()) return 0; @@ -213,37 +218,14 @@ = CXXMethodDecl::Create(SemaRef.Context, Record, D->getLocation(), D->getDeclName(), T, D->isStatic(), D->isInline()); - Method->setAccess(D->getAccess()); - // FIXME: Duplicates some logic in ActOnFunctionDeclarator. - if (D->isVirtual()) { - Method->setVirtual(); - Record->setAggregate(false); - Record->setPOD(false); - Record->setPolymorphic(true); - } - if (D->isDeleted()) - Method->setDeleted(); - if (D->isPure()) { - Method->setPure(); - Record->setAbstract(true); - } - // FIXME: attributes - // FIXME: Method needs a pointer referencing where it came from. - // Instantiate the function parameters - { - TemplateDeclInstantiator ParamInstantiator(SemaRef, Method, - TemplateArgs, NumTemplateArgs); - llvm::SmallVector Params; - for (FunctionDecl::param_iterator P = Method->param_begin(), - PEnd = Method->param_end(); - P != PEnd; ++P) { - if (ParmVarDecl *PInst = (ParmVarDecl *)ParamInstantiator.Visit(*P)) - Params.push_back(PInst); - else - Method->setInvalidDecl(); - } - } + // Attach the parameters + for (unsigned P = 0; P < Params.size(); ++P) + Params[P]->setOwningFunction(Method); + Method->setParams(SemaRef.Context, &Params[0], Params.size()); + + if (InitMethodInstantiation(Method, D)) + Method->setInvalidDecl(); NamedDecl *PrevDecl = SemaRef.LookupQualifiedName(Owner, Method->getDeclName(), @@ -266,12 +248,12 @@ } Decl *TemplateDeclInstantiator::VisitCXXDestructorDecl(CXXDestructorDecl *D) { - QualType T = SemaRef.InstantiateType(D->getType(), TemplateArgs, - NumTemplateArgs, D->getLocation(), - D->getDeclName()); + llvm::SmallVector Params; + QualType T = InstantiateFunctionType(D, Params); if (T.isNull()) return 0; - + assert(Params.size() == 0 && "Destructor with parameters?"); + // Build the instantiated destructor declaration. CXXRecordDecl *Record = cast(Owner); QualType ClassTy = SemaRef.Context.getTypeDeclType(Record); @@ -280,22 +262,8 @@ D->getLocation(), SemaRef.Context.DeclarationNames.getCXXDestructorName(ClassTy), T, D->isInline(), false); - - Destructor->setAccess(D->getAccess()); - // FIXME: Duplicates some logic in ActOnFunctionDeclarator, - // VisitCXXDestructorDecl. - if (D->isVirtual()) { - Destructor->setVirtual(); - Record->setAggregate(false); - Record->setPOD(false); - Record->setPolymorphic(true); - } - if (D->isDeleted()) - Destructor->setDeleted(); - if (D->isPure()) { - Destructor->setPure(); - Record->setAbstract(true); - } + if (InitMethodInstantiation(Destructor, D)) + Destructor->setInvalidDecl(); bool Redeclaration = false; bool OverloadableAttrRequired = false; @@ -360,3 +328,89 @@ return Instantiator.Visit(D); } +/// \brief Instantiates the type of the given function, including +/// instantiating all of the function parameters. +/// +/// \param D The function that we will be instantiated +/// +/// \param Params the instantiated parameter declarations + +/// \returns the instantiated function's type if successfull, a NULL +/// type if there was an error. +QualType +TemplateDeclInstantiator::InstantiateFunctionType(FunctionDecl *D, + llvm::SmallVectorImpl &Params) { + bool InvalidDecl = false; + + // Instantiate the function parameters + TemplateDeclInstantiator ParamInstantiator(SemaRef, 0, + TemplateArgs, NumTemplateArgs); + llvm::SmallVector ParamTys; + for (FunctionDecl::param_iterator P = D->param_begin(), + PEnd = D->param_end(); + P != PEnd; ++P) { + if (ParmVarDecl *PInst = (ParmVarDecl *)ParamInstantiator.Visit(*P)) { + if (PInst->getType()->isVoidType()) { + SemaRef.Diag(PInst->getLocation(), diag::err_param_with_void_type); + PInst->setInvalidDecl(); + } + else if (SemaRef.RequireNonAbstractType(PInst->getLocation(), + PInst->getType(), + diag::err_abstract_type_in_decl, + 1 /* parameter type */)) + PInst->setInvalidDecl(); + + Params.push_back(PInst); + ParamTys.push_back(PInst->getType()); + + if (PInst->isInvalidDecl()) + InvalidDecl = true; + } else + InvalidDecl = true; + } + + // FIXME: Deallocate dead declarations. + if (InvalidDecl) + return QualType(); + + const FunctionProtoType *Proto = D->getType()->getAsFunctionProtoType(); + assert(Proto && "Missing prototype?"); + QualType ResultType + = SemaRef.InstantiateType(Proto->getResultType(), + TemplateArgs, NumTemplateArgs, + D->getLocation(), D->getDeclName()); + if (ResultType.isNull()) + return QualType(); + + return SemaRef.BuildFunctionType(ResultType, &ParamTys[0], ParamTys.size(), + Proto->isVariadic(), Proto->getTypeQuals(), + D->getLocation(), D->getDeclName()); +} + +/// \brief Initializes common fields of an instantiated method +/// declaration (New) from the corresponding fields of its template +/// (Tmpl). +/// +/// \returns true if there was an error +bool +TemplateDeclInstantiator::InitMethodInstantiation(CXXMethodDecl *New, + CXXMethodDecl *Tmpl) { + CXXRecordDecl *Record = cast(Owner); + New->setAccess(Tmpl->getAccess()); + if (Tmpl->isVirtual()) { + New->setVirtual(); + Record->setAggregate(false); + Record->setPOD(false); + Record->setPolymorphic(true); + } + if (Tmpl->isDeleted()) + New->setDeleted(); + if (Tmpl->isPure()) { + New->setPure(); + Record->setAbstract(true); + } + + // FIXME: attributes + // FIXME: New needs a pointer to Tmpl + return false; +} Modified: cfe/trunk/test/SemaTemplate/instantiate-method.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaTemplate/instantiate-method.cpp?rev=67585&r1=67584&r2=67585&view=diff ============================================================================== --- cfe/trunk/test/SemaTemplate/instantiate-method.cpp (original) +++ cfe/trunk/test/SemaTemplate/instantiate-method.cpp Mon Mar 23 19:38:23 2009 @@ -2,9 +2,7 @@ template class X { public: - void f(T); // expected-error{{argument may not have 'void' type}} - // FIXME: source location isn't very good, because we're - // instantiating the type. Could we do better? + void f(T x); // expected-error{{argument may not have 'void' type}} void g(T*); static int h(T, T); // expected-error 2{{argument may not have 'void' type}} From daniel at zuster.org Mon Mar 23 20:06:18 2009 From: daniel at zuster.org (Daniel Dunbar) Date: Tue, 24 Mar 2009 01:06:18 -0000 Subject: [cfe-commits] r67590 - /cfe/trunk/tools/ccc/ccclib/ToolChain.py Message-ID: <200903240106.n2O16IsY008893@zion.cs.uiuc.edu> Author: ddunbar Date: Mon Mar 23 20:06:18 2009 New Revision: 67590 URL: http://llvm.org/viewvc/llvm-project?rev=67590&view=rev Log: ccc: Have generic GCC tool chain search the driver directory for executables (e.g., clang). - This matches the clang-driver behavior. Modified: cfe/trunk/tools/ccc/ccclib/ToolChain.py Modified: cfe/trunk/tools/ccc/ccclib/ToolChain.py URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/ccc/ccclib/ToolChain.py?rev=67590&r1=67589&r2=67590&view=diff ============================================================================== --- cfe/trunk/tools/ccc/ccclib/ToolChain.py (original) +++ cfe/trunk/tools/ccc/ccclib/ToolChain.py Mon Mar 23 20:06:18 2009 @@ -262,6 +262,7 @@ Phases.AssemblePhase : Tools.GCC_AssembleTool(self), Phases.LinkPhase : Tools.GCC_LinkTool(self), } + self.programPathPrefixes.append(self.driver.driverDir) def selectTool(self, action): assert isinstance(action, Phases.JobAction) From eli.friedman at gmail.com Mon Mar 23 20:11:18 2009 From: eli.friedman at gmail.com (Eli Friedman) Date: Tue, 24 Mar 2009 01:11:18 -0000 Subject: [cfe-commits] r67592 - in /cfe/trunk/test: CodeGen/x86_32-arguments.c Sema/implicit-builtin-decl.c Message-ID: <200903240111.n2O1BIxw009225@zion.cs.uiuc.edu> Author: efriedma Date: Mon Mar 23 20:11:18 2009 New Revision: 67592 URL: http://llvm.org/viewvc/llvm-project?rev=67592&view=rev Log: Fix a couple of tests. Modified: cfe/trunk/test/CodeGen/x86_32-arguments.c cfe/trunk/test/Sema/implicit-builtin-decl.c Modified: cfe/trunk/test/CodeGen/x86_32-arguments.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/x86_32-arguments.c?rev=67592&r1=67591&r2=67592&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/x86_32-arguments.c (original) +++ cfe/trunk/test/CodeGen/x86_32-arguments.c Mon Mar 23 20:11:18 2009 @@ -1,4 +1,4 @@ -// RUN: clang -triple i386-unknown-unknown -emit-llvm -o %t %s && +// RUN: clang -triple i386-apple-darwin9 -emit-llvm -o %t %s && // RUN: grep 'define signext i8 @f0()' %t && // RUN: grep 'define signext i16 @f1()' %t && // RUN: grep 'define i32 @f2()' %t && Modified: cfe/trunk/test/Sema/implicit-builtin-decl.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Sema/implicit-builtin-decl.c?rev=67592&r1=67591&r2=67592&view=diff ============================================================================== --- cfe/trunk/test/Sema/implicit-builtin-decl.c (original) +++ cfe/trunk/test/Sema/implicit-builtin-decl.c Mon Mar 23 20:11:18 2009 @@ -42,7 +42,7 @@ // PR3855 void snprintf(); // expected-warning{{incompatible redeclaration of library function 'snprintf'}} \ - // expected-note{{'snprintf' is a builtin with type 'int (char *, unsigned long, char const *, ...)'}} + // expected-note{{'snprintf' is a builtin}} int main(int argc, char *argv[]) From eli.friedman at gmail.com Mon Mar 23 20:14:50 2009 From: eli.friedman at gmail.com (Eli Friedman) Date: Tue, 24 Mar 2009 01:14:50 -0000 Subject: [cfe-commits] r67593 - in /cfe/trunk: lib/AST/ExprConstant.cpp test/Sema/init.c Message-ID: <200903240114.n2O1EoGt009337@zion.cs.uiuc.edu> Author: efriedma Date: Mon Mar 23 20:14:50 2009 New Revision: 67593 URL: http://llvm.org/viewvc/llvm-project?rev=67593&view=rev Log: Fix PR3868 by making Evaluate handle cases like "(long)&a + 4". Modified: cfe/trunk/lib/AST/ExprConstant.cpp cfe/trunk/test/Sema/init.c Modified: cfe/trunk/lib/AST/ExprConstant.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/ExprConstant.cpp?rev=67593&r1=67592&r2=67593&view=diff ============================================================================== --- cfe/trunk/lib/AST/ExprConstant.cpp (original) +++ cfe/trunk/lib/AST/ExprConstant.cpp Mon Mar 23 20:14:50 2009 @@ -918,7 +918,6 @@ !RHSTy->isIntegralType()) { // We can't continue from here for non-integral types, and they // could potentially confuse the following operations. - // FIXME: Deal with EQ and friends. return false; } @@ -926,14 +925,36 @@ if (!Visit(E->getLHS())) return false; // error in subexpression. - // Only support arithmetic on integers for now. - if (!Result.isInt()) + APValue RHSVal; + if (!EvaluateIntegerOrLValue(E->getRHS(), RHSVal, Info)) return false; - - llvm::APSInt RHS; - if (!EvaluateInteger(E->getRHS(), RHS, Info)) + + // Handle cases like (unsigned long)&a + 4. + if (E->isAdditiveOp() && Result.isLValue() && RHSVal.isInt()) { + uint64_t offset = Result.getLValueOffset(); + if (E->getOpcode() == BinaryOperator::Add) + offset += RHSVal.getInt().getZExtValue(); + else + offset -= RHSVal.getInt().getZExtValue(); + Result = APValue(Result.getLValueBase(), offset); + return true; + } + + // Handle cases like 4 + (unsigned long)&a + if (E->getOpcode() == BinaryOperator::Add && + RHSVal.isLValue() && Result.isInt()) { + uint64_t offset = RHSVal.getLValueOffset(); + offset += Result.getInt().getZExtValue(); + Result = APValue(RHSVal.getLValueBase(), offset); + return true; + } + + // All the following cases expect both operands to be an integer + if (!Result.isInt() || !RHSVal.isInt()) return false; + APSInt& RHS = RHSVal.getInt(); + switch (E->getOpcode()) { default: return Error(E->getOperatorLoc(), diag::note_invalid_subexpr_in_ice, E); Modified: cfe/trunk/test/Sema/init.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Sema/init.c?rev=67593&r1=67592&r2=67593&view=diff ============================================================================== --- cfe/trunk/test/Sema/init.c (original) +++ cfe/trunk/test/Sema/init.c Mon Mar 23 20:14:50 2009 @@ -120,3 +120,6 @@ ivector4 vtest3 = __real__ (ivector4){1}; ivector4 vtest4 = __imag__ (ivector4){1}; +uintptr_t ptrasintadd1 = (uintptr_t)&a - 4; +uintptr_t ptrasintadd2 = (uintptr_t)&a + 4; +uintptr_t ptrasintadd3 = 4 + (uintptr_t)&a; From andersca at mac.com Mon Mar 23 20:19:16 2009 From: andersca at mac.com (Anders Carlsson) Date: Tue, 24 Mar 2009 01:19:16 -0000 Subject: [cfe-commits] r67594 - in /cfe/trunk: include/clang/AST/DeclVisitor.h lib/Sema/Sema.h lib/Sema/SemaDecl.cpp lib/Sema/SemaDeclCXX.cpp lib/Sema/SemaExprCXX.cpp lib/Sema/SemaTemplateInstantiateDecl.cpp test/SemaCXX/abstract.cpp Message-ID: <200903240119.n2O1JHwB009613@zion.cs.uiuc.edu> Author: andersca Date: Mon Mar 23 20:19:16 2009 New Revision: 67594 URL: http://llvm.org/viewvc/llvm-project?rev=67594&view=rev Log: More work on diagnosing abstract classes. We can now handle cases like class C { void g(C c); virtual void f() = 0; }; In this case, C is not known to be abstract when doing semantic analysis on g. This is done by recursively traversing the abstract class and checking the types of member functions. Modified: cfe/trunk/include/clang/AST/DeclVisitor.h cfe/trunk/lib/Sema/Sema.h cfe/trunk/lib/Sema/SemaDecl.cpp cfe/trunk/lib/Sema/SemaDeclCXX.cpp cfe/trunk/lib/Sema/SemaExprCXX.cpp cfe/trunk/lib/Sema/SemaTemplateInstantiateDecl.cpp cfe/trunk/test/SemaCXX/abstract.cpp Modified: cfe/trunk/include/clang/AST/DeclVisitor.h URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/AST/DeclVisitor.h?rev=67594&r1=67593&r2=67594&view=diff ============================================================================== --- cfe/trunk/include/clang/AST/DeclVisitor.h (original) +++ cfe/trunk/include/clang/AST/DeclVisitor.h Mon Mar 23 20:19:16 2009 @@ -13,6 +13,8 @@ #ifndef LLVM_CLANG_AST_DECLVISITOR_H #define LLVM_CLANG_AST_DECLVISITOR_H +#include "clang/AST/DeclTemplate.h" + namespace clang { #define DISPATCH(NAME, CLASS) \ Modified: cfe/trunk/lib/Sema/Sema.h URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/Sema.h?rev=67594&r1=67593&r2=67594&view=diff ============================================================================== --- cfe/trunk/lib/Sema/Sema.h (original) +++ cfe/trunk/lib/Sema/Sema.h Mon Mar 23 20:19:16 2009 @@ -1638,8 +1638,16 @@ SourceLocation Loc, SourceRange Range); std::string getAmbiguousPathsDisplayString(BasePaths &Paths); - bool RequireNonAbstractType(SourceLocation Loc, QualType T, - unsigned DiagID, unsigned SelID); + enum AbstractDiagSelID { + AbstractNone = -1, + AbstractReturnType, + AbstractParamType, + AbstractVariableType, + AbstractFieldType + }; + + bool RequireNonAbstractType(SourceLocation Loc, QualType T, unsigned DiagID, + AbstractDiagSelID SelID = AbstractNone); //===--------------------------------------------------------------------===// // C++ Overloaded Operators [C++ 13.5] Modified: cfe/trunk/lib/Sema/SemaDecl.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaDecl.cpp?rev=67594&r1=67593&r2=67594&view=diff ============================================================================== --- cfe/trunk/lib/Sema/SemaDecl.cpp (original) +++ cfe/trunk/lib/Sema/SemaDecl.cpp Mon Mar 23 20:19:16 2009 @@ -1643,7 +1643,7 @@ // The variable can not have an abstract class type. if (RequireNonAbstractType(D.getIdentifierLoc(), R, diag::err_abstract_type_in_decl, - 2 /* variable type */)) + AbstractVariableType)) InvalidDecl = true; // The variable can not @@ -1815,11 +1815,14 @@ bool isExplicit = D.getDeclSpec().isExplicitSpecified(); // Check that the return type is not an abstract class type. - if (RequireNonAbstractType(D.getIdentifierLoc(), + // For record types, this is done by the AbstractClassUsageDiagnoser once + // the class has been completely parsed. + if (!DC->isRecord() && + RequireNonAbstractType(D.getIdentifierLoc(), R->getAsFunctionType()->getResultType(), diag::err_abstract_type_in_decl, - 0 /* return type */)) - InvalidDecl = true; + AbstractReturnType)) + InvalidDecl = true; bool isVirtualOkay = false; FunctionDecl *NewFD; @@ -2609,9 +2612,12 @@ } // Parameters can not be abstract class types. - if (RequireNonAbstractType(D.getIdentifierLoc(), parmDeclType, + // For record types, this is done by the AbstractClassUsageDiagnoser once + // the class has been completely parsed. + if (!CurContext->isRecord() && + RequireNonAbstractType(D.getIdentifierLoc(), parmDeclType, diag::err_abstract_type_in_decl, - 1 /* parameter type */)) + AbstractParamType)) D.setInvalidType(true); QualType T = adjustParameterType(parmDeclType); @@ -3544,7 +3550,7 @@ // Fields can not have abstract class types if (RequireNonAbstractType(Loc, T, diag::err_abstract_type_in_decl, - 3 /* field type */)) + AbstractFieldType)) InvalidDecl = true; // If this is declared as a bit-field, check the bit-field. Modified: cfe/trunk/lib/Sema/SemaDeclCXX.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaDeclCXX.cpp?rev=67594&r1=67593&r2=67594&view=diff ============================================================================== --- cfe/trunk/lib/Sema/SemaDeclCXX.cpp (original) +++ cfe/trunk/lib/Sema/SemaDeclCXX.cpp Mon Mar 23 20:19:16 2009 @@ -15,6 +15,7 @@ #include "SemaInherit.h" #include "clang/AST/ASTConsumer.h" #include "clang/AST/ASTContext.h" +#include "clang/AST/DeclVisitor.h" #include "clang/AST/TypeOrdering.h" #include "clang/AST/StmtVisitor.h" #include "clang/Lex/Preprocessor.h" @@ -784,7 +785,7 @@ } bool Sema::RequireNonAbstractType(SourceLocation Loc, QualType T, - unsigned DiagID, unsigned SelID) { + unsigned DiagID, AbstractDiagSelID SelID) { if (!getLangOptions().CPlusPlus) return false; @@ -827,6 +828,49 @@ return true; } +namespace { + class VISIBILITY_HIDDEN AbstractClassUsageDiagnoser + : public DeclVisitor { + Sema &SemaRef; + CXXRecordDecl *AbstractClass; + + public: + AbstractClassUsageDiagnoser(Sema& SemaRef, CXXRecordDecl *ac) + : SemaRef(SemaRef), AbstractClass(ac) {} + + bool VisitCXXRecordDecl(const CXXRecordDecl *RD) { + bool Invalid = false; + + for (CXXRecordDecl::decl_iterator I = RD->decls_begin(), + E = RD->decls_end(); I != E; ++I) + Invalid |= Visit(*I); + + return Invalid; + } + + bool VisitCXXMethodDecl(const CXXMethodDecl *MD) { + // Check the return type. + QualType RTy = MD->getType()->getAsFunctionType()->getResultType(); + bool Invalid = + SemaRef.RequireNonAbstractType(MD->getLocation(), RTy, + diag::err_abstract_type_in_decl, + Sema::AbstractReturnType); + + for (CXXMethodDecl::param_const_iterator I = MD->param_begin(), + E = MD->param_end(); I != E; ++I) { + const ParmVarDecl *VD = *I; + Invalid |= + SemaRef.RequireNonAbstractType(VD->getLocation(), + VD->getOriginalType(), + diag::err_abstract_type_in_decl, + Sema::AbstractParamType); + } + + return Invalid; + } + }; +} + void Sema::ActOnFinishCXXMemberSpecification(Scope* S, SourceLocation RLoc, DeclTy *TagDecl, SourceLocation LBrac, @@ -845,6 +889,9 @@ RD->setAbstract(true); } + if (RD->isAbstract()) + AbstractClassUsageDiagnoser(*this, RD).Visit(RD); + if (!Template) AddImplicitlyDeclaredMembersToClass(RD); } Modified: cfe/trunk/lib/Sema/SemaExprCXX.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaExprCXX.cpp?rev=67594&r1=67593&r2=67594&view=diff ============================================================================== --- cfe/trunk/lib/Sema/SemaExprCXX.cpp (original) +++ cfe/trunk/lib/Sema/SemaExprCXX.cpp Mon Mar 23 20:19:16 2009 @@ -197,8 +197,8 @@ diag::err_invalid_incomplete_type_use, FullRange)) return ExprError(); - if (RequireNonAbstractType(TyBeginLoc, Ty, - diag::err_allocation_of_abstract_type, 0)) + if (RequireNonAbstractType(TyBeginLoc, Ty, + diag::err_allocation_of_abstract_type)) return ExprError(); exprs.release(); @@ -243,7 +243,7 @@ return ExprError(); if (RequireNonAbstractType(D.getSourceRange().getBegin(), AllocType, - diag::err_allocation_of_abstract_type, 0)) + diag::err_allocation_of_abstract_type)) return ExprError(); QualType ResultType = AllocType->isDependentType() Modified: cfe/trunk/lib/Sema/SemaTemplateInstantiateDecl.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaTemplateInstantiateDecl.cpp?rev=67594&r1=67593&r2=67594&view=diff ============================================================================== --- cfe/trunk/lib/Sema/SemaTemplateInstantiateDecl.cpp (original) +++ cfe/trunk/lib/Sema/SemaTemplateInstantiateDecl.cpp Mon Mar 23 20:19:16 2009 @@ -357,7 +357,7 @@ else if (SemaRef.RequireNonAbstractType(PInst->getLocation(), PInst->getType(), diag::err_abstract_type_in_decl, - 1 /* parameter type */)) + Sema::AbstractParamType)) PInst->setInvalidDecl(); Params.push_back(PInst); Modified: cfe/trunk/test/SemaCXX/abstract.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaCXX/abstract.cpp?rev=67594&r1=67593&r2=67594&view=diff ============================================================================== --- cfe/trunk/test/SemaCXX/abstract.cpp (original) +++ cfe/trunk/test/SemaCXX/abstract.cpp Mon Mar 23 20:19:16 2009 @@ -51,4 +51,16 @@ typedef void (*Func)(C); // expected-error {{parameter type 'C' is an abstract class}} void t6(Func); +class F { + F a() { } // expected-error {{return type 'F' is an abstract class}} + + class D { + void f(F c); // expected-error {{parameter type 'F' is an abstract class}} + }; + union U { + void u(F c); // expected-error {{parameter type 'F' is an abstract class}} + }; + + virtual void f() = 0; // expected-note {{pure virtual function 'f'}} +}; From andersca at mac.com Mon Mar 23 20:24:06 2009 From: andersca at mac.com (Anders Carlsson) Date: Tue, 24 Mar 2009 01:24:06 -0000 Subject: [cfe-commits] r67595 - /cfe/trunk/www/cxx_status.html Message-ID: <200903240124.n2O1O6hI009936@zion.cs.uiuc.edu> Author: andersca Date: Mon Mar 23 20:24:06 2009 New Revision: 67595 URL: http://llvm.org/viewvc/llvm-project?rev=67595&view=rev Log: class.abstract is complete. Anything that doesn't work is a bug. Modified: cfe/trunk/www/cxx_status.html Modified: cfe/trunk/www/cxx_status.html URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/www/cxx_status.html?rev=67595&r1=67594&r2=67595&view=diff ============================================================================== --- cfe/trunk/www/cxx_status.html (original) +++ cfe/trunk/www/cxx_status.html Mon Mar 23 20:24:06 2009 @@ -1272,7 +1272,14 @@   10.1 [class.mi]   10.2 [class.member.lookup]   10.3 [class.virtual] -  10.4 [class.abstract] + +   10.4 [class.abstract] + ✓ + ✓ + ✓ + N/A + + 11 [class.access]   11.1 [class.access.spec]   11.2 [class.access.base] From andersca at mac.com Mon Mar 23 20:25:56 2009 From: andersca at mac.com (Anders Carlsson) Date: Tue, 24 Mar 2009 01:25:56 -0000 Subject: [cfe-commits] r67596 - /cfe/trunk/www/OpenProjects.html Message-ID: <200903240125.n2O1PvTY010084@zion.cs.uiuc.edu> Author: andersca Date: Mon Mar 23 20:25:56 2009 New Revision: 67596 URL: http://llvm.org/viewvc/llvm-project?rev=67596&view=rev Log: Remove a task that's completed now. Modified: cfe/trunk/www/OpenProjects.html Modified: cfe/trunk/www/OpenProjects.html URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/www/OpenProjects.html?rev=67596&r1=67595&r2=67596&view=diff ============================================================================== --- cfe/trunk/www/OpenProjects.html (original) +++ cfe/trunk/www/OpenProjects.html Mon Mar 23 20:25:56 2009 @@ -91,7 +91,7 @@
  • Type-checking for explicit conversions: currently follows C semantics, not C++ semantics.
  • Type-checking for copy assignment: Clang parses overloaded copy-assignment operators, but they aren't used as part of assignment syntax ("a = b").
  • Qualified member references: C++ supports qualified member references such as x->Base::foo, but Clang has no parsing or semantic analysis for them.
  • -
  • Virtual functions: Clang parses virtual and attaches it to the AST. However, it does not determine whether a given function overrides a virtual function in a base class, nor does it determine when a class is abstract.
  • +
  • Virtual functions: Clang parses virtual and attaches it to the AST. However, it does not determine whether a given function overrides a virtual function in a base class.
  • Implicit definitions of special member functions: Clang implicitly declares the various special member functions (default constructor, copy constructor, copy assignment operator, destructor) when necessary, but is not yet able to provide definitions for these functions.
  • Parsing and AST representations of friend classes and functions
  • AST representation for implicit C++ conversions: implicit conversions that involve non-trivial operations (e.g., invoking a user-defined conversion function, performing a base-to-derived or derived-to-base conversion) need explicit representation in Clang's AST.
  • From eli.friedman at gmail.com Mon Mar 23 20:27:56 2009 From: eli.friedman at gmail.com (Eli Friedman) Date: Mon, 23 Mar 2009 18:27:56 -0700 Subject: [cfe-commits] r67594 - in /cfe/trunk: include/clang/AST/DeclVisitor.h lib/Sema/Sema.h lib/Sema/SemaDecl.cpp lib/Sema/SemaDeclCXX.cpp lib/Sema/SemaExprCXX.cpp lib/Sema/SemaTemplateInstantiateDecl.cpp test/SemaCXX/abstract.cpp In-Reply-To: <200903240119.n2O1JHwB009613@zion.cs.uiuc.edu> References: <200903240119.n2O1JHwB009613@zion.cs.uiuc.edu> Message-ID: On Mon, Mar 23, 2009 at 6:19 PM, Anders Carlsson wrote: > This is done by recursively traversing the abstract class and checking the types of member functions. I'm not sure this is the right approach... consider the following: class C; void g(C c); class C { virtual void f() = 0; }; -Eli From andersca at mac.com Mon Mar 23 20:46:46 2009 From: andersca at mac.com (Anders Carlsson) Date: Tue, 24 Mar 2009 01:46:46 -0000 Subject: [cfe-commits] r67598 - in /cfe/trunk: lib/Sema/SemaDeclCXX.cpp test/SemaCXX/abstract.cpp Message-ID: <200903240146.n2O1kknl011906@zion.cs.uiuc.edu> Author: andersca Date: Mon Mar 23 20:46:45 2009 New Revision: 67598 URL: http://llvm.org/viewvc/llvm-project?rev=67598&view=rev Log: Handle pointers to arrays of abstract types. Modified: cfe/trunk/lib/Sema/SemaDeclCXX.cpp cfe/trunk/test/SemaCXX/abstract.cpp Modified: cfe/trunk/lib/Sema/SemaDeclCXX.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaDeclCXX.cpp?rev=67598&r1=67597&r2=67598&view=diff ============================================================================== --- cfe/trunk/lib/Sema/SemaDeclCXX.cpp (original) +++ cfe/trunk/lib/Sema/SemaDeclCXX.cpp Mon Mar 23 20:46:45 2009 @@ -792,7 +792,16 @@ if (const ArrayType *AT = Context.getAsArrayType(T)) return RequireNonAbstractType(Loc, AT->getElementType(), DiagID, SelID); + + if (const PointerType *PT = T->getAsPointerType()) { + // Find the innermost pointer type. + while (const PointerType *T = PT->getPointeeType()->getAsPointerType()) + PT = T; + if (const ArrayType *AT = Context.getAsArrayType(PT->getPointeeType())) + return RequireNonAbstractType(Loc, AT->getElementType(), DiagID, SelID); + } + const RecordType *RT = T->getAsRecordType(); if (!RT) return false; Modified: cfe/trunk/test/SemaCXX/abstract.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaCXX/abstract.cpp?rev=67598&r1=67597&r2=67598&view=diff ============================================================================== --- cfe/trunk/test/SemaCXX/abstract.cpp (original) +++ cfe/trunk/test/SemaCXX/abstract.cpp Mon Mar 23 20:46:45 2009 @@ -42,7 +42,9 @@ t3(C()); // expected-error {{allocation of an object of abstract type 'C'}} } -C e[2]; // expected-error {{variable type 'C' is an abstract class}} +C e1[2]; // expected-error {{variable type 'C' is an abstract class}} +C (*e2)[2]; // expected-error {{variable type 'C' is an abstract class}} +C (**e3)[2]; // expected-error {{variable type 'C' is an abstract class}} void t4(C c[2]); // expected-error {{parameter type 'C' is an abstract class}} From mrs at apple.com Mon Mar 23 20:59:49 2009 From: mrs at apple.com (Mike Stump) Date: Tue, 24 Mar 2009 01:59:49 -0000 Subject: [cfe-commits] r67600 - /cfe/tags/Apple/clang/GNUSource.make Message-ID: <200903240159.n2O1xnnh013141@zion.cs.uiuc.edu> Author: mrs Date: Mon Mar 23 20:59:49 2009 New Revision: 67600 URL: http://llvm.org/viewvc/llvm-project?rev=67600&view=rev Log: Generate dSYM files. Modified: cfe/tags/Apple/clang/GNUSource.make Modified: cfe/tags/Apple/clang/GNUSource.make URL: http://llvm.org/viewvc/llvm-project/cfe/tags/Apple/clang/GNUSource.make?rev=67600&r1=67599&r2=67600&view=diff ============================================================================== --- cfe/tags/Apple/clang/GNUSource.make (original) +++ cfe/tags/Apple/clang/GNUSource.make Mon Mar 23 20:59:49 2009 @@ -88,7 +88,7 @@ Configure = $(Sources)/configure endif -Environment = CC="$(CC) -arch $$arch" CXX="$(CXX) -arch $$arch" +Environment = CC="$(CC) -arch $$arch" CXX="$(CXX) -arch $$arch" KEEP_SYMBOLS=1 -s --no-print-directory CC_Archs = # set by CC # FIXME: Common.make shouldn't be setting this in the first place. @@ -116,6 +116,8 @@ .PHONY: configure almostclean +SYSCTL := $(shell sysctl -n hw.activecpu) + install:: build ifneq ($(GnuNoInstall),YES) $(_v) for arch in $(RC_ARCHS) ; do \ @@ -128,6 +130,10 @@ ./merge-lipo `for arch in $(RC_ARCHS) ; do echo $(BuildDirectory)/install-$$arch ; done` $(DSTROOT) $(_v) $(FIND) $(DSTROOT) $(Find_Cruft) | $(XARGS) $(RMDIR) $(_v) $(FIND) $(SYMROOT) $(Find_Cruft) | $(XARGS) $(RMDIR) + $(_v) $(FIND) $(DSTROOT) -perm -0111 ! -name ccc -type f -print | $(XARGS) -n 1 -P $(SYSCTL) dsymutil + $(_v) cd $(DSTROOT) && find . -path \*.dSYM/\* -print | cpio -pdml $(SYMROOT) + $(_v) find $(DSTROOT) -perm -0111 ! -name ccc -type f -print | xargs -P $(SYSCTL) strip + $(_v) find $(DSTROOT) -name \*.dSYM -print | xargs rm -r ifneq ($(GnuNoChown),YES) $(_v)- $(CHOWN) -R $(Install_User):$(Install_Group) $(DSTROOT) $(SYMROOT) endif @@ -141,8 +147,6 @@ "$(DSTROOT)$(SYSTEM_DEVELOPER_TOOLS_DOC_DIR)/$(ProjectName)"; \ fi -SYSCTL=`sysctl -n hw.activecpu` - build:: configure ifneq ($(GnuNoBuild),YES) $(_v) for arch in $(RC_ARCHS) ; do \ From daniel at zuster.org Mon Mar 23 20:59:55 2009 From: daniel at zuster.org (Daniel Dunbar) Date: Tue, 24 Mar 2009 01:59:55 -0000 Subject: [cfe-commits] r67601 - in /cfe/trunk/test: CodeGen/2008-07-17-no-emit-on-error.c Coverage/codegen-gnu.m Driver/parsing.c Message-ID: <200903240159.n2O1xtW6013162@zion.cs.uiuc.edu> Author: ddunbar Date: Mon Mar 23 20:59:55 2009 New Revision: 67601 URL: http://llvm.org/viewvc/llvm-project?rev=67601&view=rev Log: Use not instead of ! in tests. Modified: cfe/trunk/test/CodeGen/2008-07-17-no-emit-on-error.c cfe/trunk/test/Coverage/codegen-gnu.m cfe/trunk/test/Driver/parsing.c Modified: cfe/trunk/test/CodeGen/2008-07-17-no-emit-on-error.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/2008-07-17-no-emit-on-error.c?rev=67601&r1=67600&r2=67601&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/2008-07-17-no-emit-on-error.c (original) +++ cfe/trunk/test/CodeGen/2008-07-17-no-emit-on-error.c Mon Mar 23 20:59:55 2009 @@ -1,6 +1,6 @@ // RUN: rm -f %t1.bc -// RUN: ! clang %s -emit-llvm-bc -o %t1.bc -// RUN: ! test -f %t1.bc +// RUN: not clang %s -emit-llvm-bc -o %t1.bc +// RUN: not test -f %t1.bc void f() { } Modified: cfe/trunk/test/Coverage/codegen-gnu.m URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Coverage/codegen-gnu.m?rev=67601&r1=67600&r2=67601&view=diff ============================================================================== --- cfe/trunk/test/Coverage/codegen-gnu.m (original) +++ cfe/trunk/test/Coverage/codegen-gnu.m Mon Mar 23 20:59:55 2009 @@ -2,6 +2,6 @@ // RUN: clang -triple i386-unknown-unknown -DIRGENABLE_GNU -DIRGENABLE -g -fgnu-runtime -emit-llvm -o %t %s && // FIXME: Remove once GNU can IRgen everything. -// RUN: ! clang -triple i386-unknown-unknown -fgnu-runtime -emit-llvm -o %t %s +// RUN: not clang -triple i386-unknown-unknown -fgnu-runtime -emit-llvm -o %t %s #include "objc-language-features.inc" Modified: cfe/trunk/test/Driver/parsing.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/parsing.c?rev=67601&r1=67600&r2=67601&view=diff ============================================================================== --- cfe/trunk/test/Driver/parsing.c (original) +++ cfe/trunk/test/Driver/parsing.c Mon Mar 23 20:59:55 2009 @@ -10,9 +10,9 @@ // RUN: grep 'Option 8 - Name: "-Xarch_", Values: {"joined", "AndSeparate"}' %t && // RUN: grep 'Option 9 - Name: "-sectalign", Values: {"1", "2", "3"}' %t && -// RUN: ! clang-driver -V 2> %t && +// RUN: not clang-driver -V 2> %t && // RUN: grep "error: argument to '-V' is missing (expected 1 value)" %t && -// RUN: ! clang-driver -sectalign 1 2 2> %t && +// RUN: not clang-driver -sectalign 1 2 2> %t && // RUN: grep "error: argument to '-sectalign' is missing (expected 3 values)" %t && // RUN: true From mrs at apple.com Mon Mar 23 21:29:50 2009 From: mrs at apple.com (Mike Stump) Date: Mon, 23 Mar 2009 19:29:50 -0700 Subject: [cfe-commits] r67594 - in /cfe/trunk: include/clang/AST/DeclVisitor.h lib/Sema/Sema.h lib/Sema/SemaDecl.cpp lib/Sema/SemaDeclCXX.cpp lib/Sema/SemaExprCXX.cpp lib/Sema/SemaTemplateInstantiateDecl.cpp test/SemaCXX/abstract.cpp In-Reply-To: <200903240119.n2O1JHwB009613@zion.cs.uiuc.edu> References: <200903240119.n2O1JHwB009613@zion.cs.uiuc.edu> Message-ID: <547D78E0-2312-419C-B140-777C63BD5ECB@apple.com> On Mar 23, 2009, at 6:19 PM, Anders Carlsson wrote: > This is done by recursively traversing the abstract class and > checking the types of member functions. I'm not a bit fan of recursive walks, too slow. If I were, I'd say, for a single true bit, we should short circuit out. From daniel at zuster.org Mon Mar 23 21:38:23 2009 From: daniel at zuster.org (Daniel Dunbar) Date: Tue, 24 Mar 2009 02:38:23 -0000 Subject: [cfe-commits] r67603 - in /cfe/trunk: lib/CodeGen/CGExpr.cpp lib/CodeGen/CodeGenFunction.h test/CodeGen/exprs.c test/Coverage/c-language-features.inc Message-ID: <200903240238.n2O2cNnT016389@zion.cs.uiuc.edu> Author: ddunbar Date: Mon Mar 23 21:38:23 2009 New Revision: 67603 URL: http://llvm.org/viewvc/llvm-project?rev=67603&view=rev Log: Support member reference on ?: of struct type. Modified: cfe/trunk/lib/CodeGen/CGExpr.cpp cfe/trunk/lib/CodeGen/CodeGenFunction.h cfe/trunk/test/CodeGen/exprs.c cfe/trunk/test/Coverage/c-language-features.inc Modified: cfe/trunk/lib/CodeGen/CGExpr.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGExpr.cpp?rev=67603&r1=67602&r2=67603&view=diff ============================================================================== --- cfe/trunk/lib/CodeGen/CGExpr.cpp (original) +++ cfe/trunk/lib/CodeGen/CGExpr.cpp Mon Mar 23 21:38:23 2009 @@ -179,6 +179,8 @@ case Expr::MemberExprClass: return EmitMemberExpr(cast(E)); case Expr::CompoundLiteralExprClass: return EmitCompoundLiteralLValue(cast(E)); + case Expr::ConditionalOperatorClass: + return EmitConditionalOperator(cast(E)); case Expr::ChooseExprClass: return EmitLValue(cast(E)->getChosenSubExpr(getContext())); case Expr::ImplicitCastExprClass: @@ -1009,6 +1011,24 @@ return Result; } +LValue CodeGenFunction::EmitConditionalOperator(const ConditionalOperator* E) { + // We don't handle vectors yet. + if (E->getType()->isVectorType()) + return EmitUnsupportedLValue(E, "conditional operator"); + + // ?: here should be an aggregate. + assert((hasAggregateLLVMType(E->getType()) && + !E->getType()->isAnyComplexType()) && + "Unexpected conditional operator!"); + + llvm::Value *Temp = CreateTempAlloca(ConvertType(E->getType())); + EmitAggExpr(E, Temp, false); + + return LValue::MakeAddr(Temp, E->getType().getCVRQualifiers(), + getContext().getObjCGCAttrKind(E->getType())); + +} + /// EmitCastLValue - Casts are never lvalues. If a cast is needed by the code /// generator in an lvalue context, then it must mean that we need the address /// of an aggregate in order to access one of its fields. This can happen for Modified: cfe/trunk/lib/CodeGen/CodeGenFunction.h URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenFunction.h?rev=67603&r1=67602&r2=67603&view=diff ============================================================================== --- cfe/trunk/lib/CodeGen/CodeGenFunction.h (original) +++ cfe/trunk/lib/CodeGen/CodeGenFunction.h Mon Mar 23 21:38:23 2009 @@ -608,6 +608,7 @@ LValue EmitExtVectorElementExpr(const ExtVectorElementExpr *E); LValue EmitMemberExpr(const MemberExpr *E); LValue EmitCompoundLiteralLValue(const CompoundLiteralExpr *E); + LValue EmitConditionalOperator(const ConditionalOperator *E); LValue EmitCastLValue(const CastExpr *E); llvm::Value *EmitIvarOffset(ObjCInterfaceDecl *Interface, Modified: cfe/trunk/test/CodeGen/exprs.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/exprs.c?rev=67603&r1=67602&r2=67603&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/exprs.c (original) +++ cfe/trunk/test/CodeGen/exprs.c Mon Mar 23 21:38:23 2009 @@ -88,3 +88,9 @@ struct f5_a { int a; } f5_a; union f5_z {int x; struct f5_a y;}; struct f5_a f5() {return ((union f5_z)f5_a).y;} + +// ?: in "lvalue" +struct s6 { int f0; }; +int f6(int a0, struct s6 a1, struct s6 a2) { + return (a0 ? a1 : a2).f0; +} Modified: cfe/trunk/test/Coverage/c-language-features.inc URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Coverage/c-language-features.inc?rev=67603&r1=67602&r2=67603&view=diff ============================================================================== --- cfe/trunk/test/Coverage/c-language-features.inc (original) +++ cfe/trunk/test/Coverage/c-language-features.inc Mon Mar 23 21:38:23 2009 @@ -128,16 +128,32 @@ struct { char f0[10]; } *t28; int t29 = t28 - t28; char *t30 = &t28->f0[1]; + + struct s1 { int f0; }; + struct s1 t31_a, t31_b; + int t31_cond; + int t31 = (t31_cond ? t31_a : t31_b).f0; + + _Complex float t32_a, t32_b; + int t32_cond; + int t32 = __real (t32_cond ? t32_a : t32_b); } // Extended vectors +typedef __attribute__((ext_vector_type(2))) float float2; typedef __attribute__((ext_vector_type(4))) float float4; void f5() { float4 t0 = (float4) { 0, 1, 2, 3 }; float4 t1 = t0; t0.lo.even = t1.hi.x; + + // irgen doesn't support this yet. +#if 0 + int t2_cond; + float2 t2 = (t2_cond ? t0 : t1).lo; +#endif } void f6() { From daniel at zuster.org Mon Mar 23 21:52:57 2009 From: daniel at zuster.org (Daniel Dunbar) Date: Tue, 24 Mar 2009 02:52:57 -0000 Subject: [cfe-commits] r67604 - in /cfe/trunk: CMakeLists.txt tools/CMakeLists.txt tools/driver/CMakeLists.txt Message-ID: <200903240252.n2O2qvu3017161@zion.cs.uiuc.edu> Author: ddunbar Date: Mon Mar 23 21:52:57 2009 New Revision: 67604 URL: http://llvm.org/viewvc/llvm-project?rev=67604&view=rev Log: Add CMake files for tools/driver; I am just guessing here, can someone test/fix? Added: cfe/trunk/tools/CMakeLists.txt cfe/trunk/tools/driver/CMakeLists.txt Modified: cfe/trunk/CMakeLists.txt Modified: cfe/trunk/CMakeLists.txt URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/CMakeLists.txt?rev=67604&r1=67603&r2=67604&view=diff ============================================================================== --- cfe/trunk/CMakeLists.txt (original) +++ cfe/trunk/CMakeLists.txt Mon Mar 23 21:52:57 2009 @@ -52,5 +52,6 @@ add_subdirectory(include) add_subdirectory(lib) add_subdirectory(Driver) +add_subdirectory(tools) # TODO: docs. Added: cfe/trunk/tools/CMakeLists.txt URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/CMakeLists.txt?rev=67604&view=auto ============================================================================== --- cfe/trunk/tools/CMakeLists.txt (added) +++ cfe/trunk/tools/CMakeLists.txt Mon Mar 23 21:52:57 2009 @@ -0,0 +1 @@ +add_subdirectory(driver) Added: cfe/trunk/tools/driver/CMakeLists.txt URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/driver/CMakeLists.txt?rev=67604&view=auto ============================================================================== --- cfe/trunk/tools/driver/CMakeLists.txt (added) +++ cfe/trunk/tools/driver/CMakeLists.txt Mon Mar 23 21:52:57 2009 @@ -0,0 +1,10 @@ +set( LLVM_USED_LIBS + clangDriver + clangBasic + ) + +set(LLVM_LINK_COMPONENTS system support bitreader bitwriter) + +add_clang_tool(clang-driver + driver.cpp + ) From daniel at zuster.org Mon Mar 23 22:00:12 2009 From: daniel at zuster.org (Daniel Dunbar) Date: Tue, 24 Mar 2009 03:00:12 -0000 Subject: [cfe-commits] r67605 - in /cfe/trunk: CMakeLists.txt Driver/ Makefile tools/CMakeLists.txt tools/Makefile tools/clang-cc/ tools/clang-cc/CMakeLists.txt tools/clang-cc/Makefile tools/driver/Makefile Message-ID: <200903240300.n2O30DCw017648@zion.cs.uiuc.edu> Author: ddunbar Date: Mon Mar 23 22:00:12 2009 New Revision: 67605 URL: http://llvm.org/viewvc/llvm-project?rev=67605&view=rev Log: Move /Driver into /tools/clang-cc. Again, I tried to update cmake but it is untested. Added: cfe/trunk/tools/clang-cc/ - copied from r67603, cfe/trunk/Driver/ Removed: cfe/trunk/Driver/ Modified: cfe/trunk/CMakeLists.txt cfe/trunk/Makefile cfe/trunk/tools/CMakeLists.txt cfe/trunk/tools/Makefile cfe/trunk/tools/clang-cc/CMakeLists.txt cfe/trunk/tools/clang-cc/Makefile cfe/trunk/tools/driver/Makefile Modified: cfe/trunk/CMakeLists.txt URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/CMakeLists.txt?rev=67605&r1=67604&r2=67605&view=diff ============================================================================== --- cfe/trunk/CMakeLists.txt (original) +++ cfe/trunk/CMakeLists.txt Mon Mar 23 22:00:12 2009 @@ -51,7 +51,6 @@ add_subdirectory(include) add_subdirectory(lib) -add_subdirectory(Driver) add_subdirectory(tools) # TODO: docs. Modified: cfe/trunk/Makefile URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/Makefile?rev=67605&r1=67604&r2=67605&view=diff ============================================================================== --- cfe/trunk/Makefile (original) +++ cfe/trunk/Makefile Mon Mar 23 22:00:12 2009 @@ -1,5 +1,5 @@ LEVEL = ../.. -DIRS := include lib Driver docs tools +DIRS := include lib tools docs include $(LEVEL)/Makefile.common @@ -24,7 +24,7 @@ $(Verb) etags `find . -type f -name \*.h | grep -v /lib/Headers | grep -v /test/` `find . -type f -name \*.cpp | grep -v /lib/Headers | grep -v /test/` cscope.files: - find Driver lib include -name '*.cpp' \ + find tools lib include -name '*.cpp' \ -or -name '*.def' \ -or -name '*.td' \ -or -name '*.h' > cscope.files Modified: cfe/trunk/tools/CMakeLists.txt URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/CMakeLists.txt?rev=67605&r1=67604&r2=67605&view=diff ============================================================================== --- cfe/trunk/tools/CMakeLists.txt (original) +++ cfe/trunk/tools/CMakeLists.txt Mon Mar 23 22:00:12 2009 @@ -1 +1,2 @@ +add_subdirectory(clang-cc) add_subdirectory(driver) Modified: cfe/trunk/tools/Makefile URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/Makefile?rev=67605&r1=67604&r2=67605&view=diff ============================================================================== --- cfe/trunk/tools/Makefile (original) +++ cfe/trunk/tools/Makefile Mon Mar 23 22:00:12 2009 @@ -8,6 +8,6 @@ ##===----------------------------------------------------------------------===## LEVEL := ../../.. -DIRS := ccc driver +DIRS := clang-cc ccc driver include $(LEVEL)/Makefile.common Modified: cfe/trunk/tools/clang-cc/CMakeLists.txt URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/clang-cc/CMakeLists.txt?rev=67605&r1=67603&r2=67605&view=diff ============================================================================== --- cfe/trunk/tools/clang-cc/CMakeLists.txt (original) +++ cfe/trunk/tools/clang-cc/CMakeLists.txt Mon Mar 23 22:00:12 2009 @@ -21,7 +21,7 @@ selectiondag ) -add_clang_executable(clang +add_clang_executable(clang-cc AnalysisConsumer.cpp ASTConsumers.cpp Backend.cpp Modified: cfe/trunk/tools/clang-cc/Makefile URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/clang-cc/Makefile?rev=67605&r1=67603&r2=67605&view=diff ============================================================================== --- cfe/trunk/tools/clang-cc/Makefile (original) +++ cfe/trunk/tools/clang-cc/Makefile Mon Mar 23 22:00:12 2009 @@ -1,6 +1,15 @@ -LEVEL = ../../.. +##===- tools/clang-cc/Makefile -----------------------------*- Makefile -*-===## +# +# The LLVM Compiler Infrastructure +# +# This file is distributed under the University of Illinois Open Source +# License. See LICENSE.TXT for details. +# +##===----------------------------------------------------------------------===## +LEVEL = ../../../.. + TOOLNAME = clang-cc -CPPFLAGS += -I$(PROJ_SRC_DIR)/../include -I$(PROJ_OBJ_DIR)/../include +CPPFLAGS += -I$(PROJ_SRC_DIR)/../../include -I$(PROJ_OBJ_DIR)/../../include CXXFLAGS = -fno-rtti # Clang has no plugins, optimize startup time. Modified: cfe/trunk/tools/driver/Makefile URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/driver/Makefile?rev=67605&r1=67604&r2=67605&view=diff ============================================================================== --- cfe/trunk/tools/driver/Makefile (original) +++ cfe/trunk/tools/driver/Makefile Mon Mar 23 22:00:12 2009 @@ -12,12 +12,12 @@ CPPFLAGS += -I$(PROJ_SRC_DIR)/../../include -I$(PROJ_OBJ_DIR)/../../include CXXFLAGS = -fno-rtti +# This tool has no plugins, optimize startup time. +TOOL_NO_EXPORTS = 1 + # FIXME: It is unfortunate we need to pull in the bitcode reader and # writer just to get the serializer stuff used by clangBasic. LINK_COMPONENTS := system support bitreader bitwriter USEDLIBS = clangDriver.a clangBasic.a -# This tool has no plugins, optimize startup time. -TOOL_NO_EXPORTS = 1 - include $(LEVEL)/Makefile.common From daniel at zuster.org Mon Mar 23 22:07:05 2009 From: daniel at zuster.org (Daniel Dunbar) Date: Tue, 24 Mar 2009 03:07:05 -0000 Subject: [cfe-commits] r67606 - in /cfe/trunk: test/Driver/bindings.c test/Driver/clang-translation.c test/Driver/hello.c test/Driver/parsing.c test/Driver/phases.c test/Driver/pth.c tools/driver/CMakeLists.txt tools/driver/Makefile tools/driver/driver.cpp Message-ID: <200903240307.n2O376AG018008@zion.cs.uiuc.edu> Author: ddunbar Date: Mon Mar 23 22:07:05 2009 New Revision: 67606 URL: http://llvm.org/viewvc/llvm-project?rev=67606&view=rev Log: Rename clang-driver to clang. Again, I tried to update cmake but it is untested. Modified: cfe/trunk/test/Driver/bindings.c cfe/trunk/test/Driver/clang-translation.c cfe/trunk/test/Driver/hello.c cfe/trunk/test/Driver/parsing.c cfe/trunk/test/Driver/phases.c cfe/trunk/test/Driver/pth.c cfe/trunk/tools/driver/CMakeLists.txt cfe/trunk/tools/driver/Makefile cfe/trunk/tools/driver/driver.cpp Modified: cfe/trunk/test/Driver/bindings.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/bindings.c?rev=67606&r1=67605&r2=67606&view=diff ============================================================================== --- cfe/trunk/test/Driver/bindings.c (original) +++ cfe/trunk/test/Driver/bindings.c Mon Mar 23 22:07:05 2009 @@ -1,47 +1,47 @@ // Basic binding. -// RUN: clang-driver -ccc-host-triple i386-unknown-unknown -ccc-print-bindings %s 2> %t && +// RUN: clang -ccc-host-triple i386-unknown-unknown -ccc-print-bindings %s 2> %t && // RUN: grep 'bind - "clang", inputs: \[".*bindings.c"\], output: ".*\.s"' %t && // RUN: grep 'bind - "gcc::Assemble", inputs: \[".*\.s"\], output: ".*\.o"' %t && // RUN: grep 'bind - "gcc::Link", inputs: \[".*\.o"\], output: "a.out"' %t && -// RUN: clang-driver -ccc-host-triple i386-unknown-unknown -ccc-print-bindings -ccc-no-clang %s 2> %t && +// RUN: clang -ccc-host-triple i386-unknown-unknown -ccc-print-bindings -ccc-no-clang %s 2> %t && // RUN: grep 'bind - "gcc::Compile", inputs: \[".*bindings.c"\], output: ".*\.s"' %t && // RUN: grep 'bind - "gcc::Assemble", inputs: \[".*\.s"\], output: ".*\.o"' %t && // RUN: grep 'bind - "gcc::Link", inputs: \[".*\.o"\], output: "a.out"' %t && -// RUN: clang-driver -ccc-host-triple i386-unknown-unknown -ccc-print-bindings -ccc-no-clang -no-integrated-cpp %s 2> %t && +// RUN: clang -ccc-host-triple i386-unknown-unknown -ccc-print-bindings -ccc-no-clang -no-integrated-cpp %s 2> %t && // RUN: grep 'bind - "gcc::Preprocess", inputs: \[".*bindings.c"\], output: ".*\.i"' %t && // RUN: grep 'bind - "gcc::Compile", inputs: \[".*\.i"\], output: ".*\.s"' %t && // RUN: grep 'bind - "gcc::Assemble", inputs: \[".*\.s"\], output: ".*\.o"' %t && // RUN: grep 'bind - "gcc::Link", inputs: \[".*\.o"\], output: "a.out"' %t && -// RUN: clang-driver -ccc-host-triple i386-unknown-unknown -ccc-print-bindings -ccc-no-clang -no-integrated-cpp -pipe %s 2> %t && +// RUN: clang -ccc-host-triple i386-unknown-unknown -ccc-print-bindings -ccc-no-clang -no-integrated-cpp -pipe %s 2> %t && // RUN: grep 'bind - "gcc::Preprocess", inputs: \[".*bindings.c"\], output: (pipe)' %t && // RUN: grep 'bind - "gcc::Compile", inputs: \[(pipe)\], output: (pipe)' %t && // RUN: grep 'bind - "gcc::Assemble", inputs: \[(pipe)\], output: ".*\.o"' %t && // RUN: grep 'bind - "gcc::Link", inputs: \[".*\.o"\], output: "a.out"' %t && -// RUN: clang-driver -ccc-host-triple i386-unknown-unknown -ccc-print-bindings -ccc-no-clang -x c-header %s 2> %t && +// RUN: clang -ccc-host-triple i386-unknown-unknown -ccc-print-bindings -ccc-no-clang -x c-header %s 2> %t && // RUN: grep 'bind - "gcc::Precompile", inputs: \[".*bindings.c"\], output: ".*bindings.c.gch' %t && // Clang control options -// RUN: clang-driver -ccc-host-triple i386-unknown-unknown -ccc-print-bindings -fsyntax-only %s 2> %t && +// RUN: clang -ccc-host-triple i386-unknown-unknown -ccc-print-bindings -fsyntax-only %s 2> %t && // RUN: grep 'bind - "clang", inputs: \[".*bindings.c"\], output: (nothing)' %t && -// RUN: clang-driver -ccc-host-triple i386-unknown-unknown -ccc-print-bindings -ccc-no-clang -fsyntax-only %s 2> %t && +// RUN: clang -ccc-host-triple i386-unknown-unknown -ccc-print-bindings -ccc-no-clang -fsyntax-only %s 2> %t && // RUN: grep 'bind - "gcc::Compile", inputs: \[".*bindings.c"\], output: (nothing)' %t && -// RUN: clang-driver -ccc-host-triple i386-unknown-unknown -ccc-print-bindings -ccc-no-clang-cxx -fsyntax-only -x c++ %s 2> %t && +// RUN: clang -ccc-host-triple i386-unknown-unknown -ccc-print-bindings -ccc-no-clang-cxx -fsyntax-only -x c++ %s 2> %t && // RUN: grep 'bind - "gcc::Compile", inputs: \[".*bindings.c"\], output: (nothing)' %t && -// RUN: clang-driver -ccc-print-bindings -ccc-no-clang-cpp -fsyntax-only -no-integrated-cpp -x c++ %s 2> %t && +// RUN: clang -ccc-print-bindings -ccc-no-clang-cpp -fsyntax-only -no-integrated-cpp -x c++ %s 2> %t && // RUN: grep 'bind - "gcc::Preprocess", inputs: \[".*bindings.c"\], output: ".*\.ii"' %t && // RUN: grep 'bind - "clang", inputs: \[".*\.ii"\], output: (nothing)' %t && -// RUN: clang-driver -ccc-host-triple i386-unknown-unknown -ccc-host-triple i386-apple-darwin9 -ccc-print-bindings -ccc-clang-archs i386 %s -S -arch ppc 2> %t && +// RUN: clang -ccc-host-triple i386-unknown-unknown -ccc-host-triple i386-apple-darwin9 -ccc-print-bindings -ccc-clang-archs i386 %s -S -arch ppc 2> %t && // RUN: grep 'bind - "gcc::Compile", inputs: \[".*bindings.c"\], output: "bindings.s"' %t && -// RUN: clang-driver -ccc-host-triple i386-unknown-unknown -ccc-host-triple i386-apple-darwin9 -ccc-print-bindings -ccc-clang-archs ppc %s -S -arch ppc 2> %t && +// RUN: clang -ccc-host-triple i386-unknown-unknown -ccc-host-triple i386-apple-darwin9 -ccc-print-bindings -ccc-clang-archs ppc %s -S -arch ppc 2> %t && // RUN: grep 'bind - "clang", inputs: \[".*bindings.c"\], output: "bindings.s"' %t && // Darwin bindings -// RUN: clang-driver -ccc-host-triple i386-apple-darwin9 -ccc-print-bindings %s 2> %t && +// RUN: clang -ccc-host-triple i386-apple-darwin9 -ccc-print-bindings %s 2> %t && // RUN: grep 'bind - "clang", inputs: \[".*bindings.c"\], output: ".*\.s"' %t && // RUN: grep 'bind - "darwin::Assemble", inputs: \[".*\.s"\], output: ".*\.o"' %t && // RUN: grep 'bind - "gcc::Link", inputs: \[".*\.o"\], output: "a.out"' %t && Modified: cfe/trunk/test/Driver/clang-translation.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/clang-translation.c?rev=67606&r1=67605&r2=67606&view=diff ============================================================================== --- cfe/trunk/test/Driver/clang-translation.c (original) +++ cfe/trunk/test/Driver/clang-translation.c Mon Mar 23 22:07:05 2009 @@ -1,4 +1,4 @@ -// RUN: clang-driver -ccc-host-triple i386-unknown-unknown -### -S -Os %s -o %t.s 2> %t.log +// RUN: clang -ccc-host-triple i386-unknown-unknown -### -S -Os %s -o %t.s 2> %t.log // RUN: grep '"-S"' %t.log && // RUN: grep '"-disable-free"' %t.log && // RUN: grep '"--relocation-model" "static"' %t.log && Modified: cfe/trunk/test/Driver/hello.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/hello.c?rev=67606&r1=67605&r2=67606&view=diff ============================================================================== --- cfe/trunk/test/Driver/hello.c (original) +++ cfe/trunk/test/Driver/hello.c Mon Mar 23 22:07:05 2009 @@ -1,4 +1,4 @@ -// RUN: clang-driver -ccc-echo -o %t %s 2> %t.log && +// RUN: clang -ccc-echo -o %t %s 2> %t.log && // Make sure we used clang. // RUN: grep 'clang-cc" .*hello.c' %t.log && Modified: cfe/trunk/test/Driver/parsing.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/parsing.c?rev=67606&r1=67605&r2=67606&view=diff ============================================================================== --- cfe/trunk/test/Driver/parsing.c (original) +++ cfe/trunk/test/Driver/parsing.c Mon Mar 23 22:07:05 2009 @@ -1,4 +1,4 @@ -// RUN: clang-driver -ccc-print-options input -Yunknown -m32 -arch ppc -djoined -A separate -Ajoined -Wp,one,two -Xarch_joined AndSeparate -sectalign 1 2 3 2> %t && +// RUN: clang -ccc-print-options input -Yunknown -m32 -arch ppc -djoined -A separate -Ajoined -Wp,one,two -Xarch_joined AndSeparate -sectalign 1 2 3 2> %t && // RUN: grep 'Option 0 - Name: "", Values: {"input"}' %t && // RUN: grep 'Option 1 - Name: "", Values: {"-Yunknown"}' %t && // RUN: grep 'Option 2 - Name: "-m32", Values: {}' %t && @@ -10,9 +10,9 @@ // RUN: grep 'Option 8 - Name: "-Xarch_", Values: {"joined", "AndSeparate"}' %t && // RUN: grep 'Option 9 - Name: "-sectalign", Values: {"1", "2", "3"}' %t && -// RUN: not clang-driver -V 2> %t && +// RUN: not clang -V 2> %t && // RUN: grep "error: argument to '-V' is missing (expected 1 value)" %t && -// RUN: not clang-driver -sectalign 1 2 2> %t && +// RUN: not clang -sectalign 1 2 2> %t && // RUN: grep "error: argument to '-sectalign' is missing (expected 3 values)" %t && // RUN: true Modified: cfe/trunk/test/Driver/phases.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/phases.c?rev=67606&r1=67605&r2=67606&view=diff ============================================================================== --- cfe/trunk/test/Driver/phases.c (original) +++ cfe/trunk/test/Driver/phases.c Mon Mar 23 22:07:05 2009 @@ -1,5 +1,5 @@ // Basic compilation for various types of files. -// RUN: clang-driver -ccc-host-triple i386-unknown-unknown -ccc-print-phases -x c %s -x objective-c %s -x c++ %s -x objective-c++ -x assembler %s -x assembler-with-cpp %s -x none %s 2> %t && +// RUN: clang -ccc-host-triple i386-unknown-unknown -ccc-print-phases -x c %s -x objective-c %s -x c++ %s -x objective-c++ -x assembler %s -x assembler-with-cpp %s -x none %s 2> %t && // RUN: grep '0: input, ".*phases.c", c' %t && // RUN: grep -F '1: preprocessor, {0}, cpp-output' %t && // RUN: grep -F '2: compiler, {1}, assembler' %t && @@ -24,7 +24,7 @@ // RUN: grep -F '21: linker, {3, 7, 11, 13, 16, 20}, image' %t && // Universal linked image. -// RUN: clang-driver -ccc-host-triple i386-apple-darwin9 -ccc-print-phases -x c %s -arch ppc -arch i386 2> %t && +// RUN: clang -ccc-host-triple i386-apple-darwin9 -ccc-print-phases -x c %s -arch ppc -arch i386 2> %t && // RUN: grep '0: input, ".*phases.c", c' %t && // RUN: grep -F '1: preprocessor, {0}, cpp-output' %t && // RUN: grep -F '2: compiler, {1}, assembler' %t && @@ -35,7 +35,7 @@ // RUN: grep -F '7: lipo, {5, 6}, image' %t && // Universal object file. -// RUN: clang-driver -ccc-host-triple i386-apple-darwin9 -ccc-print-phases -c -x c %s -arch ppc -arch i386 2> %t && +// RUN: clang -ccc-host-triple i386-apple-darwin9 -ccc-print-phases -c -x c %s -arch ppc -arch i386 2> %t && // RUN: grep '0: input, ".*phases.c", c' %t && // RUN: grep -F '1: preprocessor, {0}, cpp-output' %t && // RUN: grep -F '2: compiler, {1}, assembler' %t && @@ -45,33 +45,33 @@ // RUN: grep -F '6: lipo, {4, 5}, object' %t && // Arch defaulting -// RUN: clang-driver -ccc-host-triple i386-apple-darwin9 -ccc-print-phases -c -x assembler %s 2> %t && +// RUN: clang -ccc-host-triple i386-apple-darwin9 -ccc-print-phases -c -x assembler %s 2> %t && // RUN: grep -F '2: bind-arch, "i386", {1}, object' %t && -// RUN: clang-driver -ccc-host-triple i386-apple-darwin9 -ccc-print-phases -c -x assembler %s -m32 -m64 2> %t && +// RUN: clang -ccc-host-triple i386-apple-darwin9 -ccc-print-phases -c -x assembler %s -m32 -m64 2> %t && // RUN: grep -F '2: bind-arch, "x86_64", {1}, object' %t && -// RUN: clang-driver -ccc-host-triple x86_64-apple-darwin9 -ccc-print-phases -c -x assembler %s 2> %t && +// RUN: clang -ccc-host-triple x86_64-apple-darwin9 -ccc-print-phases -c -x assembler %s 2> %t && // RUN: grep -F '2: bind-arch, "x86_64", {1}, object' %t && -// RUN: clang-driver -ccc-host-triple x86_64-apple-darwin9 -ccc-print-phases -c -x assembler %s -m64 -m32 2> %t && +// RUN: clang -ccc-host-triple x86_64-apple-darwin9 -ccc-print-phases -c -x assembler %s -m64 -m32 2> %t && // RUN: grep -F '2: bind-arch, "i386", {1}, object' %t && // Analyzer -// RUN: clang-driver -ccc-host-triple i386-unknown-unknown -ccc-print-phases --analyze %s 2> %t && +// RUN: clang -ccc-host-triple i386-unknown-unknown -ccc-print-phases --analyze %s 2> %t && // RUN: grep '0: input, ".*phases.c", c' %t && // RUN: grep -F '1: preprocessor, {0}, cpp-output' %t && // RUN: grep -F '2: analyzer, {1}, plist' %t && // Precompiler -// RUN: clang-driver -ccc-host-triple i386-unknown-unknown -ccc-print-phases -x c-header %s 2> %t && +// RUN: clang -ccc-host-triple i386-unknown-unknown -ccc-print-phases -x c-header %s 2> %t && // RUN: grep '0: input, ".*phases.c", c-header' %t && // RUN: grep -F '1: preprocessor, {0}, c-header-cpp-output' %t && // RUN: grep -F '2: precompiler, {1}, precompiled-header' %t && // Darwin overrides the handling for .s // RUN: touch %t.s && -// RUN: clang-driver -ccc-host-triple i386-unknown-unknown -ccc-print-phases -c %t.s 2> %t && +// RUN: clang -ccc-host-triple i386-unknown-unknown -ccc-print-phases -c %t.s 2> %t && // RUN: grep '0: input, ".*\.s", assembler' %t && // RUN: grep -F '1: assembler, {0}, object' %t && -// RUN: clang-driver -ccc-host-triple i386-apple-darwin9 -ccc-print-phases -c %t.s 2> %t && +// RUN: clang -ccc-host-triple i386-apple-darwin9 -ccc-print-phases -c %t.s 2> %t && // RUN: grep '0: input, ".*\.s", assembler-with-cpp' %t && // RUN: grep -F '1: preprocessor, {0}, assembler' %t && // RUN: grep -F '2: assembler, {1}, object' %t && Modified: cfe/trunk/test/Driver/pth.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/pth.c?rev=67606&r1=67605&r2=67606&view=diff ============================================================================== --- cfe/trunk/test/Driver/pth.c (original) +++ cfe/trunk/test/Driver/pth.c Mon Mar 23 22:07:05 2009 @@ -1,8 +1,8 @@ // Test transparent PTH support. -// RUN: clang-driver -x c-header %s -o %t.h.pch -### 2> %t.log && +// RUN: clang -x c-header %s -o %t.h.pch -### 2> %t.log && // RUN: grep '".*/clang-cc" .* "-o" ".*\.h\.pch" "-x" "c-header" ".*pth\.c"' %t.log && // RUN: touch %t.h.pth && -// RUN: clang-driver -E -include %t.h %s -### 2> %t.log && +// RUN: clang -E -include %t.h %s -### 2> %t.log && // RUN: grep '".*/clang-cc" .*"-include-pth" ".*\.h\.pth" .*"-x" "c" ".*pth\.c"' %t.log Modified: cfe/trunk/tools/driver/CMakeLists.txt URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/driver/CMakeLists.txt?rev=67606&r1=67605&r2=67606&view=diff ============================================================================== --- cfe/trunk/tools/driver/CMakeLists.txt (original) +++ cfe/trunk/tools/driver/CMakeLists.txt Mon Mar 23 22:07:05 2009 @@ -5,6 +5,6 @@ set(LLVM_LINK_COMPONENTS system support bitreader bitwriter) -add_clang_tool(clang-driver +add_clang_tool(clang driver.cpp ) Modified: cfe/trunk/tools/driver/Makefile URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/driver/Makefile?rev=67606&r1=67605&r2=67606&view=diff ============================================================================== --- cfe/trunk/tools/driver/Makefile (original) +++ cfe/trunk/tools/driver/Makefile Mon Mar 23 22:07:05 2009 @@ -8,7 +8,7 @@ ##===----------------------------------------------------------------------===## LEVEL = ../../../.. -TOOLNAME = clang-driver +TOOLNAME = clang CPPFLAGS += -I$(PROJ_SRC_DIR)/../../include -I$(PROJ_OBJ_DIR)/../../include CXXFLAGS = -fno-rtti Modified: cfe/trunk/tools/driver/driver.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/driver/driver.cpp?rev=67606&r1=67605&r2=67606&view=diff ============================================================================== --- cfe/trunk/tools/driver/driver.cpp (original) +++ cfe/trunk/tools/driver/driver.cpp Mon Mar 23 22:07:05 2009 @@ -95,3 +95,4 @@ return Res; } + From daniel at zuster.org Mon Mar 23 21:24:53 2009 From: daniel at zuster.org (Daniel Dunbar) Date: Tue, 24 Mar 2009 02:24:53 -0000 Subject: [cfe-commits] r67602 - in /cfe/trunk: Driver/ lib/Driver/ test/Analysis/ test/CodeGen/ test/CodeGenCXX/ test/CodeGenObjC/ test/Coverage/ test/Driver/ test/Frontend/ test/Lexer/ test/Misc/ test/Parser/ test/Preprocessor/ test/Rewriter/ test/Sema/ test/SemaCXX/ test/SemaObjC/ test/SemaObjCXX/ test/SemaTemplate/ tools/ccc/ccclib/ tools/ccc/test/ccc/ Message-ID: <200903240225.n2O2PLlD015622@zion.cs.uiuc.edu> Author: ddunbar Date: Mon Mar 23 21:24:46 2009 New Revision: 67602 URL: http://llvm.org/viewvc/llvm-project?rev=67602&view=rev Log: Rename clang to clang-cc. Tests and drivers updated, still need to shuffle dirs. Modified: cfe/trunk/Driver/Makefile cfe/trunk/lib/Driver/Tools.cpp cfe/trunk/test/Analysis/CFDateGC.m cfe/trunk/test/Analysis/CFNumber.c cfe/trunk/test/Analysis/CFRetainRelease_NSAssertionHandler.m cfe/trunk/test/Analysis/CGColorSpace.c cfe/trunk/test/Analysis/CheckNSError.m cfe/trunk/test/Analysis/MissingDealloc.m cfe/trunk/test/Analysis/NSPanel.m cfe/trunk/test/Analysis/NSString.m cfe/trunk/test/Analysis/NSWindow.m cfe/trunk/test/Analysis/NoReturn.m cfe/trunk/test/Analysis/ObjCProperties.m cfe/trunk/test/Analysis/ObjCRetSigs.m cfe/trunk/test/Analysis/PR2599.m cfe/trunk/test/Analysis/PR2978.m cfe/trunk/test/Analysis/array-struct.c cfe/trunk/test/Analysis/casts.m cfe/trunk/test/Analysis/cfref_PR2519.c cfe/trunk/test/Analysis/cfref_rdar6080742.c cfe/trunk/test/Analysis/complex.c cfe/trunk/test/Analysis/conditional-op-missing-lhs.c cfe/trunk/test/Analysis/dead-stores.c cfe/trunk/test/Analysis/dead-stores.m cfe/trunk/test/Analysis/exercise-ps.c cfe/trunk/test/Analysis/fields.c cfe/trunk/test/Analysis/func.c cfe/trunk/test/Analysis/misc-ps-basic-store.m cfe/trunk/test/Analysis/misc-ps-eager-assume.m cfe/trunk/test/Analysis/misc-ps-region-store.m cfe/trunk/test/Analysis/misc-ps.m cfe/trunk/test/Analysis/no-exit-cfg.c cfe/trunk/test/Analysis/null-deref-ps.c cfe/trunk/test/Analysis/outofbound.c cfe/trunk/test/Analysis/ptr-arith.c cfe/trunk/test/Analysis/rdar-6442306-1.m cfe/trunk/test/Analysis/rdar-6539791.c cfe/trunk/test/Analysis/rdar-6540084.m cfe/trunk/test/Analysis/rdar-6541136-region.c cfe/trunk/test/Analysis/rdar-6541136.c cfe/trunk/test/Analysis/rdar-6562655.m cfe/trunk/test/Analysis/rdar-6582778-basic-store.c cfe/trunk/test/Analysis/rdar-6600344-nil-receiver-undefined-struct-ret.m cfe/trunk/test/Analysis/refcnt_naming.m cfe/trunk/test/Analysis/region-1.m cfe/trunk/test/Analysis/region-only-test.c cfe/trunk/test/Analysis/retain-release-basic-store.m cfe/trunk/test/Analysis/retain-release-gc-only.m cfe/trunk/test/Analysis/retain-release-region-store.m cfe/trunk/test/Analysis/retain-release.m cfe/trunk/test/Analysis/stack-addr-ps.c cfe/trunk/test/Analysis/uninit-msg-expr.m cfe/trunk/test/Analysis/uninit-ps-rdar6145427.m cfe/trunk/test/Analysis/uninit-vals-ps-region.c cfe/trunk/test/Analysis/uninit-vals-ps.c cfe/trunk/test/Analysis/uninit-vals.c cfe/trunk/test/Analysis/uninit-vals.m cfe/trunk/test/Analysis/unused-ivars.m cfe/trunk/test/CodeGen/2007-11-29-ArraySizeFromInitializer.c cfe/trunk/test/CodeGen/2008-02-07-bitfield-bug.c cfe/trunk/test/CodeGen/2008-02-08-bitfield-bug.c cfe/trunk/test/CodeGen/2008-02-26-inline-asm-bug.c cfe/trunk/test/CodeGen/2008-07-17-no-emit-on-error.c cfe/trunk/test/CodeGen/2008-07-21-mixed-var-fn-decl.c cfe/trunk/test/CodeGen/2008-07-22-bitfield-init-after-zero-len-array.c cfe/trunk/test/CodeGen/2008-07-22-packed-bitfield-access.c cfe/trunk/test/CodeGen/2008-07-29-override-alias-decl.c cfe/trunk/test/CodeGen/2008-07-30-implicit-initialization.c cfe/trunk/test/CodeGen/2008-07-30-redef-of-bitcasted-decl.c cfe/trunk/test/CodeGen/2008-07-31-asm-labels.c cfe/trunk/test/CodeGen/2008-07-31-promotion-of-compound-pointer-arithmetic.c cfe/trunk/test/CodeGen/2008-08-04-void-pointer-arithmetic.c cfe/trunk/test/CodeGen/2008-08-19-cast-of-typedef.c cfe/trunk/test/CodeGen/2008-08-25-incompatible-cond-expr.m cfe/trunk/test/CodeGen/2008-09-22-bad-switch-type.c cfe/trunk/test/CodeGen/2008-12-02-logical-or-fold.c cfe/trunk/test/CodeGen/2009-01-21-invalid-debug-info.m cfe/trunk/test/CodeGen/2009-03-22-increment-bitfield.c cfe/trunk/test/CodeGen/OpaqueStruct.c cfe/trunk/test/CodeGen/PR2001-bitfield-reload.c cfe/trunk/test/CodeGen/PR2413-void-address-cast-error.c cfe/trunk/test/CodeGen/PR2643-null-store-to-bitfield.c cfe/trunk/test/CodeGen/PR2743-reference-missing-static.c cfe/trunk/test/CodeGen/PR3130-cond-constant.c cfe/trunk/test/CodeGen/PR3589-freestanding-libcalls.c cfe/trunk/test/CodeGen/PR3613-static-decl.c cfe/trunk/test/CodeGen/PR3709-int-to-pointer-sign.c cfe/trunk/test/CodeGen/address-space-cast.c cfe/trunk/test/CodeGen/address-space.c cfe/trunk/test/CodeGen/alias.c cfe/trunk/test/CodeGen/align-local.c cfe/trunk/test/CodeGen/alignof.c cfe/trunk/test/CodeGen/array.c cfe/trunk/test/CodeGen/asm.c cfe/trunk/test/CodeGen/atomic.c cfe/trunk/test/CodeGen/attr-nodebug.c cfe/trunk/test/CodeGen/attr-noinline.c cfe/trunk/test/CodeGen/attr-used.c cfe/trunk/test/CodeGen/attributes.c cfe/trunk/test/CodeGen/bitfield-assign.c cfe/trunk/test/CodeGen/bitfield-init.c cfe/trunk/test/CodeGen/bitfield.c cfe/trunk/test/CodeGen/blocks-1.c cfe/trunk/test/CodeGen/blocks.c cfe/trunk/test/CodeGen/bool-bitfield.c cfe/trunk/test/CodeGen/bool-convert.c cfe/trunk/test/CodeGen/bool-init.c cfe/trunk/test/CodeGen/boolassign.c cfe/trunk/test/CodeGen/builtin-count-zeros.c cfe/trunk/test/CodeGen/builtin-memfns.c cfe/trunk/test/CodeGen/builtin-rename.c cfe/trunk/test/CodeGen/builtin-stackaddress.c cfe/trunk/test/CodeGen/builtinmemcpy.c cfe/trunk/test/CodeGen/builtins-ffs_parity_popcount.c cfe/trunk/test/CodeGen/builtins-powi.c cfe/trunk/test/CodeGen/builtins-x86.c cfe/trunk/test/CodeGen/builtins.c cfe/trunk/test/CodeGen/builtinshufflevector.c cfe/trunk/test/CodeGen/c-strings.c cfe/trunk/test/CodeGen/cast-to-union.c cfe/trunk/test/CodeGen/cast.c cfe/trunk/test/CodeGen/cfstring.c cfe/trunk/test/CodeGen/cfstring2.c cfe/trunk/test/CodeGen/cleanup-stack.c cfe/trunk/test/CodeGen/complex.c cfe/trunk/test/CodeGen/compound-literal.c cfe/trunk/test/CodeGen/compound.c cfe/trunk/test/CodeGen/conditional-gnu-ext.c cfe/trunk/test/CodeGen/conditional.c cfe/trunk/test/CodeGen/const-init.c cfe/trunk/test/CodeGen/const-label-addr.c cfe/trunk/test/CodeGen/constant-comparison.c cfe/trunk/test/CodeGen/constructor-attribute.c cfe/trunk/test/CodeGen/cxx-condition.cpp cfe/trunk/test/CodeGen/cxx-default-arg.cpp cfe/trunk/test/CodeGen/cxx-value-init.cpp cfe/trunk/test/CodeGen/debug-info.c cfe/trunk/test/CodeGen/designated-initializers.c cfe/trunk/test/CodeGen/dllimport-dllexport.c cfe/trunk/test/CodeGen/dostmt.c cfe/trunk/test/CodeGen/emit-all-decls.c cfe/trunk/test/CodeGen/empty-union-init.c cfe/trunk/test/CodeGen/enum.c cfe/trunk/test/CodeGen/exprs.c cfe/trunk/test/CodeGen/ext-vector-shuffle.c cfe/trunk/test/CodeGen/ext-vector.c cfe/trunk/test/CodeGen/extern-block-var.c cfe/trunk/test/CodeGen/flexible-array-init.c cfe/trunk/test/CodeGen/func-decl-cleanup.c cfe/trunk/test/CodeGen/func-return-member.c cfe/trunk/test/CodeGen/function-attributes.c cfe/trunk/test/CodeGen/functions.c cfe/trunk/test/CodeGen/global-decls.c cfe/trunk/test/CodeGen/global-init.c cfe/trunk/test/CodeGen/global-with-initialiser.c cfe/trunk/test/CodeGen/globalinit.c cfe/trunk/test/CodeGen/incomplete-function-type.c cfe/trunk/test/CodeGen/indirect-goto.c cfe/trunk/test/CodeGen/init-with-member-expr.c cfe/trunk/test/CodeGen/init.c cfe/trunk/test/CodeGen/int-to-pointer.c cfe/trunk/test/CodeGen/kr-func-promote.c cfe/trunk/test/CodeGen/libcalls.c cfe/trunk/test/CodeGen/linkage-redecl.c cfe/trunk/test/CodeGen/long-double-x86.c cfe/trunk/test/CodeGen/mandel.c cfe/trunk/test/CodeGen/mangle.c cfe/trunk/test/CodeGen/merge-attrs.c cfe/trunk/test/CodeGen/merge-statics.c cfe/trunk/test/CodeGen/mmintrin-test.c cfe/trunk/test/CodeGen/offsetof.c cfe/trunk/test/CodeGen/opaque-pointer.c cfe/trunk/test/CodeGen/overloadable.c cfe/trunk/test/CodeGen/parameter-passing.c cfe/trunk/test/CodeGen/pointer-arithmetic.c cfe/trunk/test/CodeGen/pointer-cmp-type.c cfe/trunk/test/CodeGen/pointer-to-int.c cfe/trunk/test/CodeGen/private-extern.c cfe/trunk/test/CodeGen/rdr-6098585-default-after-caserange.c cfe/trunk/test/CodeGen/rdr-6098585-default-fallthrough-to-caserange.c cfe/trunk/test/CodeGen/rdr-6098585-empty-case-range.c cfe/trunk/test/CodeGen/rdr-6098585-fallthrough-to-empty-range.c cfe/trunk/test/CodeGen/rdr-6098585-unsigned-caserange.c cfe/trunk/test/CodeGen/shared-string-literals.c cfe/trunk/test/CodeGen/sizeof-vla.c cfe/trunk/test/CodeGen/statements.c cfe/trunk/test/CodeGen/static-forward-decl-fun.c cfe/trunk/test/CodeGen/static-forward-decl.c cfe/trunk/test/CodeGen/static-local-union.c cfe/trunk/test/CodeGen/static-order.c cfe/trunk/test/CodeGen/staticinit.c cfe/trunk/test/CodeGen/stdcall-fastcall.c cfe/trunk/test/CodeGen/string-init.c cfe/trunk/test/CodeGen/string-literal.c cfe/trunk/test/CodeGen/struct-comma.c cfe/trunk/test/CodeGen/struct-copy.c cfe/trunk/test/CodeGen/struct-init.c cfe/trunk/test/CodeGen/struct-passing.c cfe/trunk/test/CodeGen/struct-x86-darwin.c cfe/trunk/test/CodeGen/struct.c cfe/trunk/test/CodeGen/switch.c cfe/trunk/test/CodeGen/tentative-array.c cfe/trunk/test/CodeGen/typedef-func.c cfe/trunk/test/CodeGen/typedef.c cfe/trunk/test/CodeGen/types.c cfe/trunk/test/CodeGen/union-init.c cfe/trunk/test/CodeGen/union.c cfe/trunk/test/CodeGen/unwind-attr.c cfe/trunk/test/CodeGen/var-align.c cfe/trunk/test/CodeGen/vector.c cfe/trunk/test/CodeGen/vla.c cfe/trunk/test/CodeGen/volatile.c cfe/trunk/test/CodeGen/weak-global.c cfe/trunk/test/CodeGen/whilestmt.c cfe/trunk/test/CodeGen/writable-strings.c cfe/trunk/test/CodeGen/x86-inline-asm.c cfe/trunk/test/CodeGen/x86_32-arguments.c cfe/trunk/test/CodeGen/x86_64-arguments.c cfe/trunk/test/CodeGenCXX/__null.cpp cfe/trunk/test/CodeGenCXX/expr.cpp cfe/trunk/test/CodeGenCXX/mangle.cpp cfe/trunk/test/CodeGenObjC/2008-10-23-invalid-icmp.m cfe/trunk/test/CodeGenObjC/bitfield-1.m cfe/trunk/test/CodeGenObjC/bitfield-ivar-metadata.m cfe/trunk/test/CodeGenObjC/blocks-unsupported.m cfe/trunk/test/CodeGenObjC/blocks.m cfe/trunk/test/CodeGenObjC/category-super-class-meth.m cfe/trunk/test/CodeGenObjC/class-getter-dotsyntax.m cfe/trunk/test/CodeGenObjC/class-type.m cfe/trunk/test/CodeGenObjC/compatibility-alias.m cfe/trunk/test/CodeGenObjC/constant-strings.m cfe/trunk/test/CodeGenObjC/continuation-class.m cfe/trunk/test/CodeGenObjC/dot-syntax-1.m cfe/trunk/test/CodeGenObjC/dot-syntax.m cfe/trunk/test/CodeGenObjC/encode-test-1.m cfe/trunk/test/CodeGenObjC/encode-test-2.m cfe/trunk/test/CodeGenObjC/encode-test-3.m cfe/trunk/test/CodeGenObjC/encode-test-4.m cfe/trunk/test/CodeGenObjC/encode-test.m cfe/trunk/test/CodeGenObjC/forward-class-impl-metadata.m cfe/trunk/test/CodeGenObjC/hidden.m cfe/trunk/test/CodeGenObjC/implicit-property.m cfe/trunk/test/CodeGenObjC/link-errors.m cfe/trunk/test/CodeGenObjC/message-arrays.m cfe/trunk/test/CodeGenObjC/messages-2.m cfe/trunk/test/CodeGenObjC/messages.m cfe/trunk/test/CodeGenObjC/newproperty-nested-synthesis-1.m cfe/trunk/test/CodeGenObjC/no-category-class.m cfe/trunk/test/CodeGenObjC/objc-align.m cfe/trunk/test/CodeGenObjC/objc2-property-encode.m cfe/trunk/test/CodeGenObjC/objc2-protocol-enc.m cfe/trunk/test/CodeGenObjC/objc2-retain-codegen.m cfe/trunk/test/CodeGenObjC/objc2-strong-cast-1.m cfe/trunk/test/CodeGenObjC/objc2-strong-cast.m cfe/trunk/test/CodeGenObjC/objc2-weak-compare.m cfe/trunk/test/CodeGenObjC/objc2-weak-ivar.m cfe/trunk/test/CodeGenObjC/overloadable.m cfe/trunk/test/CodeGenObjC/predefined-expr-in-method.m cfe/trunk/test/CodeGenObjC/property-aggr-type.m cfe/trunk/test/CodeGenObjC/property-agrr-getter.m cfe/trunk/test/CodeGenObjC/property-getter-dot-syntax.m cfe/trunk/test/CodeGenObjC/property-incr-decr-1.m cfe/trunk/test/CodeGenObjC/property-setter-attr.m cfe/trunk/test/CodeGenObjC/property.m cfe/trunk/test/CodeGenObjC/protocols-lazy.m cfe/trunk/test/CodeGenObjC/runtime-fns.m cfe/trunk/test/CodeGenObjC/super-classmethod-category.m cfe/trunk/test/CodeGenObjC/super-dotsyntax-property.m cfe/trunk/test/CodeGenObjC/synchronized.m cfe/trunk/test/CodeGenObjC/unname-bf-metadata.m cfe/trunk/test/Coverage/ast-printing.c cfe/trunk/test/Coverage/ast-printing.m cfe/trunk/test/Coverage/codegen-gnu.m cfe/trunk/test/Coverage/codegen-next.m cfe/trunk/test/Coverage/codegen.c cfe/trunk/test/Coverage/html-diagnostics.c cfe/trunk/test/Coverage/html-print.c cfe/trunk/test/Coverage/parse-callbacks.c cfe/trunk/test/Coverage/parse-callbacks.m cfe/trunk/test/Coverage/serialize.c cfe/trunk/test/Coverage/serialize.m cfe/trunk/test/Coverage/targets.c cfe/trunk/test/Coverage/verbose.c cfe/trunk/test/Driver/hello.c cfe/trunk/test/Driver/pth.c cfe/trunk/test/Frontend/dependency-gen.c cfe/trunk/test/Frontend/rewrite-macros.c cfe/trunk/test/Frontend/stdin.c cfe/trunk/test/Lexer/11-27-2007-FloatLiterals.c cfe/trunk/test/Lexer/badstring_in_if0.c cfe/trunk/test/Lexer/block_cmt_end.c cfe/trunk/test/Lexer/c90.c cfe/trunk/test/Lexer/constants.c cfe/trunk/test/Lexer/cxx0x_keyword.cpp cfe/trunk/test/Lexer/cxx0x_keyword_as_cxx98.cpp cfe/trunk/test/Lexer/digraph.c cfe/trunk/test/Lexer/dollar-idents.c cfe/trunk/test/Lexer/escape_newline.c cfe/trunk/test/Lexer/multiple-include.c cfe/trunk/test/Lexer/number.c cfe/trunk/test/Lexer/numeric-literal-trash.c cfe/trunk/test/Lexer/pragma-mark.c cfe/trunk/test/Lexer/rdr-6096838-2.c cfe/trunk/test/Lexer/rdr-6096838.c cfe/trunk/test/Lexer/token-concat.c cfe/trunk/test/Lexer/unknown-char.c cfe/trunk/test/Misc/caret-diags.c cfe/trunk/test/Misc/diag-checker.c cfe/trunk/test/Misc/emit-html.c cfe/trunk/test/Parser/2008-10-31-parse-noop-failure.c cfe/trunk/test/Parser/CompoundStmtScope.c cfe/trunk/test/Parser/MicrosoftExtensions.c cfe/trunk/test/Parser/argument_qualified.c cfe/trunk/test/Parser/argument_redef.c cfe/trunk/test/Parser/argument_scope.c cfe/trunk/test/Parser/asm.c cfe/trunk/test/Parser/attributes.c cfe/trunk/test/Parser/bad-control.c cfe/trunk/test/Parser/block-block-storageclass.c cfe/trunk/test/Parser/block-pointer-decl.c cfe/trunk/test/Parser/builtin_classify_type.c cfe/trunk/test/Parser/builtin_types_compatible.c cfe/trunk/test/Parser/c-namespace.c cfe/trunk/test/Parser/char-literal-printing.c cfe/trunk/test/Parser/check-objc2-syntax-1.m cfe/trunk/test/Parser/check-syntax-1.m cfe/trunk/test/Parser/check_cast.c cfe/trunk/test/Parser/compound_literal.c cfe/trunk/test/Parser/control-scope.c cfe/trunk/test/Parser/cxx-bool.cpp cfe/trunk/test/Parser/cxx-casting.cpp cfe/trunk/test/Parser/cxx-class.cpp cfe/trunk/test/Parser/cxx-condition.cpp cfe/trunk/test/Parser/cxx-exception-spec.cpp cfe/trunk/test/Parser/cxx-reference.cpp cfe/trunk/test/Parser/cxx-template-decl.cpp cfe/trunk/test/Parser/cxx-try.cpp cfe/trunk/test/Parser/cxx-typeid.cpp cfe/trunk/test/Parser/cxx-typeof.cpp cfe/trunk/test/Parser/cxx-using-directive.cpp cfe/trunk/test/Parser/cxx-variadic-func.cpp cfe/trunk/test/Parser/cxx0x-rvalue-reference.cpp cfe/trunk/test/Parser/declarators.c cfe/trunk/test/Parser/designator.c cfe/trunk/test/Parser/encode.m cfe/trunk/test/Parser/enhanced-proto-1.m cfe/trunk/test/Parser/expressions.c cfe/trunk/test/Parser/expressions.m cfe/trunk/test/Parser/extension.c cfe/trunk/test/Parser/function-decls.c cfe/trunk/test/Parser/goto-ident.c cfe/trunk/test/Parser/if-scope-c90.c cfe/trunk/test/Parser/if-scope-c99.c cfe/trunk/test/Parser/implicit-casts.c cfe/trunk/test/Parser/method-prototype-1.m cfe/trunk/test/Parser/namelookup-bug-1.c cfe/trunk/test/Parser/namelookup-bug-2.c cfe/trunk/test/Parser/objc-alias-printing.m cfe/trunk/test/Parser/objc-category-neg-1.m cfe/trunk/test/Parser/objc-forcollection-1.m cfe/trunk/test/Parser/objc-forcollection-neg-2.m cfe/trunk/test/Parser/objc-forcollection-neg.m cfe/trunk/test/Parser/objc-foreach-error-1.m cfe/trunk/test/Parser/objc-foreach-syntax.m cfe/trunk/test/Parser/objc-init.m cfe/trunk/test/Parser/objc-interfaces.m cfe/trunk/test/Parser/objc-messaging-1.m cfe/trunk/test/Parser/objc-messaging-neg-1.m cfe/trunk/test/Parser/objc-missing-impl.m cfe/trunk/test/Parser/objc-property-syntax.m cfe/trunk/test/Parser/objc-quirks.m cfe/trunk/test/Parser/objc-try-catch-1.m cfe/trunk/test/Parser/objc-type-printing.m cfe/trunk/test/Parser/parmvardecl_conversion.c cfe/trunk/test/Parser/pointer-arithmetic.c cfe/trunk/test/Parser/pointer_promotion.c cfe/trunk/test/Parser/pragma-pack.c cfe/trunk/test/Parser/prefix-attributes.m cfe/trunk/test/Parser/promote_types_in_proto.c cfe/trunk/test/Parser/recovery.c cfe/trunk/test/Parser/selector-1.m cfe/trunk/test/Parser/statements.c cfe/trunk/test/Parser/struct-recursion.c cfe/trunk/test/Parser/traditional_arg_scope.c cfe/trunk/test/Parser/typeof.c cfe/trunk/test/Parser/types.c cfe/trunk/test/Preprocessor/_Pragma-dependency.c cfe/trunk/test/Preprocessor/_Pragma-location.c cfe/trunk/test/Preprocessor/_Pragma-physloc.c cfe/trunk/test/Preprocessor/_Pragma-poison.c cfe/trunk/test/Preprocessor/_Pragma-syshdr.c cfe/trunk/test/Preprocessor/_Pragma-syshdr2.c cfe/trunk/test/Preprocessor/assembler-with-cpp.c cfe/trunk/test/Preprocessor/builtin_line.c cfe/trunk/test/Preprocessor/c99-6_10_3_3_p4.c cfe/trunk/test/Preprocessor/c99-6_10_3_4_p5.c cfe/trunk/test/Preprocessor/c99-6_10_3_4_p6.c cfe/trunk/test/Preprocessor/c99-6_10_3_4_p7.c cfe/trunk/test/Preprocessor/c99-6_10_3_4_p9.c cfe/trunk/test/Preprocessor/clang_headers.c cfe/trunk/test/Preprocessor/comment_save.c cfe/trunk/test/Preprocessor/comment_save_if.c cfe/trunk/test/Preprocessor/comment_save_macro.c cfe/trunk/test/Preprocessor/cxx_and.cpp cfe/trunk/test/Preprocessor/cxx_bitand.cpp cfe/trunk/test/Preprocessor/cxx_bitor.cpp cfe/trunk/test/Preprocessor/cxx_compl.cpp cfe/trunk/test/Preprocessor/cxx_not.cpp cfe/trunk/test/Preprocessor/cxx_not_eq.cpp cfe/trunk/test/Preprocessor/cxx_oper_keyword.cpp cfe/trunk/test/Preprocessor/cxx_oper_spelling.cpp cfe/trunk/test/Preprocessor/cxx_or.cpp cfe/trunk/test/Preprocessor/cxx_true.cpp cfe/trunk/test/Preprocessor/cxx_xor.cpp cfe/trunk/test/Preprocessor/disabled-cond-diags.c cfe/trunk/test/Preprocessor/dump_macros.c cfe/trunk/test/Preprocessor/dumptokens_phyloc.c cfe/trunk/test/Preprocessor/expr_comma.c cfe/trunk/test/Preprocessor/expr_invalid_tok.c cfe/trunk/test/Preprocessor/expr_liveness.c cfe/trunk/test/Preprocessor/expr_usual_conversions.c cfe/trunk/test/Preprocessor/extension-warning.c cfe/trunk/test/Preprocessor/function_macro_file.c cfe/trunk/test/Preprocessor/hash_line.c cfe/trunk/test/Preprocessor/hash_space.c cfe/trunk/test/Preprocessor/header_lookup1.c cfe/trunk/test/Preprocessor/if_warning.c cfe/trunk/test/Preprocessor/ifdef-recover.c cfe/trunk/test/Preprocessor/import_self.c cfe/trunk/test/Preprocessor/include-directive1.c cfe/trunk/test/Preprocessor/include-directive2.c cfe/trunk/test/Preprocessor/include-directive3.c cfe/trunk/test/Preprocessor/include-pth.c cfe/trunk/test/Preprocessor/indent_macro.c cfe/trunk/test/Preprocessor/line-directive.c cfe/trunk/test/Preprocessor/macro_arg_keyword.c cfe/trunk/test/Preprocessor/macro_disable.c cfe/trunk/test/Preprocessor/macro_disable2.c cfe/trunk/test/Preprocessor/macro_disable3.c cfe/trunk/test/Preprocessor/macro_disable4.c cfe/trunk/test/Preprocessor/macro_expand.c cfe/trunk/test/Preprocessor/macro_expandloc.c cfe/trunk/test/Preprocessor/macro_expandloc2.c cfe/trunk/test/Preprocessor/macro_fn_comma_swallow.c cfe/trunk/test/Preprocessor/macro_fn_disable_expand.c cfe/trunk/test/Preprocessor/macro_fn_lparen_scan.c cfe/trunk/test/Preprocessor/macro_fn_lparen_scan2.c cfe/trunk/test/Preprocessor/macro_fn_placemarker.c cfe/trunk/test/Preprocessor/macro_fn_preexpand.c cfe/trunk/test/Preprocessor/macro_fn_varargs_iso.c cfe/trunk/test/Preprocessor/macro_fn_varargs_named.c cfe/trunk/test/Preprocessor/macro_misc.c cfe/trunk/test/Preprocessor/macro_not_define.c cfe/trunk/test/Preprocessor/macro_paste_bad.c cfe/trunk/test/Preprocessor/macro_paste_bcpl_comment.c cfe/trunk/test/Preprocessor/macro_paste_c_block_comment.c cfe/trunk/test/Preprocessor/macro_paste_commaext.c cfe/trunk/test/Preprocessor/macro_paste_empty.c cfe/trunk/test/Preprocessor/macro_paste_hard.c cfe/trunk/test/Preprocessor/macro_paste_hashhash.c cfe/trunk/test/Preprocessor/macro_paste_mscomment.c cfe/trunk/test/Preprocessor/macro_paste_none.c cfe/trunk/test/Preprocessor/macro_paste_simple.c cfe/trunk/test/Preprocessor/macro_paste_spacing.c cfe/trunk/test/Preprocessor/macro_rescan.c cfe/trunk/test/Preprocessor/macro_rescan2.c cfe/trunk/test/Preprocessor/macro_rescan_varargs.c cfe/trunk/test/Preprocessor/macro_rparen_scan.c cfe/trunk/test/Preprocessor/macro_rparen_scan2.c cfe/trunk/test/Preprocessor/macro_space.c cfe/trunk/test/Preprocessor/mi_opt.c cfe/trunk/test/Preprocessor/objc-pp.m cfe/trunk/test/Preprocessor/output_paste_avoid.c cfe/trunk/test/Preprocessor/paste_bad.c cfe/trunk/test/Preprocessor/poison.c cfe/trunk/test/Preprocessor/poison_expansion.c cfe/trunk/test/Preprocessor/pr2086.c cfe/trunk/test/Preprocessor/pragma_microsoft.c cfe/trunk/test/Preprocessor/pragma_unknown.c cfe/trunk/test/Preprocessor/print_line_track.c cfe/trunk/test/Preprocessor/skipping_unclean.c cfe/trunk/test/Preprocessor/stringize_misc.c cfe/trunk/test/Preprocessor/stringize_space.c cfe/trunk/test/Preprocessor/stringize_space2.c cfe/trunk/test/Preprocessor/undef-error.c cfe/trunk/test/Preprocessor/unterminated.c cfe/trunk/test/Rewriter/block-test.c cfe/trunk/test/Rewriter/crash.m cfe/trunk/test/Rewriter/finally.m cfe/trunk/test/Rewriter/id-test-3.m cfe/trunk/test/Rewriter/ivar-encoding-1.m cfe/trunk/test/Rewriter/ivar-encoding-2.m cfe/trunk/test/Rewriter/metadata-test-1.m cfe/trunk/test/Rewriter/metadata-test-2.m cfe/trunk/test/Rewriter/method-encoding-1.m cfe/trunk/test/Rewriter/objc-encoding-bug-1.m cfe/trunk/test/Rewriter/objc-ivar-receiver-1.m cfe/trunk/test/Rewriter/objc-string-concat-1.m cfe/trunk/test/Rewriter/objc-super-test.m cfe/trunk/test/Rewriter/objc-synchronized-1.m cfe/trunk/test/Rewriter/properties.m cfe/trunk/test/Rewriter/protocol-rewrite-1.m cfe/trunk/test/Rewriter/rewrite-api-bug.m cfe/trunk/test/Rewriter/rewrite-foreach-1.m cfe/trunk/test/Rewriter/rewrite-foreach-2.m cfe/trunk/test/Rewriter/rewrite-foreach-3.m cfe/trunk/test/Rewriter/rewrite-foreach-4.m cfe/trunk/test/Rewriter/rewrite-foreach-5.m cfe/trunk/test/Rewriter/rewrite-foreach-6.m cfe/trunk/test/Rewriter/rewrite-nest.m cfe/trunk/test/Rewriter/rewrite-protocol-type-1.m cfe/trunk/test/Rewriter/rewrite-try-catch.m cfe/trunk/test/Rewriter/static-type-protocol-1.m cfe/trunk/test/Rewriter/undecl-objc-h.m cfe/trunk/test/Rewriter/undeclared-method-1.m cfe/trunk/test/Rewriter/undef-field-reference-1.m cfe/trunk/test/Rewriter/va-method.m cfe/trunk/test/Sema/128bitint.c cfe/trunk/test/Sema/PR2727.c cfe/trunk/test/Sema/PR2728.c cfe/trunk/test/Sema/PR2919-builtin-types-compat-strips-crv.c cfe/trunk/test/Sema/PR2923.c cfe/trunk/test/Sema/PR2963-enum-constant.c cfe/trunk/test/Sema/address-constant.c cfe/trunk/test/Sema/address_spaces.c cfe/trunk/test/Sema/align-x86.c cfe/trunk/test/Sema/annotate.c cfe/trunk/test/Sema/anonymous-struct-union.c cfe/trunk/test/Sema/arg-duplicate.c cfe/trunk/test/Sema/arg-scope-c99.c cfe/trunk/test/Sema/arg-scope.c cfe/trunk/test/Sema/array-constraint.c cfe/trunk/test/Sema/array-declared-as-incorrect-type.c cfe/trunk/test/Sema/array-init.c cfe/trunk/test/Sema/asm.c cfe/trunk/test/Sema/assign-null.c cfe/trunk/test/Sema/assign.c cfe/trunk/test/Sema/ast-print.c cfe/trunk/test/Sema/attr-aligned.c cfe/trunk/test/Sema/attr-cleanup.c cfe/trunk/test/Sema/attr-deprecated.c cfe/trunk/test/Sema/attr-mode.c cfe/trunk/test/Sema/attr-nodebug.c cfe/trunk/test/Sema/attr-noinline.c cfe/trunk/test/Sema/attr-noreturn.c cfe/trunk/test/Sema/attr-unused.c cfe/trunk/test/Sema/attr-used.c cfe/trunk/test/Sema/attr-warn_unused_result.c cfe/trunk/test/Sema/attr-weak.c cfe/trunk/test/Sema/bitfield-layout.c cfe/trunk/test/Sema/bitfield.c cfe/trunk/test/Sema/block-args.c cfe/trunk/test/Sema/block-as-object.m cfe/trunk/test/Sema/block-byref-args.c cfe/trunk/test/Sema/block-call.c cfe/trunk/test/Sema/block-explicit-return-type.c cfe/trunk/test/Sema/block-labels.c cfe/trunk/test/Sema/block-literal.c cfe/trunk/test/Sema/block-misc.c cfe/trunk/test/Sema/block-return.c cfe/trunk/test/Sema/block-storageclass.c cfe/trunk/test/Sema/block-syntax-error.c cfe/trunk/test/Sema/builtin-object-size.c cfe/trunk/test/Sema/builtin-prefetch.c cfe/trunk/test/Sema/builtin-stackaddress.c cfe/trunk/test/Sema/builtins.c cfe/trunk/test/Sema/c89-2.c cfe/trunk/test/Sema/c89.c cfe/trunk/test/Sema/callingconv.c cfe/trunk/test/Sema/carbon.c cfe/trunk/test/Sema/cast-to-union.c cfe/trunk/test/Sema/cast.c cfe/trunk/test/Sema/check-increment.c cfe/trunk/test/Sema/compare.c cfe/trunk/test/Sema/complex-int.c cfe/trunk/test/Sema/complex-promotion.c cfe/trunk/test/Sema/compound-literal.c cfe/trunk/test/Sema/conditional-expr.c cfe/trunk/test/Sema/conditional.c cfe/trunk/test/Sema/const-eval.c cfe/trunk/test/Sema/const-ptr-int-ptr-cast.c cfe/trunk/test/Sema/constant-builtins-2.c cfe/trunk/test/Sema/constant-builtins.c cfe/trunk/test/Sema/constructor-attribute.c cfe/trunk/test/Sema/darwin-align-cast.c cfe/trunk/test/Sema/decl-invalid.c cfe/trunk/test/Sema/decl-type-merging.c cfe/trunk/test/Sema/declspec.c cfe/trunk/test/Sema/default.c cfe/trunk/test/Sema/default1.c cfe/trunk/test/Sema/deref.c cfe/trunk/test/Sema/designated-initializers.c cfe/trunk/test/Sema/dllimport-dllexport.c cfe/trunk/test/Sema/enum.c cfe/trunk/test/Sema/expr-address-of.c cfe/trunk/test/Sema/expr-comma-c89.c cfe/trunk/test/Sema/expr-comma.c cfe/trunk/test/Sema/exprs.c cfe/trunk/test/Sema/ext_vector_components.c cfe/trunk/test/Sema/flexible-array-init.c cfe/trunk/test/Sema/floating-point-compare.c cfe/trunk/test/Sema/for.c cfe/trunk/test/Sema/format-attribute.c cfe/trunk/test/Sema/format-strings.c cfe/trunk/test/Sema/function-ptr.c cfe/trunk/test/Sema/function-redecl.c cfe/trunk/test/Sema/function.c cfe/trunk/test/Sema/heinous-extensions-off.c cfe/trunk/test/Sema/heinous-extensions-on.c cfe/trunk/test/Sema/i-c-e.c cfe/trunk/test/Sema/if-empty-body.c cfe/trunk/test/Sema/illegal-types.c cfe/trunk/test/Sema/implicit-builtin-decl.c cfe/trunk/test/Sema/implicit-builtin-freestanding.c cfe/trunk/test/Sema/implicit-builtin-redecl.c cfe/trunk/test/Sema/implicit-cast.c cfe/trunk/test/Sema/implicit-decl.c cfe/trunk/test/Sema/implicit-def.c cfe/trunk/test/Sema/implicit-int.c cfe/trunk/test/Sema/incompatible-sign.c cfe/trunk/test/Sema/incomplete-call.c cfe/trunk/test/Sema/incomplete-decl.c cfe/trunk/test/Sema/init-struct-qualified.c cfe/trunk/test/Sema/init.c cfe/trunk/test/Sema/int-arith-convert.c cfe/trunk/test/Sema/invalid-decl.c cfe/trunk/test/Sema/invalid-init-diag.c cfe/trunk/test/Sema/invalid-struct-init.c cfe/trunk/test/Sema/knr-def-call.c cfe/trunk/test/Sema/member-reference.c cfe/trunk/test/Sema/merge-decls.c cfe/trunk/test/Sema/ms-fuzzy-asm.c cfe/trunk/test/Sema/nested-redef.c cfe/trunk/test/Sema/nonnull.c cfe/trunk/test/Sema/offsetof.c cfe/trunk/test/Sema/overloadable-complex.c cfe/trunk/test/Sema/overloadable.c cfe/trunk/test/Sema/pointer-addition.c cfe/trunk/test/Sema/pointer-subtract-compat.c cfe/trunk/test/Sema/pragma-pack-2.c cfe/trunk/test/Sema/pragma-pack.c cfe/trunk/test/Sema/pragma-unused.c cfe/trunk/test/Sema/predef.c cfe/trunk/test/Sema/predefined-function.c cfe/trunk/test/Sema/rdar6248119.m cfe/trunk/test/Sema/rdr6094103-unordered-compare-promote.c cfe/trunk/test/Sema/recover-goto.c cfe/trunk/test/Sema/redefinition.c cfe/trunk/test/Sema/scope-check.c cfe/trunk/test/Sema/self-comparison.c cfe/trunk/test/Sema/sentinel-attribute.c cfe/trunk/test/Sema/shift.c cfe/trunk/test/Sema/static-init.c cfe/trunk/test/Sema/stdcall-fastcall.c cfe/trunk/test/Sema/stmt_exprs.c cfe/trunk/test/Sema/struct-cast.c cfe/trunk/test/Sema/struct-compat.c cfe/trunk/test/Sema/struct-decl.c cfe/trunk/test/Sema/struct-packed-align.c cfe/trunk/test/Sema/switch.c cfe/trunk/test/Sema/tentative-decls.c cfe/trunk/test/Sema/text-diag.c cfe/trunk/test/Sema/transparent-union-pointer.c cfe/trunk/test/Sema/type-spec-struct-union.c cfe/trunk/test/Sema/typecheck-binop.c cfe/trunk/test/Sema/typedef-prototype.c cfe/trunk/test/Sema/typedef-redef.c cfe/trunk/test/Sema/typedef-retain.c cfe/trunk/test/Sema/typedef-variable-type.c cfe/trunk/test/Sema/types.c cfe/trunk/test/Sema/unnamed-bitfield-init.c cfe/trunk/test/Sema/unused-expr.c cfe/trunk/test/Sema/usual-float.c cfe/trunk/test/Sema/va_arg_x86_64.c cfe/trunk/test/Sema/var-redecl.c cfe/trunk/test/Sema/varargs.c cfe/trunk/test/Sema/vector-assign.c cfe/trunk/test/Sema/vector-cast.c cfe/trunk/test/Sema/vector-init.c cfe/trunk/test/Sema/vla.c cfe/trunk/test/Sema/void_arg.c cfe/trunk/test/Sema/warn-freestanding-complex.c cfe/trunk/test/Sema/wchar.c cfe/trunk/test/SemaCXX/__null.cpp cfe/trunk/test/SemaCXX/abstract.cpp cfe/trunk/test/SemaCXX/addr-of-overloaded-function.cpp cfe/trunk/test/SemaCXX/address-of.cpp cfe/trunk/test/SemaCXX/aggregate-initialization.cpp cfe/trunk/test/SemaCXX/anonymous-union.cpp cfe/trunk/test/SemaCXX/attr-unavailable.cpp cfe/trunk/test/SemaCXX/basic_lookup_argdep.cpp cfe/trunk/test/SemaCXX/blocks.cpp cfe/trunk/test/SemaCXX/bool.cpp cfe/trunk/test/SemaCXX/carbon.cpp cfe/trunk/test/SemaCXX/class-names.cpp cfe/trunk/test/SemaCXX/class.cpp cfe/trunk/test/SemaCXX/complex-overload.cpp cfe/trunk/test/SemaCXX/condition.cpp cfe/trunk/test/SemaCXX/const-cast.cpp cfe/trunk/test/SemaCXX/constructor-initializer.cpp cfe/trunk/test/SemaCXX/constructor.cpp cfe/trunk/test/SemaCXX/conversion-function.cpp cfe/trunk/test/SemaCXX/convert-to-bool.cpp cfe/trunk/test/SemaCXX/converting-constructor.cpp cfe/trunk/test/SemaCXX/copy-initialization.cpp cfe/trunk/test/SemaCXX/dcl_init_aggr.cpp cfe/trunk/test/SemaCXX/decl-expr-ambiguity.cpp cfe/trunk/test/SemaCXX/default1.cpp cfe/trunk/test/SemaCXX/default2.cpp cfe/trunk/test/SemaCXX/dependent-types.cpp cfe/trunk/test/SemaCXX/derived-to-base-ambig.cpp cfe/trunk/test/SemaCXX/destructor.cpp cfe/trunk/test/SemaCXX/direct-initializer.cpp cfe/trunk/test/SemaCXX/do-while-scope.cpp cfe/trunk/test/SemaCXX/dynamic-cast.cpp cfe/trunk/test/SemaCXX/elaborated-type-specifier.cpp cfe/trunk/test/SemaCXX/enum.cpp cfe/trunk/test/SemaCXX/expressions.cpp cfe/trunk/test/SemaCXX/fntype-decl.cpp cfe/trunk/test/SemaCXX/function-redecl.cpp cfe/trunk/test/SemaCXX/function-type-qual.cpp cfe/trunk/test/SemaCXX/functional-cast.cpp cfe/trunk/test/SemaCXX/i-c-e-cxx.cpp cfe/trunk/test/SemaCXX/implicit-int.cpp cfe/trunk/test/SemaCXX/inherit.cpp cfe/trunk/test/SemaCXX/linkage-spec.cpp cfe/trunk/test/SemaCXX/member-expr.cpp cfe/trunk/test/SemaCXX/member-name-lookup.cpp cfe/trunk/test/SemaCXX/member-pointer.cpp cfe/trunk/test/SemaCXX/ms-exception-spec.cpp cfe/trunk/test/SemaCXX/namespace.cpp cfe/trunk/test/SemaCXX/nested-name-spec.cpp cfe/trunk/test/SemaCXX/new-delete.cpp cfe/trunk/test/SemaCXX/no-implicit-builtin-decls.cpp cfe/trunk/test/SemaCXX/overload-call-copycon.cpp cfe/trunk/test/SemaCXX/overload-call.cpp cfe/trunk/test/SemaCXX/overload-decl.cpp cfe/trunk/test/SemaCXX/overload-member-call.cpp cfe/trunk/test/SemaCXX/overloaded-builtin-operators.cpp cfe/trunk/test/SemaCXX/overloaded-operator-decl.cpp cfe/trunk/test/SemaCXX/overloaded-operator.cpp cfe/trunk/test/SemaCXX/qualification-conversion.cpp cfe/trunk/test/SemaCXX/qualified-id-lookup.cpp cfe/trunk/test/SemaCXX/qualified-names-diag.cpp cfe/trunk/test/SemaCXX/qualified-names-print.cpp cfe/trunk/test/SemaCXX/references.cpp cfe/trunk/test/SemaCXX/reinterpret-cast.cpp cfe/trunk/test/SemaCXX/reinterpret-fn-obj-pedantic.cpp cfe/trunk/test/SemaCXX/return-stack-addr.cpp cfe/trunk/test/SemaCXX/rval-references.cpp cfe/trunk/test/SemaCXX/statements.cpp cfe/trunk/test/SemaCXX/static-assert.cpp cfe/trunk/test/SemaCXX/static-cast.cpp cfe/trunk/test/SemaCXX/static-initializers.cpp cfe/trunk/test/SemaCXX/template-specialization.cpp cfe/trunk/test/SemaCXX/this.cpp cfe/trunk/test/SemaCXX/try-catch.cpp cfe/trunk/test/SemaCXX/type-convert-construct.cpp cfe/trunk/test/SemaCXX/type-dependent-exprs.cpp cfe/trunk/test/SemaCXX/type-traits.cpp cfe/trunk/test/SemaCXX/typedef-redecl.cpp cfe/trunk/test/SemaCXX/typeid.cpp cfe/trunk/test/SemaCXX/user-defined-conversions.cpp cfe/trunk/test/SemaCXX/using-directive.cpp cfe/trunk/test/SemaCXX/vararg-non-pod.cpp cfe/trunk/test/SemaCXX/virtuals.cpp cfe/trunk/test/SemaCXX/warn-for-var-in-else.cpp cfe/trunk/test/SemaCXX/wchar_t.cpp cfe/trunk/test/SemaObjC/DoubleMethod.m cfe/trunk/test/SemaObjC/access-property-getter.m cfe/trunk/test/SemaObjC/alias-test-1.m cfe/trunk/test/SemaObjC/alias-test-2.m cfe/trunk/test/SemaObjC/argument-checking.m cfe/trunk/test/SemaObjC/at-defs.m cfe/trunk/test/SemaObjC/attr-cleanup.m cfe/trunk/test/SemaObjC/attr-deprecated.m cfe/trunk/test/SemaObjC/attr-objc-exception.m cfe/trunk/test/SemaObjC/attr-objc-gc.m cfe/trunk/test/SemaObjC/bad-receiver-1.m cfe/trunk/test/SemaObjC/block-ivar.m cfe/trunk/test/SemaObjC/blocks.m cfe/trunk/test/SemaObjC/call-super-2.m cfe/trunk/test/SemaObjC/catch-stmt.m cfe/trunk/test/SemaObjC/category-1.m cfe/trunk/test/SemaObjC/category-method-lookup-2.m cfe/trunk/test/SemaObjC/category-method-lookup.m cfe/trunk/test/SemaObjC/check-dup-decl-methods-1.m cfe/trunk/test/SemaObjC/check-dup-objc-decls-1.m cfe/trunk/test/SemaObjC/class-bitfield.m cfe/trunk/test/SemaObjC/class-conforming-protocol-1.m cfe/trunk/test/SemaObjC/class-def-test-1.m cfe/trunk/test/SemaObjC/class-extension-dup-methods.m cfe/trunk/test/SemaObjC/class-impl-1.m cfe/trunk/test/SemaObjC/class-method-lookup.m cfe/trunk/test/SemaObjC/class-proto-1.m cfe/trunk/test/SemaObjC/cocoa.m cfe/trunk/test/SemaObjC/compare-qualified-id.m cfe/trunk/test/SemaObjC/compatible-protocol-qualified-types.m cfe/trunk/test/SemaObjC/comptypes-1.m cfe/trunk/test/SemaObjC/comptypes-2.m cfe/trunk/test/SemaObjC/comptypes-3.m cfe/trunk/test/SemaObjC/comptypes-4.m cfe/trunk/test/SemaObjC/comptypes-5.m cfe/trunk/test/SemaObjC/comptypes-6.m cfe/trunk/test/SemaObjC/comptypes-7.m cfe/trunk/test/SemaObjC/comptypes-8.m cfe/trunk/test/SemaObjC/comptypes-9.m cfe/trunk/test/SemaObjC/comptypes-a.m cfe/trunk/test/SemaObjC/comptypes-legal.m cfe/trunk/test/SemaObjC/conditional-expr-2.m cfe/trunk/test/SemaObjC/conditional-expr-3.m cfe/trunk/test/SemaObjC/conditional-expr-4.m cfe/trunk/test/SemaObjC/conditional-expr.m cfe/trunk/test/SemaObjC/conflicting-ivar-test-1.m cfe/trunk/test/SemaObjC/continuation-class-err.m cfe/trunk/test/SemaObjC/duplicate-ivar-check.m cfe/trunk/test/SemaObjC/enhanced-proto-2.m cfe/trunk/test/SemaObjC/error-property-gc-attr.m cfe/trunk/test/SemaObjC/exprs.m cfe/trunk/test/SemaObjC/foreach-1.m cfe/trunk/test/SemaObjC/format-strings-objc.m cfe/trunk/test/SemaObjC/forward-class-1.m cfe/trunk/test/SemaObjC/gcc-cast-ext.m cfe/trunk/test/SemaObjC/id-1.m cfe/trunk/test/SemaObjC/id_builtin.m cfe/trunk/test/SemaObjC/incompatible-protocol-qualified-types.m cfe/trunk/test/SemaObjC/interface-1.m cfe/trunk/test/SemaObjC/interface-layout-2.m cfe/trunk/test/SemaObjC/interface-layout.m cfe/trunk/test/SemaObjC/interface-scope-2.m cfe/trunk/test/SemaObjC/interface-scope.m cfe/trunk/test/SemaObjC/interface-tu-variable.m cfe/trunk/test/SemaObjC/invalid-code.m cfe/trunk/test/SemaObjC/invalid-objc-decls-1.m cfe/trunk/test/SemaObjC/invalid-receiver.m cfe/trunk/test/SemaObjC/invalid-typename.m cfe/trunk/test/SemaObjC/ivar-access-tests.m cfe/trunk/test/SemaObjC/ivar-lookup.m cfe/trunk/test/SemaObjC/ivar-ref-misuse.m cfe/trunk/test/SemaObjC/ivar-sem-check-1.m cfe/trunk/test/SemaObjC/legacy-implementation-1.m cfe/trunk/test/SemaObjC/message.m cfe/trunk/test/SemaObjC/method-arg-decay.m cfe/trunk/test/SemaObjC/method-attributes.m cfe/trunk/test/SemaObjC/method-bad-param.m cfe/trunk/test/SemaObjC/method-conflict.m cfe/trunk/test/SemaObjC/method-def-1.m cfe/trunk/test/SemaObjC/method-def-2.m cfe/trunk/test/SemaObjC/method-encoding-2.m cfe/trunk/test/SemaObjC/method-lookup-2.m cfe/trunk/test/SemaObjC/method-lookup-3.m cfe/trunk/test/SemaObjC/method-lookup-4.m cfe/trunk/test/SemaObjC/method-lookup.m cfe/trunk/test/SemaObjC/method-no-context.m cfe/trunk/test/SemaObjC/method-not-defined.m cfe/trunk/test/SemaObjC/method-typecheck-1.m cfe/trunk/test/SemaObjC/method-undef-category-warn-1.m cfe/trunk/test/SemaObjC/method-undef-extension-warn-1.m cfe/trunk/test/SemaObjC/method-undefined-warn-1.m cfe/trunk/test/SemaObjC/missing-method-context.m cfe/trunk/test/SemaObjC/newproperty-class-method-1.m cfe/trunk/test/SemaObjC/nsobject-attribute.m cfe/trunk/test/SemaObjC/objc2-warn-weak-decl.m cfe/trunk/test/SemaObjC/property-1.m cfe/trunk/test/SemaObjC/property-10.m cfe/trunk/test/SemaObjC/property-11.m cfe/trunk/test/SemaObjC/property-12.m cfe/trunk/test/SemaObjC/property-13.m cfe/trunk/test/SemaObjC/property-2.m cfe/trunk/test/SemaObjC/property-3.m cfe/trunk/test/SemaObjC/property-4.m cfe/trunk/test/SemaObjC/property-5.m cfe/trunk/test/SemaObjC/property-6.m cfe/trunk/test/SemaObjC/property-7.m cfe/trunk/test/SemaObjC/property-8.m cfe/trunk/test/SemaObjC/property-9-impl-method.m cfe/trunk/test/SemaObjC/property-9.m cfe/trunk/test/SemaObjC/property-category-1.m cfe/trunk/test/SemaObjC/property-category-2.m cfe/trunk/test/SemaObjC/property-category-3.m cfe/trunk/test/SemaObjC/property-error-readonly-assign.m cfe/trunk/test/SemaObjC/property-impl-misuse.m cfe/trunk/test/SemaObjC/property-inherited.m cfe/trunk/test/SemaObjC/property-ivar-mismatch.m cfe/trunk/test/SemaObjC/property-missing.m cfe/trunk/test/SemaObjC/property-nonfragile-abi.m cfe/trunk/test/SemaObjC/property-noprotocol-warning.m cfe/trunk/test/SemaObjC/property-redundant-decl-accessor.m cfe/trunk/test/SemaObjC/property-typecheck-1.m cfe/trunk/test/SemaObjC/property-user-setter.m cfe/trunk/test/SemaObjC/property-weak.m cfe/trunk/test/SemaObjC/props-on-prots.m cfe/trunk/test/SemaObjC/protocol-archane.m cfe/trunk/test/SemaObjC/protocol-atttribute-1.m cfe/trunk/test/SemaObjC/protocol-expr-1.m cfe/trunk/test/SemaObjC/protocol-expr-neg-1.m cfe/trunk/test/SemaObjC/protocol-forward-circular.m cfe/trunk/test/SemaObjC/protocol-id-test-1.m cfe/trunk/test/SemaObjC/protocol-id-test-2.m cfe/trunk/test/SemaObjC/protocol-id-test-3.m cfe/trunk/test/SemaObjC/protocol-implementation-inherited.m cfe/trunk/test/SemaObjC/protocol-lookup-2.m cfe/trunk/test/SemaObjC/protocol-lookup.m cfe/trunk/test/SemaObjC/protocol-test-1.m cfe/trunk/test/SemaObjC/protocol-test-2.m cfe/trunk/test/SemaObjC/protocol-typecheck.m cfe/trunk/test/SemaObjC/protocol-undef.m cfe/trunk/test/SemaObjC/rdr-6211479-array-property.m cfe/trunk/test/SemaObjC/selector-1.m cfe/trunk/test/SemaObjC/selector-overload.m cfe/trunk/test/SemaObjC/static-ivar-ref-1.m cfe/trunk/test/SemaObjC/string.m cfe/trunk/test/SemaObjC/super-cat-prot.m cfe/trunk/test/SemaObjC/super-property-notation.m cfe/trunk/test/SemaObjC/super.m cfe/trunk/test/SemaObjC/synchronized.m cfe/trunk/test/SemaObjC/try-catch.m cfe/trunk/test/SemaObjC/typedef-class.m cfe/trunk/test/SemaObjC/undef-class-messagin-error.m cfe/trunk/test/SemaObjC/undef-protocol-methods-1.m cfe/trunk/test/SemaObjC/undef-superclass-1.m cfe/trunk/test/SemaObjC/undefined-protocol-type-1.m cfe/trunk/test/SemaObjC/unused.m cfe/trunk/test/SemaObjC/va-method-1.m cfe/trunk/test/SemaObjC/warn-selector-selection.m cfe/trunk/test/SemaObjC/warn-weak-field.m cfe/trunk/test/SemaObjC/weak-attr-ivar.m cfe/trunk/test/SemaObjCXX/blocks.mm cfe/trunk/test/SemaObjCXX/cocoa.mm cfe/trunk/test/SemaObjCXX/linkage-spec.mm cfe/trunk/test/SemaObjCXX/objc-decls-inside-namespace.mm cfe/trunk/test/SemaObjCXX/overload.mm cfe/trunk/test/SemaObjCXX/protocol-lookup.mm cfe/trunk/test/SemaObjCXX/reserved-keyword-selectors.mm cfe/trunk/test/SemaObjCXX/vararg-non-pod.mm cfe/trunk/test/SemaObjCXX/void_to_obj.mm cfe/trunk/test/SemaTemplate/class-template-decl.cpp cfe/trunk/test/SemaTemplate/class-template-id-2.cpp cfe/trunk/test/SemaTemplate/class-template-id.cpp cfe/trunk/test/SemaTemplate/class-template-spec.cpp cfe/trunk/test/SemaTemplate/default-arguments.cpp cfe/trunk/test/SemaTemplate/fibonacci.cpp cfe/trunk/test/SemaTemplate/fun-template-def.cpp cfe/trunk/test/SemaTemplate/instantiate-array.cpp cfe/trunk/test/SemaTemplate/instantiate-enum.cpp cfe/trunk/test/SemaTemplate/instantiate-expr-1.cpp cfe/trunk/test/SemaTemplate/instantiate-expr-2.cpp cfe/trunk/test/SemaTemplate/instantiate-field.cpp cfe/trunk/test/SemaTemplate/instantiate-method.cpp cfe/trunk/test/SemaTemplate/instantiate-typedef.cpp cfe/trunk/test/SemaTemplate/instantiation-backtrace.cpp cfe/trunk/test/SemaTemplate/instantiation-default-1.cpp cfe/trunk/test/SemaTemplate/instantiation-default-2.cpp cfe/trunk/test/SemaTemplate/instantiation-default-3.cpp cfe/trunk/test/SemaTemplate/instantiation-depth.cpp cfe/trunk/test/SemaTemplate/nested-name-spec-template.cpp cfe/trunk/test/SemaTemplate/qualified-names-diag.cpp cfe/trunk/test/SemaTemplate/right-angle-brackets-0x.cpp cfe/trunk/test/SemaTemplate/right-angle-brackets-98.cpp cfe/trunk/test/SemaTemplate/temp_arg.cpp cfe/trunk/test/SemaTemplate/temp_arg_nontype.cpp cfe/trunk/test/SemaTemplate/temp_arg_template.cpp cfe/trunk/test/SemaTemplate/temp_arg_type.cpp cfe/trunk/test/SemaTemplate/temp_param.cpp cfe/trunk/tools/ccc/ccclib/Tools.py cfe/trunk/tools/ccc/test/ccc/universal-hello.c Modified: cfe/trunk/Driver/Makefile URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/Driver/Makefile?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/Driver/Makefile (original) +++ cfe/trunk/Driver/Makefile Mon Mar 23 21:24:46 2009 @@ -1,5 +1,5 @@ LEVEL = ../../.. -TOOLNAME = clang +TOOLNAME = clang-cc CPPFLAGS += -I$(PROJ_SRC_DIR)/../include -I$(PROJ_OBJ_DIR)/../include CXXFLAGS = -fno-rtti Modified: cfe/trunk/lib/Driver/Tools.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Tools.cpp?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/lib/Driver/Tools.cpp (original) +++ cfe/trunk/lib/Driver/Tools.cpp Mon Mar 23 21:24:46 2009 @@ -332,7 +332,7 @@ } const char *Exec = - Args.MakeArgString(getToolChain().GetProgramPath(C, "clang").c_str()); + Args.MakeArgString(getToolChain().GetProgramPath(C, "clang-cc").c_str()); Dest.addCommand(new Command(Exec, CmdArgs)); // Claim some arguments which clang doesn't support, but we don't Modified: cfe/trunk/test/Analysis/CFDateGC.m URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis/CFDateGC.m?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/Analysis/CFDateGC.m (original) +++ cfe/trunk/test/Analysis/CFDateGC.m Mon Mar 23 21:24:46 2009 @@ -1,8 +1,8 @@ -// RUN: clang -analyze -checker-cfref -verify -fobjc-gc -analyzer-constraints=basic %s && -// RUN: clang -analyze -checker-cfref -verify -fobjc-gc -analyzer-constraints=range %s && -// RUN: clang -analyze -checker-cfref -verify -fobjc-gc -disable-free %s && -// RUN: clang -analyze -checker-cfref -analyzer-store=region -analyzer-constraints=basic -verify -fobjc-gc %s && -// RUN: clang -analyze -checker-cfref -analyzer-store=region -analyzer-constraints=range -verify -fobjc-gc %s +// RUN: clang-cc -analyze -checker-cfref -verify -fobjc-gc -analyzer-constraints=basic %s && +// RUN: clang-cc -analyze -checker-cfref -verify -fobjc-gc -analyzer-constraints=range %s && +// RUN: clang-cc -analyze -checker-cfref -verify -fobjc-gc -disable-free %s && +// RUN: clang-cc -analyze -checker-cfref -analyzer-store=region -analyzer-constraints=basic -verify -fobjc-gc %s && +// RUN: clang-cc -analyze -checker-cfref -analyzer-store=region -analyzer-constraints=range -verify -fobjc-gc %s //===----------------------------------------------------------------------===// // The following code is reduced using delta-debugging from Modified: cfe/trunk/test/Analysis/CFNumber.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis/CFNumber.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/Analysis/CFNumber.c (original) +++ cfe/trunk/test/Analysis/CFNumber.c Mon Mar 23 21:24:46 2009 @@ -1,7 +1,7 @@ -// RUN: clang -analyze -checker-cfref -analyzer-store=basic -analyzer-constraints=basic -verify -triple x86_64-apple-darwin9 %s && -// RUN: clang -analyze -checker-cfref -analyzer-store=basic -analyzer-constraints=range -verify -triple x86_64-apple-darwin9 %s && -// RUN: clang -analyze -checker-cfref -analyzer-store=region -analyzer-constraints=basic -verify -triple x86_64-apple-darwin9 %s && -// RUN: clang -analyze -checker-cfref -analyzer-store=region -analyzer-constraints=range -verify -triple x86_64-apple-darwin9 %s +// RUN: clang-cc -analyze -checker-cfref -analyzer-store=basic -analyzer-constraints=basic -verify -triple x86_64-apple-darwin9 %s && +// RUN: clang-cc -analyze -checker-cfref -analyzer-store=basic -analyzer-constraints=range -verify -triple x86_64-apple-darwin9 %s && +// RUN: clang-cc -analyze -checker-cfref -analyzer-store=region -analyzer-constraints=basic -verify -triple x86_64-apple-darwin9 %s && +// RUN: clang-cc -analyze -checker-cfref -analyzer-store=region -analyzer-constraints=range -verify -triple x86_64-apple-darwin9 %s typedef signed long CFIndex; typedef const struct __CFAllocator * CFAllocatorRef; Modified: cfe/trunk/test/Analysis/CFRetainRelease_NSAssertionHandler.m URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis/CFRetainRelease_NSAssertionHandler.m?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/Analysis/CFRetainRelease_NSAssertionHandler.m (original) +++ cfe/trunk/test/Analysis/CFRetainRelease_NSAssertionHandler.m Mon Mar 23 21:24:46 2009 @@ -1,7 +1,7 @@ -// RUN: clang -analyze -checker-cfref -verify %s -analyzer-constraints=basic -analyzer-store=basic && -// RUN: clang -analyze -checker-cfref -verify %s -analyzer-constraints=range -analyzer-store=basic && -// RUN: clang -analyze -checker-cfref -verify %s -analyzer-constraints=basic -analyzer-store=region && -// RUN: clang -analyze -checker-cfref -verify %s -analyzer-constraints=range -analyzer-store=region +// RUN: clang-cc -analyze -checker-cfref -verify %s -analyzer-constraints=basic -analyzer-store=basic && +// RUN: clang-cc -analyze -checker-cfref -verify %s -analyzer-constraints=range -analyzer-store=basic && +// RUN: clang-cc -analyze -checker-cfref -verify %s -analyzer-constraints=basic -analyzer-store=region && +// RUN: clang-cc -analyze -checker-cfref -verify %s -analyzer-constraints=range -analyzer-store=region typedef struct objc_selector *SEL; typedef signed char BOOL; Modified: cfe/trunk/test/Analysis/CGColorSpace.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis/CGColorSpace.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/Analysis/CGColorSpace.c (original) +++ cfe/trunk/test/Analysis/CGColorSpace.c Mon Mar 23 21:24:46 2009 @@ -1,7 +1,7 @@ -// RUN: clang -analyze -checker-cfref -analyzer-store=basic -analyzer-constraints=basic -verify %s && -// RUN: clang -analyze -checker-cfref -analyzer-store=basic -analyzer-constraints=range -verify %s && -// RUN: clang -analyze -checker-cfref -analyzer-store=region -analyzer-constraints=basic -verify %s && -// RUN: clang -analyze -checker-cfref -analyzer-store=region -analyzer-constraints=range -verify %s +// RUN: clang-cc -analyze -checker-cfref -analyzer-store=basic -analyzer-constraints=basic -verify %s && +// RUN: clang-cc -analyze -checker-cfref -analyzer-store=basic -analyzer-constraints=range -verify %s && +// RUN: clang-cc -analyze -checker-cfref -analyzer-store=region -analyzer-constraints=basic -verify %s && +// RUN: clang-cc -analyze -checker-cfref -analyzer-store=region -analyzer-constraints=range -verify %s typedef struct CGColorSpace *CGColorSpaceRef; extern CGColorSpaceRef CGColorSpaceCreateDeviceRGB(void); Modified: cfe/trunk/test/Analysis/CheckNSError.m URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis/CheckNSError.m?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/Analysis/CheckNSError.m (original) +++ cfe/trunk/test/Analysis/CheckNSError.m Mon Mar 23 21:24:46 2009 @@ -1,7 +1,7 @@ -// RUN: clang -analyze -checker-cfref -analyzer-store=basic -analyzer-constraints=basic -verify %s && -// RUN: clang -analyze -checker-cfref -analyzer-store=region -analyzer-constraints=basic -verify %s && -// RUN: clang -analyze -checker-cfref -analyzer-store=basic -analyzer-constraints=range -verify %s && -// RUN: clang -analyze -checker-cfref -analyzer-store=region -analyzer-constraints=range -verify %s +// RUN: clang-cc -analyze -checker-cfref -analyzer-store=basic -analyzer-constraints=basic -verify %s && +// RUN: clang-cc -analyze -checker-cfref -analyzer-store=region -analyzer-constraints=basic -verify %s && +// RUN: clang-cc -analyze -checker-cfref -analyzer-store=basic -analyzer-constraints=range -verify %s && +// RUN: clang-cc -analyze -checker-cfref -analyzer-store=region -analyzer-constraints=range -verify %s typedef signed char BOOL; Modified: cfe/trunk/test/Analysis/MissingDealloc.m URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis/MissingDealloc.m?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/Analysis/MissingDealloc.m (original) +++ cfe/trunk/test/Analysis/MissingDealloc.m Mon Mar 23 21:24:46 2009 @@ -1,4 +1,4 @@ -// RUN: clang -analyze -warn-objc-missing-dealloc '-DIBOutlet=__attribute__((iboutlet))' %s --verify +// RUN: clang-cc -analyze -warn-objc-missing-dealloc '-DIBOutlet=__attribute__((iboutlet))' %s --verify typedef signed char BOOL; @protocol NSObject - (BOOL)isEqual:(id)object; Modified: cfe/trunk/test/Analysis/NSPanel.m URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis/NSPanel.m?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/Analysis/NSPanel.m (original) +++ cfe/trunk/test/Analysis/NSPanel.m Mon Mar 23 21:24:46 2009 @@ -1,7 +1,7 @@ -// RUN: clang -analyze -checker-cfref -analyzer-store=basic -analyzer-constraints=basic -verify %s && -// RUN: clang -analyze -checker-cfref -analyzer-store=basic -analyzer-constraints=range -verify %s && -// RUN: clang -analyze -checker-cfref -analyzer-store=region -analyzer-constraints=basic -verify %s && -// RUN: clang -analyze -checker-cfref -analyzer-store=region -analyzer-constraints=range -verify %s +// RUN: clang-cc -analyze -checker-cfref -analyzer-store=basic -analyzer-constraints=basic -verify %s && +// RUN: clang-cc -analyze -checker-cfref -analyzer-store=basic -analyzer-constraints=range -verify %s && +// RUN: clang-cc -analyze -checker-cfref -analyzer-store=region -analyzer-constraints=basic -verify %s && +// RUN: clang-cc -analyze -checker-cfref -analyzer-store=region -analyzer-constraints=range -verify %s // BEGIN delta-debugging reduced header stuff Modified: cfe/trunk/test/Analysis/NSString.m URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis/NSString.m?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/Analysis/NSString.m (original) +++ cfe/trunk/test/Analysis/NSString.m Mon Mar 23 21:24:46 2009 @@ -1,7 +1,7 @@ -// RUN: clang -analyze -checker-cfref -analyzer-store=basic -analyzer-constraints=basic -verify %s && -// RUN: clang -analyze -checker-cfref -analyzer-store=basic -analyzer-constraints=range -verify %s && -// RUN: clang -analyze -checker-cfref -analyzer-store=region -analyzer-constraints=basic -verify %s && -// RUN: clang -analyze -checker-cfref -analyzer-store=region -analyzer-constraints=range -verify %s +// RUN: clang-cc -analyze -checker-cfref -analyzer-store=basic -analyzer-constraints=basic -verify %s && +// RUN: clang-cc -analyze -checker-cfref -analyzer-store=basic -analyzer-constraints=range -verify %s && +// RUN: clang-cc -analyze -checker-cfref -analyzer-store=region -analyzer-constraints=basic -verify %s && +// RUN: clang-cc -analyze -checker-cfref -analyzer-store=region -analyzer-constraints=range -verify %s //===----------------------------------------------------------------------===// // The following code is reduced using delta-debugging from Modified: cfe/trunk/test/Analysis/NSWindow.m URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis/NSWindow.m?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/Analysis/NSWindow.m (original) +++ cfe/trunk/test/Analysis/NSWindow.m Mon Mar 23 21:24:46 2009 @@ -1,7 +1,7 @@ -// RUN: clang -analyze -checker-cfref -warn-dead-stores -analyzer-store=basic -analyzer-constraints=basic -verify %s && -// RUN: clang -analyze -checker-cfref -warn-dead-stores -analyzer-store=basic -analyzer-constraints=range -verify %s && -// RUN: clang -analyze -checker-cfref -warn-dead-stores -analyzer-store=region -analyzer-constraints=basic -verify %s && -// RUN: clang -analyze -checker-cfref -warn-dead-stores -analyzer-store=region -analyzer-constraints=range -verify %s +// RUN: clang-cc -analyze -checker-cfref -warn-dead-stores -analyzer-store=basic -analyzer-constraints=basic -verify %s && +// RUN: clang-cc -analyze -checker-cfref -warn-dead-stores -analyzer-store=basic -analyzer-constraints=range -verify %s && +// RUN: clang-cc -analyze -checker-cfref -warn-dead-stores -analyzer-store=region -analyzer-constraints=basic -verify %s && +// RUN: clang-cc -analyze -checker-cfref -warn-dead-stores -analyzer-store=region -analyzer-constraints=range -verify %s // These declarations were reduced using Delta-Debugging from Foundation.h // on Mac OS X. The test cases are below. Modified: cfe/trunk/test/Analysis/NoReturn.m URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis/NoReturn.m?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/Analysis/NoReturn.m (original) +++ cfe/trunk/test/Analysis/NoReturn.m Mon Mar 23 21:24:46 2009 @@ -1,9 +1,9 @@ -// RUN: clang -analyze -checker-simple -analyzer-store=basic -analyzer-constraints=basic -verify %s && -// RUN: clang -analyze -checker-simple -analyzer-store=basic -analyzer-constraints=range -verify %s && -// RUN: clang -analyze -checker-cfref -analyzer-store=basic -analyzer-constraints=basic -verify %s && -// RUN: clang -analyze -checker-cfref -analyzer-store=basic -analyzer-constraints=range -verify %s && -// RUN: clang -analyze -checker-cfref -analyzer-store=region -analyzer-constraints=basic -verify %s && -// RUN: clang -analyze -checker-cfref -analyzer-store=region -analyzer-constraints=range -verify %s +// RUN: clang-cc -analyze -checker-simple -analyzer-store=basic -analyzer-constraints=basic -verify %s && +// RUN: clang-cc -analyze -checker-simple -analyzer-store=basic -analyzer-constraints=range -verify %s && +// RUN: clang-cc -analyze -checker-cfref -analyzer-store=basic -analyzer-constraints=basic -verify %s && +// RUN: clang-cc -analyze -checker-cfref -analyzer-store=basic -analyzer-constraints=range -verify %s && +// RUN: clang-cc -analyze -checker-cfref -analyzer-store=region -analyzer-constraints=basic -verify %s && +// RUN: clang-cc -analyze -checker-cfref -analyzer-store=region -analyzer-constraints=range -verify %s #include Modified: cfe/trunk/test/Analysis/ObjCProperties.m URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis/ObjCProperties.m?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/Analysis/ObjCProperties.m (original) +++ cfe/trunk/test/Analysis/ObjCProperties.m Mon Mar 23 21:24:46 2009 @@ -1,9 +1,9 @@ -// RUN: clang -analyze -checker-simple -analyzer-store=basic -analyzer-constraints=basic %s -verify && -// RUN: clang -analyze -checker-simple -analyzer-store=basic -analyzer-constraints=range %s -verify && -// RUN: clang -analyze -checker-cfref -analyzer-store=basic -analyzer-constraints=basic %s -verify && -// RUN: clang -analyze -checker-cfref -analyzer-store=basic -analyzer-constraints=range %s -verify && -// RUN: clang -analyze -checker-cfref -analyzer-store=region -analyzer-constraints=basic %s -verify && -// RUN: clang -analyze -checker-cfref -analyzer-store=region -analyzer-constraints=range %s -verify +// RUN: clang-cc -analyze -checker-simple -analyzer-store=basic -analyzer-constraints=basic %s -verify && +// RUN: clang-cc -analyze -checker-simple -analyzer-store=basic -analyzer-constraints=range %s -verify && +// RUN: clang-cc -analyze -checker-cfref -analyzer-store=basic -analyzer-constraints=basic %s -verify && +// RUN: clang-cc -analyze -checker-cfref -analyzer-store=basic -analyzer-constraints=range %s -verify && +// RUN: clang-cc -analyze -checker-cfref -analyzer-store=region -analyzer-constraints=basic %s -verify && +// RUN: clang-cc -analyze -checker-cfref -analyzer-store=region -analyzer-constraints=range %s -verify // The point of this test cases is to exercise properties in the static // analyzer Modified: cfe/trunk/test/Analysis/ObjCRetSigs.m URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis/ObjCRetSigs.m?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/Analysis/ObjCRetSigs.m (original) +++ cfe/trunk/test/Analysis/ObjCRetSigs.m Mon Mar 23 21:24:46 2009 @@ -1,4 +1,4 @@ -// RUN: clang -analyze -warn-objc-methodsigs -verify %s +// RUN: clang-cc -analyze -warn-objc-methodsigs -verify %s #include Modified: cfe/trunk/test/Analysis/PR2599.m URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis/PR2599.m?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/Analysis/PR2599.m (original) +++ cfe/trunk/test/Analysis/PR2599.m Mon Mar 23 21:24:46 2009 @@ -1,7 +1,7 @@ -// RUN: clang -analyze -analyzer-constraints=basic -analyzer-store=basic -checker-cfref -fobjc-gc -verify %s && -// RUN: clang -analyze -analyzer-constraints=range -analyzer-store=basic -checker-cfref -fobjc-gc -verify %s && -// RUN: clang -analyze -analyzer-constraints=basic -analyzer-store=basic -checker-cfref -fobjc-gc -verify %s && -// RUN: clang -analyze -analyzer-constraints=range -analyzer-store=region -checker-cfref -fobjc-gc -verify %s +// RUN: clang-cc -analyze -analyzer-constraints=basic -analyzer-store=basic -checker-cfref -fobjc-gc -verify %s && +// RUN: clang-cc -analyze -analyzer-constraints=range -analyzer-store=basic -checker-cfref -fobjc-gc -verify %s && +// RUN: clang-cc -analyze -analyzer-constraints=basic -analyzer-store=basic -checker-cfref -fobjc-gc -verify %s && +// RUN: clang-cc -analyze -analyzer-constraints=range -analyzer-store=region -checker-cfref -fobjc-gc -verify %s typedef const void * CFTypeRef; typedef const struct __CFString * CFStringRef; Modified: cfe/trunk/test/Analysis/PR2978.m URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis/PR2978.m?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/Analysis/PR2978.m (original) +++ cfe/trunk/test/Analysis/PR2978.m Mon Mar 23 21:24:46 2009 @@ -1,4 +1,4 @@ -// RUN: clang -analyze -warn-objc-missing-dealloc %s -verify +// RUN: clang-cc -analyze -warn-objc-missing-dealloc %s -verify // Tests for the checker which checks missing/extra ivar 'release' calls // in dealloc. Modified: cfe/trunk/test/Analysis/array-struct.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis/array-struct.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/Analysis/array-struct.c (original) +++ cfe/trunk/test/Analysis/array-struct.c Mon Mar 23 21:24:46 2009 @@ -1,8 +1,8 @@ -// RUN: clang -analyze -checker-simple -analyzer-store=basic -analyzer-constraints=basic -verify %s && -// RUN: clang -analyze -checker-cfref -analyzer-store=basic -analyzer-constraints=basic -verify %s && -// RUN: clang -analyze -checker-cfref -analyzer-store=basic -analyzer-constraints=range -verify %s && -// RUN: clang -analyze -checker-cfref -analyzer-store=region -analyzer-constraints=basic -verify %s && -// RUN: clang -analyze -checker-cfref -analyzer-store=region -analyzer-constraints=range -verify %s +// RUN: clang-cc -analyze -checker-simple -analyzer-store=basic -analyzer-constraints=basic -verify %s && +// RUN: clang-cc -analyze -checker-cfref -analyzer-store=basic -analyzer-constraints=basic -verify %s && +// RUN: clang-cc -analyze -checker-cfref -analyzer-store=basic -analyzer-constraints=range -verify %s && +// RUN: clang-cc -analyze -checker-cfref -analyzer-store=region -analyzer-constraints=basic -verify %s && +// RUN: clang-cc -analyze -checker-cfref -analyzer-store=region -analyzer-constraints=range -verify %s struct s { int data; Modified: cfe/trunk/test/Analysis/casts.m URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis/casts.m?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/Analysis/casts.m (original) +++ cfe/trunk/test/Analysis/casts.m Mon Mar 23 21:24:46 2009 @@ -1,5 +1,5 @@ -// RUN: clang -analyze -checker-cfref -analyzer-store=basic --verify %s && -// RUN: clang -analyze -checker-cfref -analyzer-store=region --verify %s +// RUN: clang-cc -analyze -checker-cfref -analyzer-store=basic --verify %s && +// RUN: clang-cc -analyze -checker-cfref -analyzer-store=region --verify %s // Test function pointer casts. Currently we track function addresses using // loc::FunctionVal. Because casts can be arbitrary, do we need to model Modified: cfe/trunk/test/Analysis/cfref_PR2519.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis/cfref_PR2519.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/Analysis/cfref_PR2519.c (original) +++ cfe/trunk/test/Analysis/cfref_PR2519.c Mon Mar 23 21:24:46 2009 @@ -1,7 +1,7 @@ -// RUN: clang -analyze -checker-cfref --analyzer-store=basic -analyzer-constraints=basic -verify %s && -// RUN: clang -analyze -checker-cfref --analyzer-store=basic -analyzer-constraints=range -verify %s && -// RUN: clang -analyze -checker-cfref --analyzer-store=region -analyzer-constraints=basic -verify %s && -// RUN: clang -analyze -checker-cfref --analyzer-store=region -analyzer-constraints=range -verify %s +// RUN: clang-cc -analyze -checker-cfref --analyzer-store=basic -analyzer-constraints=basic -verify %s && +// RUN: clang-cc -analyze -checker-cfref --analyzer-store=basic -analyzer-constraints=range -verify %s && +// RUN: clang-cc -analyze -checker-cfref --analyzer-store=region -analyzer-constraints=basic -verify %s && +// RUN: clang-cc -analyze -checker-cfref --analyzer-store=region -analyzer-constraints=range -verify %s typedef unsigned char Boolean; typedef signed long CFIndex; Modified: cfe/trunk/test/Analysis/cfref_rdar6080742.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis/cfref_rdar6080742.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/Analysis/cfref_rdar6080742.c (original) +++ cfe/trunk/test/Analysis/cfref_rdar6080742.c Mon Mar 23 21:24:46 2009 @@ -1,7 +1,7 @@ -// RUN: clang -analyze -checker-cfref -analyzer-store=basic -analyzer-constraints=basic -verify %s && -// RUN: clang -analyze -checker-cfref -analyzer-store=basic -analyzer-constraints=range -verify %s && -// RUN: clang -analyze -checker-cfref -analyzer-store=region -analyzer-constraints=basic -verify %s && -// RUN: clang -analyze -checker-cfref -analyzer-store=region -analyzer-constraints=range -verify %s +// RUN: clang-cc -analyze -checker-cfref -analyzer-store=basic -analyzer-constraints=basic -verify %s && +// RUN: clang-cc -analyze -checker-cfref -analyzer-store=basic -analyzer-constraints=range -verify %s && +// RUN: clang-cc -analyze -checker-cfref -analyzer-store=region -analyzer-constraints=basic -verify %s && +// RUN: clang-cc -analyze -checker-cfref -analyzer-store=region -analyzer-constraints=range -verify %s // This test case was reported in . // It tests path-sensitivity with respect to '!(cfstring != 0)' (negation of inequality). Modified: cfe/trunk/test/Analysis/complex.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis/complex.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/Analysis/complex.c (original) +++ cfe/trunk/test/Analysis/complex.c Mon Mar 23 21:24:46 2009 @@ -1,8 +1,8 @@ -// RUN: clang -analyze -checker-simple -analyzer-store=basic -analyzer-constraints=basic -verify %s && -// RUN: clang -analyze -checker-cfref -analyzer-store=basic -analyzer-constraints=basic -verify %s && -// RUN: clang -analyze -checker-cfref -analyzer-store=basic -analyzer-constraints=range -verify %s && -// RUN: clang -analyze -checker-cfref -analyzer-store=region -analyzer-constraints=basic -verify %s && -// RUN: clang -analyze -checker-cfref -analyzer-store=region -analyzer-constraints=range -verify %s +// RUN: clang-cc -analyze -checker-simple -analyzer-store=basic -analyzer-constraints=basic -verify %s && +// RUN: clang-cc -analyze -checker-cfref -analyzer-store=basic -analyzer-constraints=basic -verify %s && +// RUN: clang-cc -analyze -checker-cfref -analyzer-store=basic -analyzer-constraints=range -verify %s && +// RUN: clang-cc -analyze -checker-cfref -analyzer-store=region -analyzer-constraints=basic -verify %s && +// RUN: clang-cc -analyze -checker-cfref -analyzer-store=region -analyzer-constraints=range -verify %s #include Modified: cfe/trunk/test/Analysis/conditional-op-missing-lhs.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis/conditional-op-missing-lhs.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/Analysis/conditional-op-missing-lhs.c (original) +++ cfe/trunk/test/Analysis/conditional-op-missing-lhs.c Mon Mar 23 21:24:46 2009 @@ -1,4 +1,4 @@ -// RUN: clang -analyze -warn-dead-stores -warn-uninit-values -verify %s +// RUN: clang-cc -analyze -warn-dead-stores -warn-uninit-values -verify %s void f1() { Modified: cfe/trunk/test/Analysis/dead-stores.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis/dead-stores.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/Analysis/dead-stores.c (original) +++ cfe/trunk/test/Analysis/dead-stores.c Mon Mar 23 21:24:46 2009 @@ -1,10 +1,10 @@ -// RUN: clang -analyze -warn-dead-stores -verify %s && -// RUN: clang -analyze -checker-simple -analyzer-store=basic -analyzer-constraints=basic -warn-dead-stores -verify %s && -// RUN: clang -analyze -checker-simple -analyzer-store=basic -analyzer-constraints=range -warn-dead-stores -verify %s && -// RUN: clang -analyze -checker-cfref -analyzer-store=basic -analyzer-constraints=basic -warn-dead-stores -verify %s && -// RUN: clang -analyze -checker-cfref -analyzer-store=basic -analyzer-constraints=range -warn-dead-stores -verify %s && -// RUN: clang -analyze -checker-cfref -analyzer-store=region -analyzer-constraints=basic -warn-dead-stores -verify %s && -// RUN: clang -analyze -checker-cfref -analyzer-store=region -analyzer-constraints=range -warn-dead-stores -verify %s +// RUN: clang-cc -analyze -warn-dead-stores -verify %s && +// RUN: clang-cc -analyze -checker-simple -analyzer-store=basic -analyzer-constraints=basic -warn-dead-stores -verify %s && +// RUN: clang-cc -analyze -checker-simple -analyzer-store=basic -analyzer-constraints=range -warn-dead-stores -verify %s && +// RUN: clang-cc -analyze -checker-cfref -analyzer-store=basic -analyzer-constraints=basic -warn-dead-stores -verify %s && +// RUN: clang-cc -analyze -checker-cfref -analyzer-store=basic -analyzer-constraints=range -warn-dead-stores -verify %s && +// RUN: clang-cc -analyze -checker-cfref -analyzer-store=region -analyzer-constraints=basic -warn-dead-stores -verify %s && +// RUN: clang-cc -analyze -checker-cfref -analyzer-store=region -analyzer-constraints=range -warn-dead-stores -verify %s void f1() { int k, y; Modified: cfe/trunk/test/Analysis/dead-stores.m URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis/dead-stores.m?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/Analysis/dead-stores.m (original) +++ cfe/trunk/test/Analysis/dead-stores.m Mon Mar 23 21:24:46 2009 @@ -1,4 +1,4 @@ -// RUN: clang -analyze -warn-dead-stores -verify %s +// RUN: clang-cc -analyze -warn-dead-stores -verify %s typedef signed char BOOL; typedef unsigned int NSUInteger; Modified: cfe/trunk/test/Analysis/exercise-ps.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis/exercise-ps.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/Analysis/exercise-ps.c (original) +++ cfe/trunk/test/Analysis/exercise-ps.c Mon Mar 23 21:24:46 2009 @@ -1,6 +1,6 @@ -// RUN: clang -analyze -checker-simple -verify %s && -// RUN: clang -analyze -checker-cfref -analyzer-store=basic -verify %s && -// RUN: clang -analyze -checker-cfref -analyzer-store=region -verify %s +// RUN: clang-cc -analyze -checker-simple -verify %s && +// RUN: clang-cc -analyze -checker-cfref -analyzer-store=basic -verify %s && +// RUN: clang-cc -analyze -checker-cfref -analyzer-store=region -verify %s // // Just exercise the analyzer on code that has at one point caused issues // (i.e., no assertions or crashes). Modified: cfe/trunk/test/Analysis/fields.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis/fields.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/Analysis/fields.c (original) +++ cfe/trunk/test/Analysis/fields.c Mon Mar 23 21:24:46 2009 @@ -1,6 +1,6 @@ -// RUN: clang -analyze -checker-cfref %s --analyzer-store=basic -verify && -// RUN: clang -analyze -checker-cfref %s --analyzer-store=region -verify && -// RUN: clang -analyze -checker-simple %s -verify +// RUN: clang-cc -analyze -checker-cfref %s --analyzer-store=basic -verify && +// RUN: clang-cc -analyze -checker-cfref %s --analyzer-store=region -verify && +// RUN: clang-cc -analyze -checker-simple %s -verify unsigned foo(); typedef struct bf { unsigned x:2; } bf; Modified: cfe/trunk/test/Analysis/func.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis/func.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/Analysis/func.c (original) +++ cfe/trunk/test/Analysis/func.c Mon Mar 23 21:24:46 2009 @@ -1,6 +1,6 @@ -// RUN: clang -analyze -checker-simple -verify %s && -// RUN: clang -analyze -checker-cfref -analyzer-store=basic -verify %s && -// RUN: clang -analyze -checker-cfref -analyzer-store=region -verify %s +// RUN: clang-cc -analyze -checker-simple -verify %s && +// RUN: clang-cc -analyze -checker-cfref -analyzer-store=basic -verify %s && +// RUN: clang-cc -analyze -checker-cfref -analyzer-store=region -verify %s void f(void) { void (*p)(void); Modified: cfe/trunk/test/Analysis/misc-ps-basic-store.m URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis/misc-ps-basic-store.m?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/Analysis/misc-ps-basic-store.m (original) +++ cfe/trunk/test/Analysis/misc-ps-basic-store.m Mon Mar 23 21:24:46 2009 @@ -1,4 +1,4 @@ -// RUN: clang -analyze -checker-cfref --analyzer-store=basic --verify -fblocks %s +// RUN: clang-cc -analyze -checker-cfref --analyzer-store=basic --verify -fblocks %s //--------------------------------------------------------------------------- // Test case 'checkaccess_union' differs for region store and basic store. Modified: cfe/trunk/test/Analysis/misc-ps-eager-assume.m URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis/misc-ps-eager-assume.m?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/Analysis/misc-ps-eager-assume.m (original) +++ cfe/trunk/test/Analysis/misc-ps-eager-assume.m Mon Mar 23 21:24:46 2009 @@ -1,4 +1,4 @@ -// RUN: clang -analyze -checker-cfref --analyzer-store=region -analyzer-constraints=range --verify -fblocks %s -analyzer-eagerly-assume +// RUN: clang-cc -analyze -checker-cfref --analyzer-store=region -analyzer-constraints=range --verify -fblocks %s -analyzer-eagerly-assume // Delta-reduced header stuff (needed for test cases). typedef signed char BOOL; Modified: cfe/trunk/test/Analysis/misc-ps-region-store.m URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis/misc-ps-region-store.m?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/Analysis/misc-ps-region-store.m (original) +++ cfe/trunk/test/Analysis/misc-ps-region-store.m Mon Mar 23 21:24:46 2009 @@ -1,4 +1,4 @@ -// RUN: clang -analyze -checker-cfref --analyzer-store=region --verify -fblocks %s +// RUN: clang-cc -analyze -checker-cfref --analyzer-store=region --verify -fblocks %s typedef struct objc_selector *SEL; typedef signed char BOOL; Modified: cfe/trunk/test/Analysis/misc-ps.m URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis/misc-ps.m?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/Analysis/misc-ps.m (original) +++ cfe/trunk/test/Analysis/misc-ps.m Mon Mar 23 21:24:46 2009 @@ -1,7 +1,7 @@ -// RUN: clang -analyze -checker-cfref --analyzer-store=basic -analyzer-constraints=basic --verify -fblocks %s && -// RUN: clang -analyze -checker-cfref --analyzer-store=basic -analyzer-constraints=range --verify -fblocks %s && -// RUN: clang -analyze -checker-cfref --analyzer-store=region -analyzer-constraints=basic --verify -fblocks %s && -// RUN: clang -analyze -checker-cfref --analyzer-store=region -analyzer-constraints=range --verify -fblocks %s +// RUN: clang-cc -analyze -checker-cfref --analyzer-store=basic -analyzer-constraints=basic --verify -fblocks %s && +// RUN: clang-cc -analyze -checker-cfref --analyzer-store=basic -analyzer-constraints=range --verify -fblocks %s && +// RUN: clang-cc -analyze -checker-cfref --analyzer-store=region -analyzer-constraints=basic --verify -fblocks %s && +// RUN: clang-cc -analyze -checker-cfref --analyzer-store=region -analyzer-constraints=range --verify -fblocks %s typedef struct objc_selector *SEL; typedef signed char BOOL; Modified: cfe/trunk/test/Analysis/no-exit-cfg.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis/no-exit-cfg.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/Analysis/no-exit-cfg.c (original) +++ cfe/trunk/test/Analysis/no-exit-cfg.c Mon Mar 23 21:24:46 2009 @@ -1,5 +1,5 @@ -// RUN: clang -analyze -checker-cfref -analyzer-store=basic -verify %s && -// RUN: clang -analyze -checker-cfref -analyzer-store=region -verify %s +// RUN: clang-cc -analyze -checker-cfref -analyzer-store=basic -verify %s && +// RUN: clang-cc -analyze -checker-cfref -analyzer-store=region -verify %s // This is a test case for the issue reported in PR 2819: // http://llvm.org/bugs/show_bug.cgi?id=2819 Modified: cfe/trunk/test/Analysis/null-deref-ps.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis/null-deref-ps.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/Analysis/null-deref-ps.c (original) +++ cfe/trunk/test/Analysis/null-deref-ps.c Mon Mar 23 21:24:46 2009 @@ -1,7 +1,7 @@ -// RUN: clang -analyze -std=gnu99 -checker-simple -verify %s && -// RUN: clang -analyze -std=gnu99 -checker-simple -verify %s -analyzer-constraints=range && -// RUN: clang -analyze -std=gnu99 -checker-simple -analyzer-store=region -analyzer-purge-dead=false -verify %s && -// RUN: clang -analyze -std=gnu99 -checker-cfref -analyzer-store=region -verify %s +// RUN: clang-cc -analyze -std=gnu99 -checker-simple -verify %s && +// RUN: clang-cc -analyze -std=gnu99 -checker-simple -verify %s -analyzer-constraints=range && +// RUN: clang-cc -analyze -std=gnu99 -checker-simple -analyzer-store=region -analyzer-purge-dead=false -verify %s && +// RUN: clang-cc -analyze -std=gnu99 -checker-cfref -analyzer-store=region -verify %s #include #include Modified: cfe/trunk/test/Analysis/outofbound.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis/outofbound.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/Analysis/outofbound.c (original) +++ cfe/trunk/test/Analysis/outofbound.c Mon Mar 23 21:24:46 2009 @@ -1,4 +1,4 @@ -// RUN: clang -analyze -checker-simple -analyzer-store=region -verify %s +// RUN: clang-cc -analyze -checker-simple -analyzer-store=region -verify %s char f1() { char* s = "abcd"; Modified: cfe/trunk/test/Analysis/ptr-arith.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis/ptr-arith.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/Analysis/ptr-arith.c (original) +++ cfe/trunk/test/Analysis/ptr-arith.c Mon Mar 23 21:24:46 2009 @@ -1,6 +1,6 @@ -// RUN: clang -analyze -checker-simple -analyzer-store=region -verify %s && -// RUN: clang -analyze -checker-cfref -analyzer-store=region -verify -triple x86_64-apple-darwin9 %s && -// RUN: clang -analyze -checker-cfref -analyzer-store=region -verify -triple i686-apple-darwin9 %s +// RUN: clang-cc -analyze -checker-simple -analyzer-store=region -verify %s && +// RUN: clang-cc -analyze -checker-cfref -analyzer-store=region -verify -triple x86_64-apple-darwin9 %s && +// RUN: clang-cc -analyze -checker-cfref -analyzer-store=region -verify -triple i686-apple-darwin9 %s void f1() { int a[10]; Modified: cfe/trunk/test/Analysis/rdar-6442306-1.m URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis/rdar-6442306-1.m?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/Analysis/rdar-6442306-1.m (original) +++ cfe/trunk/test/Analysis/rdar-6442306-1.m Mon Mar 23 21:24:46 2009 @@ -1,5 +1,5 @@ -// RUN: clang -analyze -checker-cfref %s --analyzer-store=basic -verify && -// RUN: clang -analyze -checker-cfref %s --analyzer-store=region -verify +// RUN: clang-cc -analyze -checker-cfref %s --analyzer-store=basic -verify && +// RUN: clang-cc -analyze -checker-cfref %s --analyzer-store=region -verify typedef int bar_return_t; typedef struct { Modified: cfe/trunk/test/Analysis/rdar-6539791.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis/rdar-6539791.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/Analysis/rdar-6539791.c (original) +++ cfe/trunk/test/Analysis/rdar-6539791.c Mon Mar 23 21:24:46 2009 @@ -1,5 +1,5 @@ -// RUN: clang -analyze -checker-cfref -analyzer-store=basic -verify %s && -// RUN: clang -analyze -checker-cfref -analyzer-store=region -verify %s +// RUN: clang-cc -analyze -checker-cfref -analyzer-store=basic -verify %s && +// RUN: clang-cc -analyze -checker-cfref -analyzer-store=region -verify %s typedef const struct __CFAllocator * CFAllocatorRef; typedef struct __CFDictionary * CFMutableDictionaryRef; Modified: cfe/trunk/test/Analysis/rdar-6540084.m URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis/rdar-6540084.m?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/Analysis/rdar-6540084.m (original) +++ cfe/trunk/test/Analysis/rdar-6540084.m Mon Mar 23 21:24:46 2009 @@ -1,4 +1,4 @@ -// RUN: clang -analyze -warn-dead-stores -verify %s +// RUN: clang-cc -analyze -warn-dead-stores -verify %s // // This test exercises the live variables analysis (LiveVariables.cpp). // The case originally identified a non-termination bug. Modified: cfe/trunk/test/Analysis/rdar-6541136-region.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis/rdar-6541136-region.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/Analysis/rdar-6541136-region.c (original) +++ cfe/trunk/test/Analysis/rdar-6541136-region.c Mon Mar 23 21:24:46 2009 @@ -1,4 +1,4 @@ -// RUN: clang -verify -analyze -checker-cfref -analyzer-store=region %s +// RUN: clang-cc -verify -analyze -checker-cfref -analyzer-store=region %s struct tea_cheese { unsigned magic; }; typedef struct tea_cheese kernel_tea_cheese_t; Modified: cfe/trunk/test/Analysis/rdar-6541136.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis/rdar-6541136.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/Analysis/rdar-6541136.c (original) +++ cfe/trunk/test/Analysis/rdar-6541136.c Mon Mar 23 21:24:46 2009 @@ -1,4 +1,4 @@ -// RUN: clang -verify -analyze -checker-cfref -analyzer-store=basic %s +// RUN: clang-cc -verify -analyze -checker-cfref -analyzer-store=basic %s struct tea_cheese { unsigned magic; }; typedef struct tea_cheese kernel_tea_cheese_t; Modified: cfe/trunk/test/Analysis/rdar-6562655.m URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis/rdar-6562655.m?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/Analysis/rdar-6562655.m (original) +++ cfe/trunk/test/Analysis/rdar-6562655.m Mon Mar 23 21:24:46 2009 @@ -1,4 +1,4 @@ -// RUN: clang -analyze -checker-cfref -analyzer-constraints=basic -analyzer-store=basic -verify %s +// RUN: clang-cc -analyze -checker-cfref -analyzer-constraints=basic -analyzer-store=basic -verify %s // // This test case mainly checks that the retain/release checker doesn't crash // on this file. Modified: cfe/trunk/test/Analysis/rdar-6582778-basic-store.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis/rdar-6582778-basic-store.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/Analysis/rdar-6582778-basic-store.c (original) +++ cfe/trunk/test/Analysis/rdar-6582778-basic-store.c Mon Mar 23 21:24:46 2009 @@ -1,4 +1,4 @@ -// RUN: clang -analyze -checker-cfref -analyzer-store=basic -verify %s +// RUN: clang-cc -analyze -checker-cfref -analyzer-store=basic -verify %s typedef const void * CFTypeRef; typedef double CFTimeInterval; Modified: cfe/trunk/test/Analysis/rdar-6600344-nil-receiver-undefined-struct-ret.m URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis/rdar-6600344-nil-receiver-undefined-struct-ret.m?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/Analysis/rdar-6600344-nil-receiver-undefined-struct-ret.m (original) +++ cfe/trunk/test/Analysis/rdar-6600344-nil-receiver-undefined-struct-ret.m Mon Mar 23 21:24:46 2009 @@ -1,4 +1,4 @@ -// RUN: clang -analyze -checker-cfref -analyzer-constraints=basic -analyzer-store=basic %s -verify +// RUN: clang-cc -analyze -checker-cfref -analyzer-constraints=basic -analyzer-store=basic %s -verify typedef struct Foo { int x; } Bar; Modified: cfe/trunk/test/Analysis/refcnt_naming.m URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis/refcnt_naming.m?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/Analysis/refcnt_naming.m (original) +++ cfe/trunk/test/Analysis/refcnt_naming.m Mon Mar 23 21:24:46 2009 @@ -1,5 +1,5 @@ -// RUN: clang -analyze -checker-cfref -analyzer-store=basic -verify %s && -// RUN: clang -analyze -checker-cfref -analyzer-store=region -verify %s +// RUN: clang-cc -analyze -checker-cfref -analyzer-store=basic -verify %s && +// RUN: clang-cc -analyze -checker-cfref -analyzer-store=region -verify %s typedef const struct __CFString * CFStringRef; typedef const struct __CFAllocator * CFAllocatorRef; Modified: cfe/trunk/test/Analysis/region-1.m URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis/region-1.m?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/Analysis/region-1.m (original) +++ cfe/trunk/test/Analysis/region-1.m Mon Mar 23 21:24:46 2009 @@ -1,5 +1,5 @@ -// RUN: clang -analyze -checker-cfref -analyzer-store=basic -verify %s && -// RUN: clang -analyze -checker-cfref -analyzer-store=region -verify %s +// RUN: clang-cc -analyze -checker-cfref -analyzer-store=basic -verify %s && +// RUN: clang-cc -analyze -checker-cfref -analyzer-store=region -verify %s // // This test case simply should not crash. It evaluates the logic of not // using MemRegion::getRValueType in incorrect places. Modified: cfe/trunk/test/Analysis/region-only-test.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis/region-only-test.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/Analysis/region-only-test.c (original) +++ cfe/trunk/test/Analysis/region-only-test.c Mon Mar 23 21:24:46 2009 @@ -1,4 +1,4 @@ -// RUN: clang -analyze -checker-simple -analyzer-store=region -verify %s +// RUN: clang-cc -analyze -checker-simple -analyzer-store=region -verify %s // Region store must be enabled for tests in this file. Modified: cfe/trunk/test/Analysis/retain-release-basic-store.m URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis/retain-release-basic-store.m?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/Analysis/retain-release-basic-store.m (original) +++ cfe/trunk/test/Analysis/retain-release-basic-store.m Mon Mar 23 21:24:46 2009 @@ -1,4 +1,4 @@ -// RUN: clang -analyze -checker-cfref -analyzer-store=basic -verify %s +// RUN: clang-cc -analyze -checker-cfref -analyzer-store=basic -verify %s //===----------------------------------------------------------------------===// // The following code is reduced using delta-debugging from Modified: cfe/trunk/test/Analysis/retain-release-gc-only.m URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis/retain-release-gc-only.m?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/Analysis/retain-release-gc-only.m (original) +++ cfe/trunk/test/Analysis/retain-release-gc-only.m Mon Mar 23 21:24:46 2009 @@ -1,5 +1,5 @@ -// RUN: clang -analyze -checker-cfref -verify -fobjc-gc-only %s && -// RUN: clang -analyze -checker-cfref -analyzer-store=region -fobjc-gc-only -verify %s +// RUN: clang-cc -analyze -checker-cfref -verify -fobjc-gc-only %s && +// RUN: clang-cc -analyze -checker-cfref -analyzer-store=region -fobjc-gc-only -verify %s //===----------------------------------------------------------------------===// // Header stuff. Modified: cfe/trunk/test/Analysis/retain-release-region-store.m URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis/retain-release-region-store.m?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/Analysis/retain-release-region-store.m (original) +++ cfe/trunk/test/Analysis/retain-release-region-store.m Mon Mar 23 21:24:46 2009 @@ -1,4 +1,4 @@ -// RUN: clang -analyze -checker-cfref -analyzer-store=region -verify %s +// RUN: clang-cc -analyze -checker-cfref -analyzer-store=region -verify %s //===----------------------------------------------------------------------===// // The following code is reduced using delta-debugging from Modified: cfe/trunk/test/Analysis/retain-release.m URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis/retain-release.m?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/Analysis/retain-release.m (original) +++ cfe/trunk/test/Analysis/retain-release.m Mon Mar 23 21:24:46 2009 @@ -1,5 +1,5 @@ -// RUN: clang -analyze -checker-cfref -verify %s && -// RUN: clang -analyze -checker-cfref -analyzer-store=region -verify %s +// RUN: clang-cc -analyze -checker-cfref -verify %s && +// RUN: clang-cc -analyze -checker-cfref -analyzer-store=region -verify %s //===----------------------------------------------------------------------===// Modified: cfe/trunk/test/Analysis/stack-addr-ps.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis/stack-addr-ps.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/Analysis/stack-addr-ps.c (original) +++ cfe/trunk/test/Analysis/stack-addr-ps.c Mon Mar 23 21:24:46 2009 @@ -1,6 +1,6 @@ -// RUN: clang -analyze -checker-simple -verify %s && -// RUN: clang -analyze -checker-cfref -analyzer-store=basic -verify %s && -// RUN: clang -analyze -checker-cfref -analyzer-store=region -verify %s +// RUN: clang-cc -analyze -checker-simple -verify %s && +// RUN: clang-cc -analyze -checker-cfref -analyzer-store=basic -verify %s && +// RUN: clang-cc -analyze -checker-cfref -analyzer-store=region -verify %s #include Modified: cfe/trunk/test/Analysis/uninit-msg-expr.m URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis/uninit-msg-expr.m?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/Analysis/uninit-msg-expr.m (original) +++ cfe/trunk/test/Analysis/uninit-msg-expr.m Mon Mar 23 21:24:46 2009 @@ -1,6 +1,6 @@ -// RUN: clang -analyze -checker-simple -verify %s && -// RUN: clang -analyze -checker-cfref -analyzer-store=basic -verify %s && -// RUN: clang -analyze -checker-cfref -analyzer-store=region -verify %s +// RUN: clang-cc -analyze -checker-simple -verify %s && +// RUN: clang-cc -analyze -checker-cfref -analyzer-store=basic -verify %s && +// RUN: clang-cc -analyze -checker-cfref -analyzer-store=region -verify %s //===----------------------------------------------------------------------===// // The following code is reduced using delta-debugging from Modified: cfe/trunk/test/Analysis/uninit-ps-rdar6145427.m URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis/uninit-ps-rdar6145427.m?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/Analysis/uninit-ps-rdar6145427.m (original) +++ cfe/trunk/test/Analysis/uninit-ps-rdar6145427.m Mon Mar 23 21:24:46 2009 @@ -1,5 +1,5 @@ -// RUN: clang -analyze -verify -analyzer-store=basic -checker-cfref %s && -// RUN: clang -analyze -verify -analyzer-store=region -checker-cfref %s +// RUN: clang-cc -analyze -verify -analyzer-store=basic -checker-cfref %s && +// RUN: clang-cc -analyze -verify -analyzer-store=region -checker-cfref %s // Delta-Debugging reduced preamble. typedef signed char BOOL; Modified: cfe/trunk/test/Analysis/uninit-vals-ps-region.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis/uninit-vals-ps-region.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/Analysis/uninit-vals-ps-region.c (original) +++ cfe/trunk/test/Analysis/uninit-vals-ps-region.c Mon Mar 23 21:24:46 2009 @@ -1,4 +1,4 @@ -// RUN: clang -analyze -checker-simple -analyzer-store=region -verify %s +// RUN: clang-cc -analyze -checker-simple -analyzer-store=region -verify %s struct s { int data; Modified: cfe/trunk/test/Analysis/uninit-vals-ps.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis/uninit-vals-ps.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/Analysis/uninit-vals-ps.c (original) +++ cfe/trunk/test/Analysis/uninit-vals-ps.c Mon Mar 23 21:24:46 2009 @@ -1,5 +1,5 @@ -// RUN: clang -analyze -checker-cfref -verify %s && -// RUN: clang -analyze -checker-cfref -analyzer-store=region -verify %s +// RUN: clang-cc -analyze -checker-cfref -verify %s && +// RUN: clang-cc -analyze -checker-cfref -analyzer-store=region -verify %s struct FPRec { void (*my_func)(int * x); Modified: cfe/trunk/test/Analysis/uninit-vals.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis/uninit-vals.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/Analysis/uninit-vals.c (original) +++ cfe/trunk/test/Analysis/uninit-vals.c Mon Mar 23 21:24:46 2009 @@ -1,4 +1,4 @@ -// RUN: clang -analyze -warn-uninit-values -verify %s +// RUN: clang-cc -analyze -warn-uninit-values -verify %s int f1() { int x; Modified: cfe/trunk/test/Analysis/uninit-vals.m URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis/uninit-vals.m?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/Analysis/uninit-vals.m (original) +++ cfe/trunk/test/Analysis/uninit-vals.m Mon Mar 23 21:24:46 2009 @@ -1,5 +1,5 @@ -// RUN: clang -analyze -checker-cfref -analyzer-store=basic -verify %s && -// RUN: clang -analyze -checker-cfref -analyzer-store=region -verify %s +// RUN: clang-cc -analyze -checker-cfref -analyzer-store=basic -verify %s && +// RUN: clang-cc -analyze -checker-cfref -analyzer-store=region -verify %s typedef unsigned int NSUInteger; Modified: cfe/trunk/test/Analysis/unused-ivars.m URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis/unused-ivars.m?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/Analysis/unused-ivars.m (original) +++ cfe/trunk/test/Analysis/unused-ivars.m Mon Mar 23 21:24:46 2009 @@ -1,4 +1,4 @@ -// RUN: clang -analyze -warn-objc-unused-ivars %s -verify +// RUN: clang-cc -analyze -warn-objc-unused-ivars %s -verify @interface A { Modified: cfe/trunk/test/CodeGen/2007-11-29-ArraySizeFromInitializer.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/2007-11-29-ArraySizeFromInitializer.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/2007-11-29-ArraySizeFromInitializer.c (original) +++ cfe/trunk/test/CodeGen/2007-11-29-ArraySizeFromInitializer.c Mon Mar 23 21:24:46 2009 @@ -1,4 +1,4 @@ -// RUN: clang -emit-llvm %s -o %t +// RUN: clang-cc -emit-llvm %s -o %t int array[] = {1, 2, 3, 4, 5}; Modified: cfe/trunk/test/CodeGen/2008-02-07-bitfield-bug.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/2008-02-07-bitfield-bug.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/2008-02-07-bitfield-bug.c (original) +++ cfe/trunk/test/CodeGen/2008-02-07-bitfield-bug.c Mon Mar 23 21:24:46 2009 @@ -1,4 +1,4 @@ -// RUN: clang %s -emit-llvm -o %t +// RUN: clang-cc %s -emit-llvm -o %t // PR1990 struct test { Modified: cfe/trunk/test/CodeGen/2008-02-08-bitfield-bug.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/2008-02-08-bitfield-bug.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/2008-02-08-bitfield-bug.c (original) +++ cfe/trunk/test/CodeGen/2008-02-08-bitfield-bug.c Mon Mar 23 21:24:46 2009 @@ -1,4 +1,4 @@ -// RUN: clang %s -emit-llvm -o %t +// RUN: clang-cc %s -emit-llvm -o %t struct test { unsigned a:1; Modified: cfe/trunk/test/CodeGen/2008-02-26-inline-asm-bug.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/2008-02-26-inline-asm-bug.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/2008-02-26-inline-asm-bug.c (original) +++ cfe/trunk/test/CodeGen/2008-02-26-inline-asm-bug.c Mon Mar 23 21:24:46 2009 @@ -1,4 +1,4 @@ -// RUN: clang -emit-llvm < %s | grep "\$0,\$1" +// RUN: clang-cc -emit-llvm < %s | grep "\$0,\$1" void f() { int d1, d2; Modified: cfe/trunk/test/CodeGen/2008-07-17-no-emit-on-error.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/2008-07-17-no-emit-on-error.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/2008-07-17-no-emit-on-error.c (original) +++ cfe/trunk/test/CodeGen/2008-07-17-no-emit-on-error.c Mon Mar 23 21:24:46 2009 @@ -1,5 +1,5 @@ // RUN: rm -f %t1.bc -// RUN: not clang %s -emit-llvm-bc -o %t1.bc +// RUN: not clang-cc %s -emit-llvm-bc -o %t1.bc // RUN: not test -f %t1.bc void f() { Modified: cfe/trunk/test/CodeGen/2008-07-21-mixed-var-fn-decl.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/2008-07-21-mixed-var-fn-decl.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/2008-07-21-mixed-var-fn-decl.c (original) +++ cfe/trunk/test/CodeGen/2008-07-21-mixed-var-fn-decl.c Mon Mar 23 21:24:46 2009 @@ -1,4 +1,4 @@ -// RUN: clang -emit-llvm -o - %s | grep -e "@g[0-9] " | count 2 +// RUN: clang-cc -emit-llvm -o - %s | grep -e "@g[0-9] " | count 2 int g0, f0(); int f1(), g1; Modified: cfe/trunk/test/CodeGen/2008-07-22-bitfield-init-after-zero-len-array.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/2008-07-22-bitfield-init-after-zero-len-array.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/2008-07-22-bitfield-init-after-zero-len-array.c (original) +++ cfe/trunk/test/CodeGen/2008-07-22-bitfield-init-after-zero-len-array.c Mon Mar 23 21:24:46 2009 @@ -1,4 +1,4 @@ -// RUN: clang --emit-llvm -o %t %s && +// RUN: clang-cc --emit-llvm -o %t %s && // RUN: grep "i8 52" %t | count 1 struct et7 { Modified: cfe/trunk/test/CodeGen/2008-07-22-packed-bitfield-access.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/2008-07-22-packed-bitfield-access.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/2008-07-22-packed-bitfield-access.c (original) +++ cfe/trunk/test/CodeGen/2008-07-22-packed-bitfield-access.c Mon Mar 23 21:24:46 2009 @@ -1,4 +1,4 @@ -// RUN: clang %s -emit-llvm -o - +// RUN: clang-cc %s -emit-llvm -o - int main () { struct foo { Modified: cfe/trunk/test/CodeGen/2008-07-29-override-alias-decl.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/2008-07-29-override-alias-decl.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/2008-07-29-override-alias-decl.c (original) +++ cfe/trunk/test/CodeGen/2008-07-29-override-alias-decl.c Mon Mar 23 21:24:46 2009 @@ -1,4 +1,4 @@ -// RUN: clang -emit-llvm -o - %s | grep -e "^@f" | count 1 +// RUN: clang-cc -emit-llvm -o - %s | grep -e "^@f" | count 1 int x() {} Modified: cfe/trunk/test/CodeGen/2008-07-30-implicit-initialization.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/2008-07-30-implicit-initialization.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/2008-07-30-implicit-initialization.c (original) +++ cfe/trunk/test/CodeGen/2008-07-30-implicit-initialization.c Mon Mar 23 21:24:46 2009 @@ -1,4 +1,4 @@ -// RUN: clang -triple i386-unknown-unknown --emit-llvm-bc -o - %s | opt --std-compile-opts | llvm-dis > %t && +// RUN: clang-cc -triple i386-unknown-unknown --emit-llvm-bc -o - %s | opt --std-compile-opts | llvm-dis > %t && // RUN: grep "ret i32" %t | count 2 && // RUN: grep "ret i32 0" %t | count 2 // Modified: cfe/trunk/test/CodeGen/2008-07-30-redef-of-bitcasted-decl.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/2008-07-30-redef-of-bitcasted-decl.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/2008-07-30-redef-of-bitcasted-decl.c (original) +++ cfe/trunk/test/CodeGen/2008-07-30-redef-of-bitcasted-decl.c Mon Mar 23 21:24:46 2009 @@ -1,4 +1,4 @@ -// RUN: clang --emit-llvm -o - %s +// RUN: clang-cc --emit-llvm -o - %s // /* For posterity, the issue here begins initial "char []" decl for Modified: cfe/trunk/test/CodeGen/2008-07-31-asm-labels.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/2008-07-31-asm-labels.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/2008-07-31-asm-labels.c (original) +++ cfe/trunk/test/CodeGen/2008-07-31-asm-labels.c Mon Mar 23 21:24:46 2009 @@ -1,9 +1,9 @@ -// RUN: clang -emit-llvm -o %t %s && +// RUN: clang-cc -emit-llvm -o %t %s && // RUN: grep "@pipe()" %t | count 0 && // RUN: grep '_thisIsNotAPipe' %t | count 3 && // RUN: grep 'g0' %t | count 0 && // RUN: grep '_renamed' %t | count 2 && -// RUN: clang -DUSE_DEF -emit-llvm -o %t %s && +// RUN: clang-cc -DUSE_DEF -emit-llvm -o %t %s && // RUN: grep "@pipe()" %t | count 0 && // RUN: grep '_thisIsNotAPipe' %t | count 3 // Modified: cfe/trunk/test/CodeGen/2008-07-31-promotion-of-compound-pointer-arithmetic.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/2008-07-31-promotion-of-compound-pointer-arithmetic.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/2008-07-31-promotion-of-compound-pointer-arithmetic.c (original) +++ cfe/trunk/test/CodeGen/2008-07-31-promotion-of-compound-pointer-arithmetic.c Mon Mar 23 21:24:46 2009 @@ -1,4 +1,4 @@ -// RUN: clang -triple i386-unknown-unknown -emit-llvm-bc -o - %s | opt -std-compile-opts | llvm-dis | grep "ret i32 1" | count 3 +// RUN: clang-cc -triple i386-unknown-unknown -emit-llvm-bc -o - %s | opt -std-compile-opts | llvm-dis | grep "ret i32 1" | count 3 // int f0() { Modified: cfe/trunk/test/CodeGen/2008-08-04-void-pointer-arithmetic.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/2008-08-04-void-pointer-arithmetic.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/2008-08-04-void-pointer-arithmetic.c (original) +++ cfe/trunk/test/CodeGen/2008-08-04-void-pointer-arithmetic.c Mon Mar 23 21:24:46 2009 @@ -1,4 +1,4 @@ -// RUN: clang --emit-llvm -o - %s +// RUN: clang-cc --emit-llvm -o - %s // int f0(void *a, void *b) { Modified: cfe/trunk/test/CodeGen/2008-08-19-cast-of-typedef.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/2008-08-19-cast-of-typedef.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/2008-08-19-cast-of-typedef.c (original) +++ cfe/trunk/test/CodeGen/2008-08-19-cast-of-typedef.c Mon Mar 23 21:24:46 2009 @@ -1,4 +1,4 @@ -// RUN: clang --emit-llvm -o %t %s +// RUN: clang-cc --emit-llvm -o %t %s typedef short T[4]; struct s { Modified: cfe/trunk/test/CodeGen/2008-08-25-incompatible-cond-expr.m URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/2008-08-25-incompatible-cond-expr.m?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/2008-08-25-incompatible-cond-expr.m (original) +++ cfe/trunk/test/CodeGen/2008-08-25-incompatible-cond-expr.m Mon Mar 23 21:24:46 2009 @@ -1,4 +1,4 @@ -// RUN: clang -emit-llvm -o %t %s +// RUN: clang-cc -emit-llvm -o %t %s @protocol P0 @end Modified: cfe/trunk/test/CodeGen/2008-09-22-bad-switch-type.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/2008-09-22-bad-switch-type.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/2008-09-22-bad-switch-type.c (original) +++ cfe/trunk/test/CodeGen/2008-09-22-bad-switch-type.c Mon Mar 23 21:24:46 2009 @@ -1,4 +1,4 @@ -// RUN: clang -emit-llvm -o %t %s +// RUN: clang-cc -emit-llvm -o %t %s // PR2817 void f0(void) { Modified: cfe/trunk/test/CodeGen/2008-12-02-logical-or-fold.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/2008-12-02-logical-or-fold.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/2008-12-02-logical-or-fold.c (original) +++ cfe/trunk/test/CodeGen/2008-12-02-logical-or-fold.c Mon Mar 23 21:24:46 2009 @@ -1,4 +1,4 @@ -// RUN: clang -emit-llvm -o - %s | grep "store i32 1" +// RUN: clang-cc -emit-llvm -o - %s | grep "store i32 1" // PR3150 int a() {return 1||1;} Modified: cfe/trunk/test/CodeGen/2009-01-21-invalid-debug-info.m URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/2009-01-21-invalid-debug-info.m?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/2009-01-21-invalid-debug-info.m (original) +++ cfe/trunk/test/CodeGen/2009-01-21-invalid-debug-info.m Mon Mar 23 21:24:46 2009 @@ -1,4 +1,4 @@ -// RUN: clang -S -g -o %t.s %s +// RUN: clang-cc -S -g -o %t.s %s // FIXME: This test case can be removed at some point (since it will // no longer effectively test anything). The reason it was causing Modified: cfe/trunk/test/CodeGen/2009-03-22-increment-bitfield.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/2009-03-22-increment-bitfield.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/2009-03-22-increment-bitfield.c (original) +++ cfe/trunk/test/CodeGen/2009-03-22-increment-bitfield.c Mon Mar 23 21:24:46 2009 @@ -1,4 +1,4 @@ -// RUN: clang -emit-llvm -O1 < %s | grep "ret i32 0" +// RUN: clang-cc -emit-llvm -O1 < %s | grep "ret i32 0" int a(void) { return ++(struct x {unsigned x : 2;}){3}.x; Modified: cfe/trunk/test/CodeGen/OpaqueStruct.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/OpaqueStruct.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/OpaqueStruct.c (original) +++ cfe/trunk/test/CodeGen/OpaqueStruct.c Mon Mar 23 21:24:46 2009 @@ -1,4 +1,4 @@ -// RUN: clang %s -emit-llvm -o %t +// RUN: clang-cc %s -emit-llvm -o %t typedef struct a b; b* x; Modified: cfe/trunk/test/CodeGen/PR2001-bitfield-reload.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/PR2001-bitfield-reload.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/PR2001-bitfield-reload.c (original) +++ cfe/trunk/test/CodeGen/PR2001-bitfield-reload.c Mon Mar 23 21:24:46 2009 @@ -1,4 +1,4 @@ -// RUN: clang -triple i386-unknown-unknown --emit-llvm-bc -o - %s | opt --std-compile-opts | llvm-dis > %t && +// RUN: clang-cc -triple i386-unknown-unknown --emit-llvm-bc -o - %s | opt --std-compile-opts | llvm-dis > %t && // RUN: grep "ret i32" %t | count 1 && // RUN: grep "ret i32 1" %t | count 1 // PR2001 Modified: cfe/trunk/test/CodeGen/PR2413-void-address-cast-error.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/PR2413-void-address-cast-error.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/PR2413-void-address-cast-error.c (original) +++ cfe/trunk/test/CodeGen/PR2413-void-address-cast-error.c Mon Mar 23 21:24:46 2009 @@ -1,4 +1,4 @@ -// RUN: clang -emit-llvm %s -o - +// RUN: clang-cc -emit-llvm %s -o - void f() { void *addr; Modified: cfe/trunk/test/CodeGen/PR2643-null-store-to-bitfield.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/PR2643-null-store-to-bitfield.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/PR2643-null-store-to-bitfield.c (original) +++ cfe/trunk/test/CodeGen/PR2643-null-store-to-bitfield.c Mon Mar 23 21:24:46 2009 @@ -1,4 +1,4 @@ -// RUN: clang -emit-llvm -o - %s +// RUN: clang-cc -emit-llvm -o - %s // PR2643 void foo() { Modified: cfe/trunk/test/CodeGen/PR2743-reference-missing-static.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/PR2743-reference-missing-static.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/PR2743-reference-missing-static.c (original) +++ cfe/trunk/test/CodeGen/PR2743-reference-missing-static.c Mon Mar 23 21:24:46 2009 @@ -1,4 +1,4 @@ -// RUN: clang -emit-llvm -o %t %s +// RUN: clang-cc -emit-llvm -o %t %s // PR2743 // Modified: cfe/trunk/test/CodeGen/PR3130-cond-constant.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/PR3130-cond-constant.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/PR3130-cond-constant.c (original) +++ cfe/trunk/test/CodeGen/PR3130-cond-constant.c Mon Mar 23 21:24:46 2009 @@ -1,3 +1,3 @@ -// RUN: clang -emit-llvm %s -o - +// RUN: clang-cc -emit-llvm %s -o - int a = 2.0 ? 1 : 2; Modified: cfe/trunk/test/CodeGen/PR3589-freestanding-libcalls.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/PR3589-freestanding-libcalls.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/PR3589-freestanding-libcalls.c (original) +++ cfe/trunk/test/CodeGen/PR3589-freestanding-libcalls.c Mon Mar 23 21:24:46 2009 @@ -1,6 +1,6 @@ -// RUN: clang -emit-llvm %s -o - | grep 'declare i32 @printf' | count 1 && -// RUN: clang -O2 -emit-llvm %s -o - | grep 'declare i32 @puts' | count 1 && -// RUN: clang -ffreestanding -O2 -emit-llvm %s -o - | grep 'declare i32 @puts' | count 0 +// RUN: clang-cc -emit-llvm %s -o - | grep 'declare i32 @printf' | count 1 && +// RUN: clang-cc -O2 -emit-llvm %s -o - | grep 'declare i32 @puts' | count 1 && +// RUN: clang-cc -ffreestanding -O2 -emit-llvm %s -o - | grep 'declare i32 @puts' | count 0 #include Modified: cfe/trunk/test/CodeGen/PR3613-static-decl.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/PR3613-static-decl.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/PR3613-static-decl.c (original) +++ cfe/trunk/test/CodeGen/PR3613-static-decl.c Mon Mar 23 21:24:46 2009 @@ -1,4 +1,4 @@ -// RUN: clang -triple i386-unknown-unknown -emit-llvm -o %t %s && +// RUN: clang-cc -triple i386-unknown-unknown -emit-llvm -o %t %s && // RUN: grep '@g0 = internal global .struct.s0 <{ i32 3 }>' %t | count 1 struct s0 { Modified: cfe/trunk/test/CodeGen/PR3709-int-to-pointer-sign.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/PR3709-int-to-pointer-sign.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/PR3709-int-to-pointer-sign.c (original) +++ cfe/trunk/test/CodeGen/PR3709-int-to-pointer-sign.c Mon Mar 23 21:24:46 2009 @@ -1,4 +1,4 @@ -// RUN: clang -emit-llvm %s -o - -O1 -triple=x86_64-gnu-linux | grep "i64 -1" +// RUN: clang-cc -emit-llvm %s -o - -O1 -triple=x86_64-gnu-linux | grep "i64 -1" // PR3709 long long a() { return (long long)(int*)-1;} Modified: cfe/trunk/test/CodeGen/address-space-cast.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/address-space-cast.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/address-space-cast.c (original) +++ cfe/trunk/test/CodeGen/address-space-cast.c Mon Mar 23 21:24:46 2009 @@ -1,4 +1,4 @@ -// RUN: clang -emit-llvm < %s +// RUN: clang-cc -emit-llvm < %s volatile unsigned char* const __attribute__((address_space(1))) serial_ctrl = 0x02; Modified: cfe/trunk/test/CodeGen/address-space.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/address-space.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/address-space.c (original) +++ cfe/trunk/test/CodeGen/address-space.c Mon Mar 23 21:24:46 2009 @@ -1,8 +1,8 @@ -// RUN: clang -emit-llvm < %s | grep '@foo.*global.*addrspace(1)' && -// RUN: clang -emit-llvm < %s | grep '@ban.*global.*addrspace(1)' && -// RUN: clang -emit-llvm < %s | grep 'load.*addrspace(1)' | count 2 && -// RUN: clang -emit-llvm < %s | grep 'load.*addrspace(2).. @A' && -// RUN: clang -emit-llvm < %s | grep 'load.*addrspace(2).. @B' +// RUN: clang-cc -emit-llvm < %s | grep '@foo.*global.*addrspace(1)' && +// RUN: clang-cc -emit-llvm < %s | grep '@ban.*global.*addrspace(1)' && +// RUN: clang-cc -emit-llvm < %s | grep 'load.*addrspace(1)' | count 2 && +// RUN: clang-cc -emit-llvm < %s | grep 'load.*addrspace(2).. @A' && +// RUN: clang-cc -emit-llvm < %s | grep 'load.*addrspace(2).. @B' int foo __attribute__((address_space(1))); int ban[10] __attribute__((address_space(1))); Modified: cfe/trunk/test/CodeGen/alias.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/alias.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/alias.c (original) +++ cfe/trunk/test/CodeGen/alias.c Mon Mar 23 21:24:46 2009 @@ -1,4 +1,4 @@ -// RUN: clang -triple i386-pc-linux-gnu -emit-llvm -o %t %s && +// RUN: clang-cc -triple i386-pc-linux-gnu -emit-llvm -o %t %s && // RUN: grep '@g0 = common global i32 0' %t && // RUN: grep '@f1 = alias void ()\* @f0' %t && // RUN: grep '@g1 = alias i32\* @g0' %t && Modified: cfe/trunk/test/CodeGen/align-local.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/align-local.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/align-local.c (original) +++ cfe/trunk/test/CodeGen/align-local.c Mon Mar 23 21:24:46 2009 @@ -1,4 +1,4 @@ -// RUN: clang -emit-llvm < %s | grep "align 16" | count 2 +// RUN: clang-cc -emit-llvm < %s | grep "align 16" | count 2 typedef struct __attribute((aligned(16))) {int x[4];} ff; Modified: cfe/trunk/test/CodeGen/alignof.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/alignof.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/alignof.c (original) +++ cfe/trunk/test/CodeGen/alignof.c Mon Mar 23 21:24:46 2009 @@ -1,4 +1,4 @@ -// RUN: clang -triple i386-unknown-unknown -O1 -emit-llvm -o %t %s && +// RUN: clang-cc -triple i386-unknown-unknown -O1 -emit-llvm -o %t %s && // RUN: grep 'ret i32 4' %t enum e0 { E0 }; Modified: cfe/trunk/test/CodeGen/array.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/array.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/array.c (original) +++ cfe/trunk/test/CodeGen/array.c Mon Mar 23 21:24:46 2009 @@ -1,4 +1,4 @@ -// RUN: clang -emit-llvm %s -o %t +// RUN: clang-cc -emit-llvm %s -o %t int f() { int a[2]; Modified: cfe/trunk/test/CodeGen/asm.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/asm.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/asm.c (original) +++ cfe/trunk/test/CodeGen/asm.c Mon Mar 23 21:24:46 2009 @@ -1,4 +1,4 @@ -// RUN: clang -emit-llvm %s -o %t -arch=i386 && +// RUN: clang-cc -emit-llvm %s -o %t -arch=i386 && void t1(int len) { __asm__ volatile("" : "=&r"(len), "+&r"(len)); } Modified: cfe/trunk/test/CodeGen/atomic.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/atomic.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/atomic.c (original) +++ cfe/trunk/test/CodeGen/atomic.c Mon Mar 23 21:24:46 2009 @@ -1,4 +1,4 @@ -// RUN: clang %s -emit-llvm -o - > %t1 && +// RUN: clang-cc %s -emit-llvm -o - > %t1 && // RUN: grep @llvm.atomic.load.add.i32 %t1 && // RUN: grep @llvm.atomic.load.sub.i32 %t1 && // RUN: grep @llvm.atomic.load.min.i32 %t1 && Modified: cfe/trunk/test/CodeGen/attr-nodebug.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/attr-nodebug.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/attr-nodebug.c (original) +++ cfe/trunk/test/CodeGen/attr-nodebug.c Mon Mar 23 21:24:46 2009 @@ -1,4 +1,4 @@ -// RUN: clang -g -emit-llvm -o %t %s && +// RUN: clang-cc -g -emit-llvm -o %t %s && // RUN: not grep 'call void @llvm.dbg.func.start' %t void t1() __attribute__((nodebug)); Modified: cfe/trunk/test/CodeGen/attr-noinline.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/attr-noinline.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/attr-noinline.c (original) +++ cfe/trunk/test/CodeGen/attr-noinline.c Mon Mar 23 21:24:46 2009 @@ -1,4 +1,4 @@ -// RUN: clang -g -emit-llvm -o %t %s && +// RUN: clang-cc -g -emit-llvm -o %t %s && // RUN: grep 'noinline' %t void t1() __attribute__((noinline)); Modified: cfe/trunk/test/CodeGen/attr-used.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/attr-used.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/attr-used.c (original) +++ cfe/trunk/test/CodeGen/attr-used.c Mon Mar 23 21:24:46 2009 @@ -1,4 +1,4 @@ -// RUN: clang -emit-llvm -o %t %s && +// RUN: clang-cc -emit-llvm -o %t %s && // RUN: grep '@llvm.used = .*@g0' %t && // RUN: grep '@llvm.used = .*@f0' %t && // RUN: grep '@llvm.used = .*@f1.l0' %t Modified: cfe/trunk/test/CodeGen/attributes.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/attributes.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/attributes.c (original) +++ cfe/trunk/test/CodeGen/attributes.c Mon Mar 23 21:24:46 2009 @@ -1,4 +1,4 @@ -// RUN: clang -emit-llvm -o %t %s && +// RUN: clang-cc -emit-llvm -o %t %s && // RUN: grep 't1.*noreturn' %t && // RUN: grep 't2.*nounwind' %t && // RUN: grep 'weak.*t3' %t && Modified: cfe/trunk/test/CodeGen/bitfield-assign.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/bitfield-assign.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/bitfield-assign.c (original) +++ cfe/trunk/test/CodeGen/bitfield-assign.c Mon Mar 23 21:24:46 2009 @@ -4,12 +4,12 @@ /* Check that we get one load for each simple assign and two for the compound assign (load the old value before the add then load again to store back). Also check that our g0 pattern is good. */ -// RUN: clang -triple i386-unknown-unknown -O0 -emit-llvm -o %t %s && +// RUN: clang-cc -triple i386-unknown-unknown -O0 -emit-llvm -o %t %s && // RUN: grep 'load ' %t | count 5 && // RUN: grep "@g0" %t | count 4 && // Check that we got the right value. -// RUN: clang -triple i386-unknown-unknown -O3 -emit-llvm -o %t %s && +// RUN: clang-cc -triple i386-unknown-unknown -O3 -emit-llvm -o %t %s && // RUN: grep 'load ' %t | count 0 && // RUN: grep "@g0" %t | count 0 Modified: cfe/trunk/test/CodeGen/bitfield-init.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/bitfield-init.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/bitfield-init.c (original) +++ cfe/trunk/test/CodeGen/bitfield-init.c Mon Mar 23 21:24:46 2009 @@ -1,4 +1,4 @@ -// RUN: clang %s -emit-llvm -o %t +// RUN: clang-cc %s -emit-llvm -o %t typedef struct { unsigned int i: 1; } c; const c d = { 1 }; Modified: cfe/trunk/test/CodeGen/bitfield.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/bitfield.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/bitfield.c (original) +++ cfe/trunk/test/CodeGen/bitfield.c Mon Mar 23 21:24:46 2009 @@ -1,4 +1,4 @@ -// RUN: clang -triple i386-unknown-unknown %s -emit-llvm-bc -o - | opt -std-compile-opts | llvm-dis > %t && +// RUN: clang-cc -triple i386-unknown-unknown %s -emit-llvm-bc -o - | opt -std-compile-opts | llvm-dis > %t && // RUN: grep "ret i32" %t | count 4 && // RUN: grep "ret i32 1" %t | count 4 Modified: cfe/trunk/test/CodeGen/blocks-1.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/blocks-1.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/blocks-1.c (original) +++ cfe/trunk/test/CodeGen/blocks-1.c Mon Mar 23 21:24:46 2009 @@ -1,4 +1,4 @@ -// RUN: clang %s -emit-llvm -o %t -fblocks -f__block && +// RUN: clang-cc %s -emit-llvm -o %t -fblocks -f__block && // RUN: grep "_Block_object_dispose" %t | count 15 && // RUN: grep "__copy_helper_block_" %t | count 12 && // RUN: grep "__destroy_helper_block_" %t | count 12 && Modified: cfe/trunk/test/CodeGen/blocks.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/blocks.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/blocks.c (original) +++ cfe/trunk/test/CodeGen/blocks.c Mon Mar 23 21:24:46 2009 @@ -1,2 +1,2 @@ -// RUN: clang %s -emit-llvm -o %t -fblocks +// RUN: clang-cc %s -emit-llvm -o %t -fblocks void (^f)(void) = ^{}; Modified: cfe/trunk/test/CodeGen/bool-bitfield.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/bool-bitfield.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/bool-bitfield.c (original) +++ cfe/trunk/test/CodeGen/bool-bitfield.c Mon Mar 23 21:24:46 2009 @@ -1,4 +1,4 @@ -// RUN: clang -emit-llvm %s -o %t +// RUN: clang-cc -emit-llvm %s -o %t // From GCC PR19331 struct SysParams Modified: cfe/trunk/test/CodeGen/bool-convert.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/bool-convert.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/bool-convert.c (original) +++ cfe/trunk/test/CodeGen/bool-convert.c Mon Mar 23 21:24:46 2009 @@ -1,4 +1,4 @@ -// RUN: clang -emit-llvm < %s | grep i1 | count 1 +// RUN: clang-cc -emit-llvm < %s | grep i1 | count 1 // All of these should uses the memory representation of _Bool struct teststruct1 {_Bool a, b;} test1; _Bool* test2; Modified: cfe/trunk/test/CodeGen/bool-init.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/bool-init.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/bool-init.c (original) +++ cfe/trunk/test/CodeGen/bool-init.c Mon Mar 23 21:24:46 2009 @@ -1,4 +1,4 @@ -// RUN: clang -emit-llvm < %s | grep i1 | count 1 +// RUN: clang-cc -emit-llvm < %s | grep i1 | count 1 // Check that the type of this global isn't i1 _Bool test = &test; Modified: cfe/trunk/test/CodeGen/boolassign.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/boolassign.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/boolassign.c (original) +++ cfe/trunk/test/CodeGen/boolassign.c Mon Mar 23 21:24:46 2009 @@ -1,4 +1,4 @@ -// RUN: clang %s -emit-llvm -o %t +// RUN: clang-cc %s -emit-llvm -o %t int testBoolAssign(void) { int ss; Modified: cfe/trunk/test/CodeGen/builtin-count-zeros.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/builtin-count-zeros.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/builtin-count-zeros.c (original) +++ cfe/trunk/test/CodeGen/builtin-count-zeros.c Mon Mar 23 21:24:46 2009 @@ -1,4 +1,4 @@ -// RUN: clang -emit-llvm %s -o - | grep 'cttz' | count 2 && -// RUN: clang -emit-llvm %s -o - | grep 'ctlz' | count 2 +// RUN: clang-cc -emit-llvm %s -o - | grep 'cttz' | count 2 && +// RUN: clang-cc -emit-llvm %s -o - | grep 'ctlz' | count 2 int a(int a) {return __builtin_ctz(a) + __builtin_clz(a);} Modified: cfe/trunk/test/CodeGen/builtin-memfns.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/builtin-memfns.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/builtin-memfns.c (original) +++ cfe/trunk/test/CodeGen/builtin-memfns.c Mon Mar 23 21:24:46 2009 @@ -1,4 +1,4 @@ -// RUN: clang -arch i386 -emit-llvm -o %t %s && +// RUN: clang-cc -arch i386 -emit-llvm -o %t %s && // RUN: grep '@llvm.memset.i32' %t && // RUN: grep '@llvm.memcpy.i32' %t && // RUN: grep '@llvm.memmove.i32' %t && Modified: cfe/trunk/test/CodeGen/builtin-rename.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/builtin-rename.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/builtin-rename.c (original) +++ cfe/trunk/test/CodeGen/builtin-rename.c Mon Mar 23 21:24:46 2009 @@ -1,4 +1,4 @@ -// RUN: clang %s -emit-llvm -o - | grep 'declare.*printf' | count 1 +// RUN: clang-cc %s -emit-llvm -o - | grep 'declare.*printf' | count 1 // PR3612 int printf(const char *, ...); Modified: cfe/trunk/test/CodeGen/builtin-stackaddress.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/builtin-stackaddress.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/builtin-stackaddress.c (original) +++ cfe/trunk/test/CodeGen/builtin-stackaddress.c Mon Mar 23 21:24:46 2009 @@ -1,5 +1,5 @@ -// RUN: clang -emit-llvm < %s | grep "llvm.returnaddress" && -// RUN: clang -emit-llvm < %s | grep "llvm.frameaddress" +// RUN: clang-cc -emit-llvm < %s | grep "llvm.returnaddress" && +// RUN: clang-cc -emit-llvm < %s | grep "llvm.frameaddress" void* a(unsigned x) { return __builtin_return_address(0); } Modified: cfe/trunk/test/CodeGen/builtinmemcpy.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/builtinmemcpy.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/builtinmemcpy.c (original) +++ cfe/trunk/test/CodeGen/builtinmemcpy.c Mon Mar 23 21:24:46 2009 @@ -1,3 +1,3 @@ -// RUN: clang -emit-llvm < %s -o - | grep "llvm.memcpy" +// RUN: clang-cc -emit-llvm < %s -o - | grep "llvm.memcpy" char* x(char* a, char* b) {return __builtin_memcpy(a, b, 4);} Modified: cfe/trunk/test/CodeGen/builtins-ffs_parity_popcount.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/builtins-ffs_parity_popcount.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/builtins-ffs_parity_popcount.c (original) +++ cfe/trunk/test/CodeGen/builtins-ffs_parity_popcount.c Mon Mar 23 21:24:46 2009 @@ -1,4 +1,4 @@ -// RUN: clang -emit-llvm -o - %s > %t +// RUN: clang-cc -emit-llvm -o - %s > %t // RUN: ! grep "__builtin" %t #include Modified: cfe/trunk/test/CodeGen/builtins-powi.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/builtins-powi.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/builtins-powi.c (original) +++ cfe/trunk/test/CodeGen/builtins-powi.c Mon Mar 23 21:24:46 2009 @@ -1,4 +1,4 @@ -// RUN: clang -emit-llvm -o - %s > %t +// RUN: clang-cc -emit-llvm -o - %s > %t // RUN: ! grep "__builtin" %t #include Modified: cfe/trunk/test/CodeGen/builtins-x86.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/builtins-x86.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/builtins-x86.c (original) +++ cfe/trunk/test/CodeGen/builtins-x86.c Mon Mar 23 21:24:46 2009 @@ -1,5 +1,5 @@ -// RUN: clang -DUSE_64 -triple x86_64-unknown-unknown -emit-llvm -o %t %s && -// RUN: clang -DUSE_ALL -triple x86_64-unknown-unknown -fsyntax-only -o %t %s +// RUN: clang-cc -DUSE_64 -triple x86_64-unknown-unknown -emit-llvm -o %t %s && +// RUN: clang-cc -DUSE_ALL -triple x86_64-unknown-unknown -fsyntax-only -o %t %s #ifdef USE_ALL #define USE_3DNOW Modified: cfe/trunk/test/CodeGen/builtins.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/builtins.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/builtins.c (original) +++ cfe/trunk/test/CodeGen/builtins.c Mon Mar 23 21:24:46 2009 @@ -1,4 +1,4 @@ -// RUN: clang -emit-llvm -o %t %s && +// RUN: clang-cc -emit-llvm -o %t %s && // RUN: not grep __builtin %t #include Modified: cfe/trunk/test/CodeGen/builtinshufflevector.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/builtinshufflevector.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/builtinshufflevector.c (original) +++ cfe/trunk/test/CodeGen/builtinshufflevector.c Mon Mar 23 21:24:46 2009 @@ -1,4 +1,4 @@ -// RUN: clang -emit-llvm < %s | grep 'shufflevector' | count 1 +// RUN: clang-cc -emit-llvm < %s | grep 'shufflevector' | count 1 typedef int v4si __attribute__ ((vector_size (16))); v4si a(v4si x, v4si y) {return __builtin_shufflevector(x, y, 3, 2, 5, 7);} Modified: cfe/trunk/test/CodeGen/c-strings.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/c-strings.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/c-strings.c (original) +++ cfe/trunk/test/CodeGen/c-strings.c Mon Mar 23 21:24:46 2009 @@ -1,4 +1,4 @@ -// RUN: clang -emit-llvm -o %t %s && +// RUN: clang-cc -emit-llvm -o %t %s && // RUN: grep "hello" %t | count 3 && // RUN: grep 'c"hello\\00"' %t | count 2 && // RUN: grep 'c"hello\\00\\00\\00"' %t | count 1 && Modified: cfe/trunk/test/CodeGen/cast-to-union.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/cast-to-union.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/cast-to-union.c (original) +++ cfe/trunk/test/CodeGen/cast-to-union.c Mon Mar 23 21:24:46 2009 @@ -1,4 +1,4 @@ -// RUN: clang -emit-llvm < %s -o %t && +// RUN: clang-cc -emit-llvm < %s -o %t && // RUN: grep "store i32 351, i32*" %t && // RUN: grep "w = global %0 <{ i32 2, i8 0, i8 0, i8 0, i8 0 }>" %t && // RUN: grep "y = global %1 <{ double 7.300000e+01 }>" %t Modified: cfe/trunk/test/CodeGen/cast.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/cast.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/cast.c (original) +++ cfe/trunk/test/CodeGen/cast.c Mon Mar 23 21:24:46 2009 @@ -1,4 +1,4 @@ -// RUN: clang %s -emit-llvm -o %t +// RUN: clang-cc %s -emit-llvm -o %t extern void go(const void *p); float v[2] = { 0.0, 1.0 }; Modified: cfe/trunk/test/CodeGen/cfstring.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/cfstring.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/cfstring.c (original) +++ cfe/trunk/test/CodeGen/cfstring.c Mon Mar 23 21:24:46 2009 @@ -1,4 +1,4 @@ -// RUN: clang -emit-llvm %s -o %t +// RUN: clang-cc -emit-llvm %s -o %t #define CFSTR __builtin___CFStringMakeConstantString void f() { Modified: cfe/trunk/test/CodeGen/cfstring2.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/cfstring2.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/cfstring2.c (original) +++ cfe/trunk/test/CodeGen/cfstring2.c Mon Mar 23 21:24:46 2009 @@ -1,4 +1,4 @@ -// RUN: clang -emit-llvm %s -o %t +// RUN: clang-cc -emit-llvm %s -o %t #ifdef __APPLE__ #include Modified: cfe/trunk/test/CodeGen/cleanup-stack.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/cleanup-stack.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/cleanup-stack.c (original) +++ cfe/trunk/test/CodeGen/cleanup-stack.c Mon Mar 23 21:24:46 2009 @@ -1,4 +1,4 @@ -// RUN: clang -emit-llvm %s -o %t && +// RUN: clang-cc -emit-llvm %s -o %t && // RUN: grep "store i32 0, i32\* %cleanup" %t | count 2 void f(int n) { int a[n]; Modified: cfe/trunk/test/CodeGen/complex.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/complex.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/complex.c (original) +++ cfe/trunk/test/CodeGen/complex.c Mon Mar 23 21:24:46 2009 @@ -1,4 +1,4 @@ -// RUN: clang -emit-llvm < %s +// RUN: clang-cc -emit-llvm < %s int main(void) { Modified: cfe/trunk/test/CodeGen/compound-literal.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/compound-literal.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/compound-literal.c (original) +++ cfe/trunk/test/CodeGen/compound-literal.c Mon Mar 23 21:24:46 2009 @@ -1,4 +1,4 @@ -// RUN: clang < %s -emit-llvm +// RUN: clang-cc < %s -emit-llvm int* a = &(int){1}; struct s {int a, b, c;} * b = &(struct s) {1, 2, 3}; Modified: cfe/trunk/test/CodeGen/compound.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/compound.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/compound.c (original) +++ cfe/trunk/test/CodeGen/compound.c Mon Mar 23 21:24:46 2009 @@ -1,4 +1,4 @@ -// RUN: clang < %s -emit-llvm +// RUN: clang-cc < %s -emit-llvm int A; long long B; int C; Modified: cfe/trunk/test/CodeGen/conditional-gnu-ext.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/conditional-gnu-ext.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/conditional-gnu-ext.c (original) +++ cfe/trunk/test/CodeGen/conditional-gnu-ext.c Mon Mar 23 21:24:46 2009 @@ -1,4 +1,4 @@ -// RUN: clang -emit-llvm %s -o %t +// RUN: clang-cc -emit-llvm %s -o %t // PR1824 int foo(int x, short y) { Modified: cfe/trunk/test/CodeGen/conditional.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/conditional.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/conditional.c (original) +++ cfe/trunk/test/CodeGen/conditional.c Mon Mar 23 21:24:46 2009 @@ -1,4 +1,4 @@ -// RUN: clang -emit-llvm %s -o %t +// RUN: clang-cc -emit-llvm %s -o %t float test1(int cond, float a, float b) { Modified: cfe/trunk/test/CodeGen/const-init.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/const-init.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/const-init.c (original) +++ cfe/trunk/test/CodeGen/const-init.c Mon Mar 23 21:24:46 2009 @@ -1,4 +1,4 @@ -// RUN: clang -arch i386 -verify -emit-llvm -o %t %s && +// RUN: clang-cc -arch i386 -verify -emit-llvm -o %t %s && #include Modified: cfe/trunk/test/CodeGen/const-label-addr.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/const-label-addr.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/const-label-addr.c (original) +++ cfe/trunk/test/CodeGen/const-label-addr.c Mon Mar 23 21:24:46 2009 @@ -1,4 +1,4 @@ -// RUN: clang %s -emit-llvm -o %t +// RUN: clang-cc %s -emit-llvm -o %t int a() { A:;static void* a = &&A; } Modified: cfe/trunk/test/CodeGen/constant-comparison.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/constant-comparison.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/constant-comparison.c (original) +++ cfe/trunk/test/CodeGen/constant-comparison.c Mon Mar 23 21:24:46 2009 @@ -1,5 +1,5 @@ -// RUN: clang -emit-llvm %s -o - 2>&1 | not grep warning && -// RUN: clang -emit-llvm %s -o - | grep @b | count 1 +// RUN: clang-cc -emit-llvm %s -o - 2>&1 | not grep warning && +// RUN: clang-cc -emit-llvm %s -o - | grep @b | count 1 int a, b; int *c1 = 1 < 2 ? &a : &b; Modified: cfe/trunk/test/CodeGen/constructor-attribute.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/constructor-attribute.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/constructor-attribute.c (original) +++ cfe/trunk/test/CodeGen/constructor-attribute.c Mon Mar 23 21:24:46 2009 @@ -1,4 +1,4 @@ -// RUN: clang -emit-llvm -o %t %s && +// RUN: clang-cc -emit-llvm -o %t %s && // RUN: grep -e "global_ctors.*@A" %t && // RUN: grep -e "global_dtors.*@B" %t && // RUN: grep -e "global_ctors.*@C" %t && Modified: cfe/trunk/test/CodeGen/cxx-condition.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/cxx-condition.cpp?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/cxx-condition.cpp (original) +++ cfe/trunk/test/CodeGen/cxx-condition.cpp Mon Mar 23 21:24:46 2009 @@ -1,4 +1,4 @@ -// RUN: clang -emit-llvm %s -o %t +// RUN: clang-cc -emit-llvm %s -o %t void f() { int a; Modified: cfe/trunk/test/CodeGen/cxx-default-arg.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/cxx-default-arg.cpp?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/cxx-default-arg.cpp (original) +++ cfe/trunk/test/CodeGen/cxx-default-arg.cpp Mon Mar 23 21:24:46 2009 @@ -1,4 +1,4 @@ -// RUN: clang -emit-llvm %s -o %t +// RUN: clang-cc -emit-llvm %s -o %t // Note: define CLANG_GENERATE_KNOWN_GOOD and compile to generate code // that makes all of the defaulted arguments explicit. The resulting Modified: cfe/trunk/test/CodeGen/cxx-value-init.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/cxx-value-init.cpp?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/cxx-value-init.cpp (original) +++ cfe/trunk/test/CodeGen/cxx-value-init.cpp Mon Mar 23 21:24:46 2009 @@ -1,4 +1,4 @@ -// RUN: clang -emit-llvm %s -o %t +// RUN: clang-cc -emit-llvm %s -o %t enum E {}; int v1 = E(); Modified: cfe/trunk/test/CodeGen/debug-info.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/debug-info.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/debug-info.c (original) +++ cfe/trunk/test/CodeGen/debug-info.c Mon Mar 23 21:24:46 2009 @@ -1,4 +1,4 @@ -// RUN: clang -o %t --emit-llvm -g %s +// RUN: clang-cc -o %t --emit-llvm -g %s // PR3023 void convert(void) { Modified: cfe/trunk/test/CodeGen/designated-initializers.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/designated-initializers.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/designated-initializers.c (original) +++ cfe/trunk/test/CodeGen/designated-initializers.c Mon Mar 23 21:24:46 2009 @@ -1,4 +1,4 @@ -// RUN: clang -triple i386-unknown-unknown %s -emit-llvm -o - | grep "<{ i8\* null, i32 1024 }>" +// RUN: clang-cc -triple i386-unknown-unknown %s -emit-llvm -o - | grep "<{ i8\* null, i32 1024 }>" struct foo { void *a; Modified: cfe/trunk/test/CodeGen/dllimport-dllexport.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/dllimport-dllexport.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/dllimport-dllexport.c (original) +++ cfe/trunk/test/CodeGen/dllimport-dllexport.c Mon Mar 23 21:24:46 2009 @@ -1,4 +1,4 @@ -// RUN: clang -emit-llvm < %s -o %t && +// RUN: clang-cc -emit-llvm < %s -o %t && // RUN: grep 'dllexport' %t | count 1 && // RUN: not grep 'dllimport' %t Modified: cfe/trunk/test/CodeGen/dostmt.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/dostmt.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/dostmt.c (original) +++ cfe/trunk/test/CodeGen/dostmt.c Mon Mar 23 21:24:46 2009 @@ -1,4 +1,4 @@ -// RUN: clang %s -emit-llvm -o - +// RUN: clang-cc %s -emit-llvm -o - int bar(); int test0() { Modified: cfe/trunk/test/CodeGen/emit-all-decls.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/emit-all-decls.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/emit-all-decls.c (original) +++ cfe/trunk/test/CodeGen/emit-all-decls.c Mon Mar 23 21:24:46 2009 @@ -1,6 +1,6 @@ -// RUN: clang -emit-llvm -o %t %s && +// RUN: clang-cc -emit-llvm -o %t %s && // RUN: not grep "@foo" %t && -// RUN: clang -femit-all-decls -emit-llvm -o %t %s && +// RUN: clang-cc -femit-all-decls -emit-llvm -o %t %s && // RUN: grep "@foo" %t static void foo() { Modified: cfe/trunk/test/CodeGen/empty-union-init.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/empty-union-init.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/empty-union-init.c (original) +++ cfe/trunk/test/CodeGen/empty-union-init.c Mon Mar 23 21:24:46 2009 @@ -1,4 +1,4 @@ -// RUN: clang -emit-llvm < %s -o - +// RUN: clang-cc -emit-llvm < %s -o - // PR2419 struct Mem { Modified: cfe/trunk/test/CodeGen/enum.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/enum.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/enum.c (original) +++ cfe/trunk/test/CodeGen/enum.c Mon Mar 23 21:24:46 2009 @@ -1,4 +1,4 @@ -// RUN: clang -triple i386-unknown-unknown %s -emit-llvm-bc -o - | opt -std-compile-opts | llvm-dis | grep 'ret i32 6' +// RUN: clang-cc -triple i386-unknown-unknown %s -emit-llvm-bc -o - | opt -std-compile-opts | llvm-dis | grep 'ret i32 6' static enum { foo, bar = 1U } z; Modified: cfe/trunk/test/CodeGen/exprs.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/exprs.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/exprs.c (original) +++ cfe/trunk/test/CodeGen/exprs.c Mon Mar 23 21:24:46 2009 @@ -1,4 +1,4 @@ -// RUN: clang %s -emit-llvm -o - +// RUN: clang-cc %s -emit-llvm -o - // PR1895 // sizeof function Modified: cfe/trunk/test/CodeGen/ext-vector-shuffle.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/ext-vector-shuffle.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/ext-vector-shuffle.c (original) +++ cfe/trunk/test/CodeGen/ext-vector-shuffle.c Mon Mar 23 21:24:46 2009 @@ -1,6 +1,6 @@ -// RUN: clang %s -emit-llvm -o - | not grep 'extractelement' -// RUN: clang %s -emit-llvm -o - | not grep 'insertelement' -// RUN: clang %s -emit-llvm -o - | grep 'shufflevector' +// RUN: clang-cc %s -emit-llvm -o - | not grep 'extractelement' +// RUN: clang-cc %s -emit-llvm -o - | not grep 'insertelement' +// RUN: clang-cc %s -emit-llvm -o - | grep 'shufflevector' typedef __attribute__(( ext_vector_type(2) )) float float2; typedef __attribute__(( ext_vector_type(4) )) float float4; Modified: cfe/trunk/test/CodeGen/ext-vector.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/ext-vector.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/ext-vector.c (original) +++ cfe/trunk/test/CodeGen/ext-vector.c Mon Mar 23 21:24:46 2009 @@ -1,4 +1,4 @@ -// RUN: clang -emit-llvm %s -o %t +// RUN: clang-cc -emit-llvm %s -o %t typedef __attribute__(( ext_vector_type(4) )) float float4; typedef __attribute__(( ext_vector_type(2) )) float float2; Modified: cfe/trunk/test/CodeGen/extern-block-var.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/extern-block-var.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/extern-block-var.c (original) +++ cfe/trunk/test/CodeGen/extern-block-var.c Mon Mar 23 21:24:46 2009 @@ -1,4 +1,4 @@ -// RUN: clang %s -emit-llvm -o %t +// RUN: clang-cc %s -emit-llvm -o %t int f() { extern int a; Modified: cfe/trunk/test/CodeGen/flexible-array-init.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/flexible-array-init.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/flexible-array-init.c (original) +++ cfe/trunk/test/CodeGen/flexible-array-init.c Mon Mar 23 21:24:46 2009 @@ -1,7 +1,7 @@ -// RUN: clang -triple i386-unknown-unknown -emit-llvm -o - %s | grep 7 | count 1 && -// RUN: clang -triple i386-unknown-unknown -emit-llvm -o - %s | grep 11 | count 1 && -// RUN: clang -triple i386-unknown-unknown -emit-llvm -o - %s | grep 13 | count 1 && -// RUN: clang -triple i386-unknown-unknown -emit-llvm -o - %s | grep 15 | count 1 +// RUN: clang-cc -triple i386-unknown-unknown -emit-llvm -o - %s | grep 7 | count 1 && +// RUN: clang-cc -triple i386-unknown-unknown -emit-llvm -o - %s | grep 11 | count 1 && +// RUN: clang-cc -triple i386-unknown-unknown -emit-llvm -o - %s | grep 13 | count 1 && +// RUN: clang-cc -triple i386-unknown-unknown -emit-llvm -o - %s | grep 15 | count 1 struct { int x; int y[]; } a = { 1, 7, 11 }; Modified: cfe/trunk/test/CodeGen/func-decl-cleanup.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/func-decl-cleanup.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/func-decl-cleanup.c (original) +++ cfe/trunk/test/CodeGen/func-decl-cleanup.c Mon Mar 23 21:24:46 2009 @@ -1,4 +1,4 @@ -// RUN: clang %s -emit-llvm -o - +// RUN: clang-cc %s -emit-llvm -o - // PR2360 Modified: cfe/trunk/test/CodeGen/func-return-member.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/func-return-member.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/func-return-member.c (original) +++ cfe/trunk/test/CodeGen/func-return-member.c Mon Mar 23 21:24:46 2009 @@ -1,4 +1,4 @@ -// RUN: clang -emit-llvm < %s 2>&1 | not grep 'cannot codegen this l-value expression yet' +// RUN: clang-cc -emit-llvm < %s 2>&1 | not grep 'cannot codegen this l-value expression yet' struct frk { float _Complex c; int x; }; struct faz { struct frk f; }; Modified: cfe/trunk/test/CodeGen/function-attributes.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/function-attributes.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/function-attributes.c (original) +++ cfe/trunk/test/CodeGen/function-attributes.c Mon Mar 23 21:24:46 2009 @@ -1,4 +1,4 @@ -// RUN: clang -triple i386-unknown-unknown -emit-llvm -o %t %s && +// RUN: clang-cc -triple i386-unknown-unknown -emit-llvm -o %t %s && // RUN: grep 'define signext i8 @f0(i32 %x) nounwind' %t && // RUN: grep 'define zeroext i8 @f1(i32 %x) nounwind' %t && // RUN: grep 'define void @f2(i8 signext %x) nounwind' %t && Modified: cfe/trunk/test/CodeGen/functions.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/functions.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/functions.c (original) +++ cfe/trunk/test/CodeGen/functions.c Mon Mar 23 21:24:46 2009 @@ -1,4 +1,4 @@ -// RUN: clang %s -emit-llvm -o %t && +// RUN: clang-cc %s -emit-llvm -o %t && int g(); Modified: cfe/trunk/test/CodeGen/global-decls.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/global-decls.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/global-decls.c (original) +++ cfe/trunk/test/CodeGen/global-decls.c Mon Mar 23 21:24:46 2009 @@ -1,4 +1,4 @@ -// RUN: clang -arch i386 -emit-llvm -o %t %s && +// RUN: clang-cc -arch i386 -emit-llvm -o %t %s && // RUN: grep '@g0_ext = extern_weak global i32' %t && extern int g0_ext __attribute__((weak)); Modified: cfe/trunk/test/CodeGen/global-init.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/global-init.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/global-init.c (original) +++ cfe/trunk/test/CodeGen/global-init.c Mon Mar 23 21:24:46 2009 @@ -1,4 +1,4 @@ -// RUN: clang -emit-llvm -o - %s | not grep "common" +// RUN: clang-cc -emit-llvm -o - %s | not grep "common" // This checks that the global won't be marked as common. // (It shouldn't because it's being initialized). Modified: cfe/trunk/test/CodeGen/global-with-initialiser.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/global-with-initialiser.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/global-with-initialiser.c (original) +++ cfe/trunk/test/CodeGen/global-with-initialiser.c Mon Mar 23 21:24:46 2009 @@ -1,4 +1,4 @@ -// RUN: clang -emit-llvm %s -o %t +// RUN: clang-cc -emit-llvm %s -o %t const int globalInt = 1; int globalIntWithFloat = 1.5f; Modified: cfe/trunk/test/CodeGen/globalinit.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/globalinit.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/globalinit.c (original) +++ cfe/trunk/test/CodeGen/globalinit.c Mon Mar 23 21:24:46 2009 @@ -1,4 +1,4 @@ -// RUN: clang -emit-llvm %s -o %t +// RUN: clang-cc -emit-llvm %s -o %t int A[10] = { 1,2,3,4,5 }; Modified: cfe/trunk/test/CodeGen/incomplete-function-type.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/incomplete-function-type.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/incomplete-function-type.c (original) +++ cfe/trunk/test/CodeGen/incomplete-function-type.c Mon Mar 23 21:24:46 2009 @@ -1,4 +1,4 @@ -// RUN: clang -emit-llvm %s -o - | not grep opaque +// RUN: clang-cc -emit-llvm %s -o - | not grep opaque enum teste1 test1f(void), (*test1)(void) = test1f; struct tests2 test2f(), (*test2)() = test2f; Modified: cfe/trunk/test/CodeGen/indirect-goto.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/indirect-goto.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/indirect-goto.c (original) +++ cfe/trunk/test/CodeGen/indirect-goto.c Mon Mar 23 21:24:46 2009 @@ -1,4 +1,4 @@ -// RUN: clang -triple i386-unknown-unknown -emit-llvm-bc -o - %s | opt -std-compile-opts | llvm-dis > %t && +// RUN: clang-cc -triple i386-unknown-unknown -emit-llvm-bc -o - %s | opt -std-compile-opts | llvm-dis > %t && // RUN: grep "ret i32" %t | count 1 && // RUN: grep "ret i32 210" %t | count 1 Modified: cfe/trunk/test/CodeGen/init-with-member-expr.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/init-with-member-expr.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/init-with-member-expr.c (original) +++ cfe/trunk/test/CodeGen/init-with-member-expr.c Mon Mar 23 21:24:46 2009 @@ -1,4 +1,4 @@ -// RUN: clang < %s -emit-llvm +// RUN: clang-cc < %s -emit-llvm struct test { int a; }; Modified: cfe/trunk/test/CodeGen/init.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/init.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/init.c (original) +++ cfe/trunk/test/CodeGen/init.c Mon Mar 23 21:24:46 2009 @@ -1,4 +1,4 @@ -// RUN: clang -triple i386-unknown-unknown -emit-llvm %s -o %t && +// RUN: clang-cc -triple i386-unknown-unknown -emit-llvm %s -o %t && void f1() { // Scalars in braces. Modified: cfe/trunk/test/CodeGen/int-to-pointer.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/int-to-pointer.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/int-to-pointer.c (original) +++ cfe/trunk/test/CodeGen/int-to-pointer.c Mon Mar 23 21:24:46 2009 @@ -1,4 +1,4 @@ -// RUN: clang -emit-llvm %s -o %t +// RUN: clang-cc -emit-llvm %s -o %t void *test(int i) { Modified: cfe/trunk/test/CodeGen/kr-func-promote.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/kr-func-promote.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/kr-func-promote.c (original) +++ cfe/trunk/test/CodeGen/kr-func-promote.c Mon Mar 23 21:24:46 2009 @@ -1,4 +1,4 @@ -// RUN: clang -triple i386-unknown-unknown %s -emit-llvm -o - | grep "i32 @a(i32)" +// RUN: clang-cc -triple i386-unknown-unknown %s -emit-llvm -o - | grep "i32 @a(i32)" int a(); int a(x) short x; {return x;} Modified: cfe/trunk/test/CodeGen/libcalls.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/libcalls.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/libcalls.c (original) +++ cfe/trunk/test/CodeGen/libcalls.c Mon Mar 23 21:24:46 2009 @@ -1,7 +1,7 @@ -// RUN: clang -fmath-errno=1 -emit-llvm -o %t %s && +// RUN: clang-cc -fmath-errno=1 -emit-llvm -o %t %s && // RUN: grep "declare " %t | count 6 && // RUN: grep "declare " %t | grep "@llvm." | count 1 && -// RUN: clang -fmath-errno=0 -emit-llvm -o %t %s && +// RUN: clang-cc -fmath-errno=0 -emit-llvm -o %t %s && // RUN: grep "declare " %t | count 6 && // RUN: grep "declare " %t | grep -v "@llvm." | count 0 Modified: cfe/trunk/test/CodeGen/linkage-redecl.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/linkage-redecl.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/linkage-redecl.c (original) +++ cfe/trunk/test/CodeGen/linkage-redecl.c Mon Mar 23 21:24:46 2009 @@ -1,4 +1,4 @@ -// RUN: clang -emit-llvm %s -o - |grep internal +// RUN: clang-cc -emit-llvm %s -o - |grep internal // C99 6.2.2p3 // PR3425 Modified: cfe/trunk/test/CodeGen/long-double-x86.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/long-double-x86.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/long-double-x86.c (original) +++ cfe/trunk/test/CodeGen/long-double-x86.c Mon Mar 23 21:24:46 2009 @@ -1,4 +1,4 @@ -// RUN: clang %s -emit-llvm -o - -triple=i686-apple-darwin9 | grep x86_fp80 +// RUN: clang-cc %s -emit-llvm -o - -triple=i686-apple-darwin9 | grep x86_fp80 long double x = 0; int checksize[sizeof(x) == 16 ? 1 : -1]; Modified: cfe/trunk/test/CodeGen/mandel.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/mandel.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/mandel.c (original) +++ cfe/trunk/test/CodeGen/mandel.c Mon Mar 23 21:24:46 2009 @@ -1,4 +1,4 @@ -// RUN: clang -emit-llvm %s -o %t +// RUN: clang-cc -emit-llvm %s -o %t /* Sparc is not C99-compliant */ #if defined(sparc) || defined(__sparc__) || defined(__sparcv9) Modified: cfe/trunk/test/CodeGen/mangle.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/mangle.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/mangle.c (original) +++ cfe/trunk/test/CodeGen/mangle.c Mon Mar 23 21:24:46 2009 @@ -1,4 +1,4 @@ -// RUN: clang -arch i386 -emit-llvm -o %t %s && +// RUN: clang-cc -arch i386 -emit-llvm -o %t %s && // RUN: grep '@_Z2f0i' %t && // RUN: grep '@_Z2f0l' %t && Modified: cfe/trunk/test/CodeGen/merge-attrs.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/merge-attrs.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/merge-attrs.c (original) +++ cfe/trunk/test/CodeGen/merge-attrs.c Mon Mar 23 21:24:46 2009 @@ -1,4 +1,4 @@ -// RUN: clang %s -emit-llvm -o %t +// RUN: clang-cc %s -emit-llvm -o %t void *malloc(__SIZE_TYPE__ size) __attribute__ ((__nothrow__)); Modified: cfe/trunk/test/CodeGen/merge-statics.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/merge-statics.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/merge-statics.c (original) +++ cfe/trunk/test/CodeGen/merge-statics.c Mon Mar 23 21:24:46 2009 @@ -1,4 +1,4 @@ -// RUN: clang < %s -emit-llvm | grep internal | count 1 +// RUN: clang-cc < %s -emit-llvm | grep internal | count 1 // The two decls for 'a' should merge into one llvm GlobalVariable. Modified: cfe/trunk/test/CodeGen/mmintrin-test.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/mmintrin-test.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/mmintrin-test.c (original) +++ cfe/trunk/test/CodeGen/mmintrin-test.c Mon Mar 23 21:24:46 2009 @@ -1,6 +1,6 @@ -// RUN: clang -triple i386-apple-darwin9 -emit-llvm -o %t %s && +// RUN: clang-cc -triple i386-apple-darwin9 -emit-llvm -o %t %s && // RUN: grep define %t | count 1 && -// RUN: clang -triple i386-apple-darwin9 -g -emit-llvm -o %t %s && +// RUN: clang-cc -triple i386-apple-darwin9 -g -emit-llvm -o %t %s && // RUN: grep define %t | count 1 #include Modified: cfe/trunk/test/CodeGen/offsetof.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/offsetof.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/offsetof.c (original) +++ cfe/trunk/test/CodeGen/offsetof.c Mon Mar 23 21:24:46 2009 @@ -1,4 +1,4 @@ -// RUN: clang %s -emit-llvm -o %t +// RUN: clang-cc %s -emit-llvm -o %t // PR2910 struct sockaddr_un { Modified: cfe/trunk/test/CodeGen/opaque-pointer.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/opaque-pointer.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/opaque-pointer.c (original) +++ cfe/trunk/test/CodeGen/opaque-pointer.c Mon Mar 23 21:24:46 2009 @@ -1,4 +1,4 @@ -// RUN: clang %s -emit-llvm -o - +// RUN: clang-cc %s -emit-llvm -o - struct test; typedef void (*my_func) (struct test *); Modified: cfe/trunk/test/CodeGen/overloadable.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/overloadable.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/overloadable.c (original) +++ cfe/trunk/test/CodeGen/overloadable.c Mon Mar 23 21:24:46 2009 @@ -1,4 +1,4 @@ -// RUN: clang -emit-llvm %s -o - | grep _Z1fPA10_1X +// RUN: clang-cc -emit-llvm %s -o - | grep _Z1fPA10_1X int __attribute__((overloadable)) f(int x) { return x; } float __attribute__((overloadable)) f(float x) { return x; } double __attribute__((overloadable)) f(double x) { return x; } Modified: cfe/trunk/test/CodeGen/parameter-passing.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/parameter-passing.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/parameter-passing.c (original) +++ cfe/trunk/test/CodeGen/parameter-passing.c Mon Mar 23 21:24:46 2009 @@ -5,13 +5,13 @@ // We also check _Bool and empty structures, as these can have annoying // corner cases. -// RUN: clang %s -triple i386-unknown-unknown -O3 -emit-llvm -o %t && +// RUN: clang-cc %s -triple i386-unknown-unknown -O3 -emit-llvm -o %t && // RUN: not grep '@g0' %t && -// RUN: clang %s -triple x86_64-unknown-unknown -O3 -emit-llvm -o %t && +// RUN: clang-cc %s -triple x86_64-unknown-unknown -O3 -emit-llvm -o %t && // RUN: not grep '@g0' %t && -// RUN: clang %s -triple ppc-unknown-unknown -O3 -emit-llvm -o %t && +// RUN: clang-cc %s -triple ppc-unknown-unknown -O3 -emit-llvm -o %t && // RUN: not grep '@g0' %t && // RUN: true Modified: cfe/trunk/test/CodeGen/pointer-arithmetic.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/pointer-arithmetic.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/pointer-arithmetic.c (original) +++ cfe/trunk/test/CodeGen/pointer-arithmetic.c Mon Mar 23 21:24:46 2009 @@ -1,4 +1,4 @@ -// RUN: clang -S %s -o - +// RUN: clang-cc -S %s -o - typedef int Int; Modified: cfe/trunk/test/CodeGen/pointer-cmp-type.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/pointer-cmp-type.c?rev=67602&r1=67601&r2=67602&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/pointer-cmp-type.c (original) +++ cfe/trunk/test/CodeGen/pointer-cmp-type.c Mon Mar 23 21:24:46 2009 @@ -1,3 +1,3 @@ -// RUN: clang -emit-llvm %s -o - | grep "icmp ult" +// RUN: clang-cc -emit-llvm %s -o - | grep "icmp ult" int a(char* a, char* b) {return a