[cfe-commits] r93974 - in /cfe/trunk/include/clang: Basic/TargetInfo.h Frontend/Utils.h

Chris Lattner clattner at apple.com
Tue Jan 19 21:32:12 PST 2010


On Jan 19, 2010, at 7:59 PM, Chandler Carruth wrote:

> Author: chandlerc
> Date: Tue Jan 19 21:59:11 2010
> New Revision: 93974
> 
> URL: http://llvm.org/viewvc/llvm-project?rev=93974&view=rev
> Log:
> Fix a layering issue between Basic and FE by moving a utility class into Basic.
> 
> This isn't entirely satisfactory, as it seems an implementation detail, and
> with nothing to do with TargetInfo. Suggestions on where to put this are
> welcome.

Thanks Chandler, improving layering is great.  How about moving this to a new MacroBuilder.h header file?  I'm not thrilled about adding twine and raw_ostream.h #includes to TargetInfo.h

-Chris
 
> 
> Modified:
>    cfe/trunk/include/clang/Basic/TargetInfo.h
>    cfe/trunk/include/clang/Frontend/Utils.h
> 
> Modified: cfe/trunk/include/clang/Basic/TargetInfo.h
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/TargetInfo.h?rev=93974&r1=93973&r2=93974&view=diff
> 
> ==============================================================================
> --- cfe/trunk/include/clang/Basic/TargetInfo.h (original)
> +++ cfe/trunk/include/clang/Basic/TargetInfo.h Tue Jan 19 21:59:11 2010
> @@ -17,6 +17,8 @@
> // FIXME: Daniel isn't smart enough to use a prototype for this.
> #include "llvm/ADT/StringMap.h"
> #include "llvm/ADT/Triple.h"
> +#include "llvm/ADT/Twine.h"
> +#include "llvm/Support/raw_ostream.h"
> #include "llvm/System/DataTypes.h"
> #include <cassert>
> #include <vector>
> @@ -30,13 +32,34 @@
> namespace clang {
> class Diagnostic;
> class LangOptions;
> -class MacroBuilder;
> class SourceLocation;
> class SourceManager;
> class TargetOptions;
> 
> namespace Builtin { struct Info; }
> 
> +class MacroBuilder {
> +  llvm::raw_ostream &Out;
> +public:
> +  MacroBuilder(llvm::raw_ostream &Output) : Out(Output) {}
> +
> +  /// Append a #define line for macro of the form "#define Name Value\n".
> +  void defineMacro(const llvm::Twine &Name, const llvm::Twine &Value = "1") {
> +    Out << "#define " << Name << ' ' << Value << '\n';
> +  }
> +
> +  /// Append a #undef line for Name.  Name should be of the form XXX
> +  /// and we emit "#undef XXX".
> +  void undefineMacro(const llvm::Twine &Name) {
> +    Out << "#undef " << Name << '\n';
> +  }
> +
> +  /// Directly append Str and a newline to the underlying buffer.
> +  void append(const llvm::Twine &Str) {
> +    Out << Str << '\n';
> +  }
> +};
> +
> /// TargetInfo - This class exposes information about the current target.
> ///
> class TargetInfo {
> 
> Modified: cfe/trunk/include/clang/Frontend/Utils.h
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Frontend/Utils.h?rev=93974&r1=93973&r2=93974&view=diff
> 
> ==============================================================================
> --- cfe/trunk/include/clang/Frontend/Utils.h (original)
> +++ cfe/trunk/include/clang/Frontend/Utils.h Tue Jan 19 21:59:11 2010
> @@ -15,7 +15,6 @@
> #define LLVM_CLANG_FRONTEND_UTILS_H
> 
> #include "llvm/ADT/StringRef.h"
> -#include "llvm/ADT/Twine.h"
> #include "llvm/Support/raw_ostream.h"
> 
> namespace llvm {
> @@ -41,28 +40,6 @@
> class TargetInfo;
> class FrontendOptions;
> 
> -class MacroBuilder {
> -  llvm::raw_ostream &Out;
> -public:
> -  MacroBuilder(llvm::raw_ostream &Output) : Out(Output) {}
> -
> -  /// Append a #define line for macro of the form "#define Name Value\n".
> -  void defineMacro(const llvm::Twine &Name, const llvm::Twine &Value = "1") {
> -    Out << "#define " << Name << ' ' << Value << '\n';
> -  }
> -
> -  /// Append a #undef line for Name.  Name should be of the form XXX
> -  /// and we emit "#undef XXX".
> -  void undefineMacro(const llvm::Twine &Name) {
> -    Out << "#undef " << Name << '\n';
> -  }
> -
> -  /// Directly append Str and a newline to the underlying buffer.
> -  void append(const llvm::Twine &Str) {
> -    Out << Str << '\n';
> -  }
> -};
> -
> /// Normalize \arg File for use in a user defined #include directive (in the
> /// predefines buffer).
> std::string NormalizeDashIncludePath(llvm::StringRef File);
> 
> 
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits





More information about the cfe-commits mailing list