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

Chandler Carruth chandlerc at gmail.com
Tue Jan 19 22:13:42 PST 2010


On Tue, Jan 19, 2010 at 9:32 PM, Chris Lattner <clattner at apple.com> wrote:
>
> 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

Sounds good to me! r93982.

>
> -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
>
>
> _______________________________________________
> 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