Sorry about the 1.5-year delayed question, but shouldn't you use getGCCToolchainDir() instead of GCC_INSTALL_PREFIX so that --gcc-toolchain works on hexagon?
On Thu, Dec 6, 2012 at 4:43 AM, Matthew Curtis <[email protected]> wrote: > Author: mcurtis > Date: Thu Dec 6 06:43:18 2012 > New Revision: 169495 > > URL: http://llvm.org/viewvc/llvm-project?rev=169495&view=rev > Log: > Hexagon TC: Update toolchain to add appropriate include > paths > > - Inherit from Linux rather than ToolChain > - Override AddClangSystemIncludeArgs and AddClangCXXStdlibIncludeArgs > to properly set include paths. > > Added: > cfe/trunk/test/Driver/Inputs/hexagon_tree/ > cfe/trunk/test/Driver/Inputs/hexagon_tree/gnu/ > cfe/trunk/test/Driver/Inputs/hexagon_tree/gnu/bin/ > cfe/trunk/test/Driver/Inputs/hexagon_tree/gnu/bin/hexagon-as (with > props) > cfe/trunk/test/Driver/Inputs/hexagon_tree/gnu/bin/hexagon-gcc (with > props) > cfe/trunk/test/Driver/Inputs/hexagon_tree/gnu/hexagon/ > cfe/trunk/test/Driver/Inputs/hexagon_tree/gnu/hexagon/include/ > cfe/trunk/test/Driver/Inputs/hexagon_tree/gnu/hexagon/include/c++/ > > cfe/trunk/test/Driver/Inputs/hexagon_tree/gnu/hexagon/include/c++/4.4.0/ > > cfe/trunk/test/Driver/Inputs/hexagon_tree/gnu/hexagon/include/c++/4.4.0/ios > cfe/trunk/test/Driver/Inputs/hexagon_tree/gnu/hexagon/include/stdio.h > cfe/trunk/test/Driver/Inputs/hexagon_tree/gnu/lib/ > cfe/trunk/test/Driver/Inputs/hexagon_tree/gnu/lib/gcc/ > cfe/trunk/test/Driver/Inputs/hexagon_tree/gnu/lib/gcc/hexagon/ > cfe/trunk/test/Driver/Inputs/hexagon_tree/gnu/lib/gcc/hexagon/4.4.0/ > > cfe/trunk/test/Driver/Inputs/hexagon_tree/gnu/lib/gcc/hexagon/4.4.0/include/ > > cfe/trunk/test/Driver/Inputs/hexagon_tree/gnu/lib/gcc/hexagon/4.4.0/include-fixed/ > > cfe/trunk/test/Driver/Inputs/hexagon_tree/gnu/lib/gcc/hexagon/4.4.0/include-fixed/limits.h > > cfe/trunk/test/Driver/Inputs/hexagon_tree/gnu/lib/gcc/hexagon/4.4.0/include/stddef.h > cfe/trunk/test/Driver/Inputs/hexagon_tree/qc/ > cfe/trunk/test/Driver/Inputs/hexagon_tree/qc/bin/ > cfe/trunk/test/Driver/Inputs/hexagon_tree/qc/bin/placeholder > cfe/trunk/test/Driver/hexagon-toolchain.c > Modified: > cfe/trunk/lib/Driver/Driver.cpp > cfe/trunk/lib/Driver/ToolChains.cpp > cfe/trunk/lib/Driver/ToolChains.h > cfe/trunk/lib/Driver/Tools.cpp > > Modified: cfe/trunk/lib/Driver/Driver.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Driver.cpp?rev=169495&r1=169494&r2=169495&view=diff > > ============================================================================== > --- cfe/trunk/lib/Driver/Driver.cpp (original) > +++ cfe/trunk/lib/Driver/Driver.cpp Thu Dec 6 06:43:18 2012 > @@ -1701,7 +1701,7 @@ > break; > case llvm::Triple::Linux: > if (Target.getArch() == llvm::Triple::hexagon) > - TC = new toolchains::Hexagon_TC(*this, Target); > + TC = new toolchains::Hexagon_TC(*this, Target, Args); > else > TC = new toolchains::Linux(*this, Target, Args); > break; > > Modified: cfe/trunk/lib/Driver/ToolChains.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains.cpp?rev=169495&r1=169494&r2=169495&view=diff > > ============================================================================== > --- cfe/trunk/lib/Driver/ToolChains.cpp (original) > +++ cfe/trunk/lib/Driver/ToolChains.cpp Thu Dec 6 06:43:18 2012 > @@ -1402,11 +1402,46 @@ > > /// Hexagon Toolchain > > -Hexagon_TC::Hexagon_TC(const Driver &D, const llvm::Triple& Triple) > - : ToolChain(D, Triple) { > - getProgramPaths().push_back(getDriver().getInstalledDir()); > - if (getDriver().getInstalledDir() != getDriver().Dir.c_str()) > - getProgramPaths().push_back(getDriver().Dir); > +std::string Hexagon_TC::GetGnuDir(const std::string &InstalledDir) { > + > + // Locate the rest of the toolchain ... > + if (strlen(GCC_INSTALL_PREFIX)) > + return std::string(GCC_INSTALL_PREFIX); > + > + std::string InstallRelDir = InstalledDir + "/../../gnu"; > + if (llvm::sys::fs::exists(InstallRelDir)) > + return InstallRelDir; > + > + std::string PrefixRelDir = std::string(LLVM_PREFIX) + "/../gnu"; > + if (llvm::sys::fs::exists(PrefixRelDir)) > + return PrefixRelDir; > + > + return InstallRelDir; > +} > + > +Hexagon_TC::Hexagon_TC(const Driver &D, const llvm::Triple &Triple, > + const ArgList &Args) > + : Linux(D, Triple, Args) { > + const std::string InstalledDir(getDriver().getInstalledDir()); > + const std::string GnuDir = Hexagon_TC::GetGnuDir(InstalledDir); > + > + // Note: Generic_GCC::Generic_GCC adds InstalledDir and getDriver().Dir > to > + // program paths > + const std::string BinDir(GnuDir + "/bin"); > + if (llvm::sys::fs::exists(BinDir)) > + getProgramPaths().push_back(BinDir); > + > + // Determine version of GCC libraries and headers to use. > + const std::string HexagonDir(GnuDir + "/lib/gcc/hexagon"); > + llvm::error_code ec; > + GCCVersion MaxVersion= GCCVersion::Parse("0.0.0"); > + for (llvm::sys::fs::directory_iterator di(HexagonDir, ec), de; > + !ec && di != de; di = di.increment(ec)) { > + GCCVersion cv = > GCCVersion::Parse(llvm::sys::path::filename(di->path())); > + if (MaxVersion < cv) > + MaxVersion = cv; > + } > + GCCLibAndIncVersion = MaxVersion; > } > > Hexagon_TC::~Hexagon_TC() { > @@ -1453,13 +1488,39 @@ > return *T; > } > > -bool Hexagon_TC::isPICDefault() const { > - return false; > +void Hexagon_TC::AddClangSystemIncludeArgs(const ArgList &DriverArgs, > + ArgStringList &CC1Args) const { > + const Driver &D = getDriver(); > + > + if (DriverArgs.hasArg(options::OPT_nostdinc) || > + DriverArgs.hasArg(options::OPT_nostdlibinc)) > + return; > + > + llvm::sys::Path InstallDir(D.InstalledDir); > + std::string Ver(GetGCCLibAndIncVersion()); > + std::string GnuDir = Hexagon_TC::GetGnuDir(D.InstalledDir); > + std::string HexagonDir(GnuDir + "/lib/gcc/hexagon/" + Ver); > + addExternCSystemInclude(DriverArgs, CC1Args, HexagonDir + "/include"); > + addExternCSystemInclude(DriverArgs, CC1Args, HexagonDir + > "/include-fixed"); > + addExternCSystemInclude(DriverArgs, CC1Args, GnuDir + > "/hexagon/include"); > } > > -bool Hexagon_TC::isPICDefaultForced() const { > - return false; > +void Hexagon_TC::AddClangCXXStdlibIncludeArgs(const ArgList &DriverArgs, > + ArgStringList &CC1Args) > const { > + > + if (DriverArgs.hasArg(options::OPT_nostdlibinc) || > + DriverArgs.hasArg(options::OPT_nostdincxx)) > + return; > + > + const Driver &D = getDriver(); > + std::string Ver(GetGCCLibAndIncVersion()); > + llvm::sys::Path IncludeDir(Hexagon_TC::GetGnuDir(D.InstalledDir)); > + > + IncludeDir.appendComponent("hexagon/include/c++/"); > + IncludeDir.appendComponent(Ver); > + addSystemInclude(DriverArgs, CC1Args, IncludeDir.str()); > } > +// End Hexagon > > /// TCEToolChain - A tool chain using the llvm bitcode tools to perform > /// all subcommands. See http://tce.cs.tut.fi for our peculiar target. > > Modified: cfe/trunk/lib/Driver/ToolChains.h > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains.h?rev=169495&r1=169494&r2=169495&view=diff > > ============================================================================== > --- cfe/trunk/lib/Driver/ToolChains.h (original) > +++ cfe/trunk/lib/Driver/ToolChains.h Thu Dec 6 06:43:18 2012 > @@ -143,21 +143,6 @@ > /// @} > }; > > -class LLVM_LIBRARY_VISIBILITY Hexagon_TC : public ToolChain { > -protected: > - mutable llvm::DenseMap<unsigned, Tool*> Tools; > - > -public: > - Hexagon_TC(const Driver &D, const llvm::Triple& Triple); > - ~Hexagon_TC(); > - > - virtual Tool &SelectTool(const Compilation &C, const JobAction &JA, > - const ActionList &Inputs) const; > - > - virtual bool isPICDefault() const; > - virtual bool isPICDefaultForced() const; > -}; > - > /// Darwin - The base Darwin tool chain. > class LLVM_LIBRARY_VISIBILITY Darwin : public ToolChain { > public: > @@ -523,6 +508,29 @@ > ArgStringList &CC1Args); > }; > > +class LLVM_LIBRARY_VISIBILITY Hexagon_TC : public Linux { > +protected: > + mutable llvm::DenseMap<unsigned, Tool*> Tools; > + > + GCCVersion GCCLibAndIncVersion; > + > +public: > + Hexagon_TC(const Driver &D, const llvm::Triple &Triple, > + const ArgList &Args); > + ~Hexagon_TC(); > + > + virtual Tool &SelectTool(const Compilation &C, const JobAction &JA, > + const ActionList &Inputs) const; > + > + virtual void AddClangSystemIncludeArgs(const ArgList &DriverArgs, > + ArgStringList &CC1Args) const; > + virtual void AddClangCXXStdlibIncludeArgs(const ArgList &DriverArgs, > + ArgStringList &CC1Args) const; > + > + StringRef GetGCCLibAndIncVersion() const { return > GCCLibAndIncVersion.Text; } > + > + static std::string GetGnuDir(const std::string &InstalledDir); > +}; > > /// TCEToolChain - A tool chain using the llvm bitcode tools to perform > /// all subcommands. See http://tce.cs.tut.fi for our peculiar target. > > Modified: cfe/trunk/lib/Driver/Tools.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Tools.cpp?rev=169495&r1=169494&r2=169495&view=diff > > ============================================================================== > --- cfe/trunk/lib/Driver/Tools.cpp (original) > +++ cfe/trunk/lib/Driver/Tools.cpp Thu Dec 6 06:43:18 2012 > @@ -1273,7 +1273,6 @@ > CmdArgs.push_back("-target-cpu"); > CmdArgs.push_back(Args.MakeArgString("hexagon" + > getHexagonTargetCPU(Args))); > CmdArgs.push_back("-fno-signed-char"); > - CmdArgs.push_back("-nobuiltininc"); > > if (Args.hasArg(options::OPT_mqdsp6_compat)) > CmdArgs.push_back("-mqdsp6-compat"); > > Added: cfe/trunk/test/Driver/Inputs/hexagon_tree/gnu/bin/hexagon-as > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/Inputs/hexagon_tree/gnu/bin/hexagon-as?rev=169495&view=auto > > ============================================================================== > --- cfe/trunk/test/Driver/Inputs/hexagon_tree/gnu/bin/hexagon-as (added) > +++ cfe/trunk/test/Driver/Inputs/hexagon_tree/gnu/bin/hexagon-as Thu Dec > 6 06:43:18 2012 > @@ -0,0 +1 @@ > +# placeholder for testing purposes > \ No newline at end of file > > Propchange: cfe/trunk/test/Driver/Inputs/hexagon_tree/gnu/bin/hexagon-as > > ------------------------------------------------------------------------------ > svn:executable = * > > Added: cfe/trunk/test/Driver/Inputs/hexagon_tree/gnu/bin/hexagon-gcc > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/Inputs/hexagon_tree/gnu/bin/hexagon-gcc?rev=169495&view=auto > > ============================================================================== > --- cfe/trunk/test/Driver/Inputs/hexagon_tree/gnu/bin/hexagon-gcc (added) > +++ cfe/trunk/test/Driver/Inputs/hexagon_tree/gnu/bin/hexagon-gcc Thu Dec > 6 06:43:18 2012 > @@ -0,0 +1 @@ > +# placeholder for testing purposes > \ No newline at end of file > > Propchange: cfe/trunk/test/Driver/Inputs/hexagon_tree/gnu/bin/hexagon-gcc > > ------------------------------------------------------------------------------ > svn:executable = * > > Added: > cfe/trunk/test/Driver/Inputs/hexagon_tree/gnu/hexagon/include/c++/4.4.0/ios > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/Inputs/hexagon_tree/gnu/hexagon/include/c%2B%2B/4.4.0/ios?rev=169495&view=auto > > ============================================================================== > --- > cfe/trunk/test/Driver/Inputs/hexagon_tree/gnu/hexagon/include/c++/4.4.0/ios > (added) > +++ > cfe/trunk/test/Driver/Inputs/hexagon_tree/gnu/hexagon/include/c++/4.4.0/ios > Thu Dec 6 06:43:18 2012 > @@ -0,0 +1 @@ > +// placeholder for testing purposes > > Added: > cfe/trunk/test/Driver/Inputs/hexagon_tree/gnu/hexagon/include/stdio.h > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/Inputs/hexagon_tree/gnu/hexagon/include/stdio.h?rev=169495&view=auto > > ============================================================================== > --- cfe/trunk/test/Driver/Inputs/hexagon_tree/gnu/hexagon/include/stdio.h > (added) > +++ cfe/trunk/test/Driver/Inputs/hexagon_tree/gnu/hexagon/include/stdio.h > Thu Dec 6 06:43:18 2012 > @@ -0,0 +1 @@ > +// placeholder for testing purposes > > Added: > cfe/trunk/test/Driver/Inputs/hexagon_tree/gnu/lib/gcc/hexagon/4.4.0/include-fixed/limits.h > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/Inputs/hexagon_tree/gnu/lib/gcc/hexagon/4.4.0/include-fixed/limits.h?rev=169495&view=auto > > ============================================================================== > --- > cfe/trunk/test/Driver/Inputs/hexagon_tree/gnu/lib/gcc/hexagon/4.4.0/include-fixed/limits.h > (added) > +++ > cfe/trunk/test/Driver/Inputs/hexagon_tree/gnu/lib/gcc/hexagon/4.4.0/include-fixed/limits.h > Thu Dec 6 06:43:18 2012 > @@ -0,0 +1 @@ > +// placeholder for testing purposes > > Added: > cfe/trunk/test/Driver/Inputs/hexagon_tree/gnu/lib/gcc/hexagon/4.4.0/include/stddef.h > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/Inputs/hexagon_tree/gnu/lib/gcc/hexagon/4.4.0/include/stddef.h?rev=169495&view=auto > > ============================================================================== > --- > cfe/trunk/test/Driver/Inputs/hexagon_tree/gnu/lib/gcc/hexagon/4.4.0/include/stddef.h > (added) > +++ > cfe/trunk/test/Driver/Inputs/hexagon_tree/gnu/lib/gcc/hexagon/4.4.0/include/stddef.h > Thu Dec 6 06:43:18 2012 > @@ -0,0 +1 @@ > +// placeholder for testing purposes > > Added: cfe/trunk/test/Driver/Inputs/hexagon_tree/qc/bin/placeholder > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/Inputs/hexagon_tree/qc/bin/placeholder?rev=169495&view=auto > > ============================================================================== > --- cfe/trunk/test/Driver/Inputs/hexagon_tree/qc/bin/placeholder (added) > +++ cfe/trunk/test/Driver/Inputs/hexagon_tree/qc/bin/placeholder Thu Dec > 6 06:43:18 2012 > @@ -0,0 +1 @@ > +// placeholder for testing purposes > > Added: cfe/trunk/test/Driver/hexagon-toolchain.c > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/hexagon-toolchain.c?rev=169495&view=auto > > ============================================================================== > --- cfe/trunk/test/Driver/hexagon-toolchain.c (added) > +++ cfe/trunk/test/Driver/hexagon-toolchain.c Thu Dec 6 06:43:18 2012 > @@ -0,0 +1,71 @@ > +// REQUIRES: hexagon-registered-target > + > +// > ----------------------------------------------------------------------------- > +// Test standard include paths > +// > ----------------------------------------------------------------------------- > + > +// RUN: %clang -### -target hexagon-unknown-linux \ > +// RUN: -ccc-install-dir %S/Inputs/hexagon_tree/qc/bin \ > +// RUN: %s 2>&1 \ > +// RUN: | FileCheck -check-prefix=CHECK001 %s > +// CHECK001: "-cc1" {{.*}} "-internal-externc-isystem" > "[[INSTALL_DIR:.*]]/Inputs/hexagon_tree/qc/bin/../../gnu/lib/gcc/hexagon/4.4.0/include" > +// CHECK001: "-internal-externc-isystem" > "[[INSTALL_DIR]]/Inputs/hexagon_tree/qc/bin/../../gnu/lib/gcc/hexagon/4.4.0/include-fixed" > +// CHECK001: "-internal-externc-isystem" > "[[INSTALL_DIR]]/Inputs/hexagon_tree/qc/bin/../../gnu/hexagon/include" > +// CHECK001-NEXT: > "[[INSTALL_DIR]]/Inputs/hexagon_tree/qc/bin/../../gnu/bin/hexagon-as" > + > +// RUN: %clang -ccc-cxx -x c++ -### -target hexagon-unknown-linux \ > +// RUN: -ccc-install-dir %S/Inputs/hexagon_tree/qc/bin \ > +// RUN: %s 2>&1 \ > +// RUN: | FileCheck -check-prefix=CHECK002 %s > +// CHECK002: "-cc1" {{.*}} "-internal-isystem" > "[[INSTALL_DIR:.*]]/Inputs/hexagon_tree/qc/bin/../../gnu/hexagon/include/c++/4.4.0" > +// CHECK002: "-internal-externc-isystem" > "[[INSTALL_DIR]]/Inputs/hexagon_tree/qc/bin/../../gnu/lib/gcc/hexagon/4.4.0/include" > +// CHECK002: "-internal-externc-isystem" > "[[INSTALL_DIR]]/Inputs/hexagon_tree/qc/bin/../../gnu/lib/gcc/hexagon/4.4.0/include-fixed" > +// CHECK002: "-internal-externc-isystem" > "[[INSTALL_DIR]]/Inputs/hexagon_tree/qc/bin/../../gnu/hexagon/include" > +// CHECK002-NEXT: > "[[INSTALL_DIR]]/Inputs/hexagon_tree/qc/bin/../../gnu/bin/hexagon-as" > + > +// > ----------------------------------------------------------------------------- > +// Test -nostdinc, -nostdlibinc, -nostdinc++ > +// > ----------------------------------------------------------------------------- > + > +// RUN: %clang -### -target hexagon-unknown-linux \ > +// RUN: -ccc-install-dir %S/Inputs/hexagon_tree/qc/bin \ > +// RUN: -nostdinc \ > +// RUN: %s 2>&1 \ > +// RUN: | FileCheck -check-prefix=CHECK003 %s > +// CHECK003: "-cc1" > +// CHECK003-NOT: "-internal-externc-isystem" > "{{.*}}/Inputs/hexagon_tree/qc/bin/../../gnu/lib/gcc/hexagon/4.4.0/include" > +// CHECK003-NOT: "-internal-externc-isystem" > "{{.*}}/Inputs/hexagon_tree/qc/bin/../../gnu/lib/gcc/hexagon/4.4.0/include-fixed" > +// CHECK003-NOT: "-internal-externc-isystem" > "{{.*}}/Inputs/hexagon_tree/qc/bin/../../gnu/hexagon/include" > +// CHECK003-NEXT: > "{{.*}}/Inputs/hexagon_tree/qc/bin/../../gnu/bin/hexagon-as" > + > +// RUN: %clang -### -target hexagon-unknown-linux \ > +// RUN: -ccc-install-dir %S/Inputs/hexagon_tree/qc/bin \ > +// RUN: -nostdlibinc \ > +// RUN: %s 2>&1 \ > +// RUN: | FileCheck -check-prefix=CHECK004 %s > +// CHECK004: "-cc1" > +// CHECK004-NOT: "-internal-externc-isystem" > "{{.*}}/Inputs/hexagon_tree/qc/bin/../../gnu/lib/gcc/hexagon/4.4.0/include" > +// CHECK004-NOT: "-internal-externc-isystem" > "{{.*}}/Inputs/hexagon_tree/qc/bin/../../gnu/lib/gcc/hexagon/4.4.0/include-fixed" > +// CHECK004-NOT: "-internal-externc-isystem" > "{{.*}}/Inputs/hexagon_tree/qc/bin/../../gnu/hexagon/include" > +// CHECK004-NEXT: > "{{.*}}/Inputs/hexagon_tree/qc/bin/../../gnu/bin/hexagon-as" > + > +// RUN: %clang -ccc-cxx -x c++ -### -target hexagon-unknown-linux \ > +// RUN: -ccc-install-dir %S/Inputs/hexagon_tree/qc/bin \ > +// RUN: -nostdlibinc \ > +// RUN: %s 2>&1 \ > +// RUN: | FileCheck -check-prefix=CHECK005 %s > +// CHECK005: "-cc1" > +// CHECK005-NOT: "-internal-isystem" > "{{.*}}/Inputs/hexagon_tree/qc/bin/../../gnu/hexagon/include/c++/4.4.0" > +// CHECK005-NOT: "-internal-externc-isystem" > "{{.*}}/Inputs/hexagon_tree/qc/bin/../../gnu/lib/gcc/hexagon/4.4.0/include" > +// CHECK005-NOT: "-internal-externc-isystem" > "{{.*}}/Inputs/hexagon_tree/qc/bin/../../gnu/lib/gcc/hexagon/4.4.0/include-fixed" > +// CHECK005-NOT: "-internal-externc-isystem" > "{{.*}}/Inputs/hexagon_tree/qc/bin/../../gnu/hexagon/include" > +// CHECK005-NEXT: > "{{.*}}/Inputs/hexagon_tree/qc/bin/../../gnu/bin/hexagon-as" > + > +// RUN: %clang -ccc-cxx -x c++ -### -target hexagon-unknown-linux \ > +// RUN: -ccc-install-dir %S/Inputs/hexagon_tree/qc/bin \ > +// RUN: -nostdinc++ \ > +// RUN: %s 2>&1 \ > +// RUN: | FileCheck -check-prefix=CHECK006 %s > +// CHECK006: "-cc1" > +// CHECK006-NOT: "-internal-isystem" > "{{.*}}/Inputs/hexagon_tree/qc/bin/../../gnu/hexagon/include/c++/4.4.0" > +// CHECK006-NEXT: > "{{.*}}/Inputs/hexagon_tree/qc/bin/../../gnu/bin/hexagon-as" > > > _______________________________________________ > cfe-commits mailing list > [email protected] > http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits >
_______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
