[LLVMdev] [patch] Fix problems with build LLVM using gcc 4.1.0(gcc CVS mainline)

Vladimir A. Merzliakov wanderer at rsu.ru
Sun Oct 23 23:32:32 PDT 2005


>> 2) Same error but some diff. problem with AlphaCodeEmitter.cpp and 
>> PPCCodeEmitter.cpp:
>>
>> GCC don't like definition member-functions in global namespace with 
>> declaration  in llvm::<unnamed> :

Sorry for wrong comment.
Must be:
GCC 4.1.0 don't like definition member-functions in llvm namespace with 
declaration  in <global>::<unnamed> namespace

For example

PPCCodeEmitter.cpp:

using namespace llvm;

namespace {
  class PPCCodeEmitter : public MachineFunctionPass {
    ...
   }
  ...
}
...
#include "PPCGenCodeEmitter.inc"

But PPCCodeEmitter.inc:

namespace llvm {
  ...
} // end llvm namespace

As result LLVM build terminate with error:

/usr/home/wanderer/pkg/build/llvm/obj/lib/Target/PowerPC/PPCGenCodeEmitter.inc:11: 
error: definition of 'unsigned 
int<unnamed>::PPCCodeEmitter::getBinaryCodeForInstr(llvm::MachineInstr&)' is 
not in namespace enclosing '<unnamed>::PPCCodeEmitter'

After adding "namespace llvm {" in AlphaCodeEmitter.cpp
gcc 4.1.0 terminate build with error:
/home/wanderer/pkg/build/llvm/src/llvm/lib/Target/Alpha/AlphaCodeEmitter.cpp:76: 
error: explicit qualification in declaration of 'llvm::FunctionPass* 
llvm::createAlphaCodeEmitterPass(llvm::MachineCodeEmitter&)'

As result I remove llvm:: from line:
FunctionPass *llvm::createAlphaCodeEmitterPass(MachineCodeEmitter &MCE) {

Vladimir





More information about the llvm-dev mailing list