Problem with CVS LLVM build in obj != src dir case

LLVM build without big problems in obj dir == src dir case (for example, last night tester build)
But I have problem with building CVS version LLVM in obj dir != src dir case.

======= Finished building ModuleMaker debug executable (without symbols)

I resend email with updated (after mass header move) log examples.

LLVM build without big problems in obj dir == src dir case (for example, last night tester build)
But I have problem with building CVS version LLVM in obj dir != src dir case.

gmake[1]: Entering directory `/usr/home/wanderer/pkg/build/llvm/obj/projects'
gmake[2]: Entering directory `/usr/home/wanderer/pkg/build/llvm/src/llvm/projects/Stacker'
../../Makefile.common:60: ../../Makefile.config: No such file or directory
../../Makefile.common:65: /Makefile.rules: No such file or directory
gmake[2]: *** No rule to make target `/Makefile.rules'. Stop.
gmake[2]: Leaving directory `/usr/home/wanderer/pkg/build/llvm/src/llvm/projects/Stacker'
gmake[1]: *** [all] Error 1
gmake[1]: Leaving directory `/usr/home/wanderer/pkg/build/llvm/obj/projects'
gmake: *** [all] Error 1

Also some new warnings from last successful buld some days ago:

1) flex

gmake[2]: Entering directory `/usr/home/wanderer/pkg/build/llvm/obj/tools/llvmc'
Flexing /home/wanderer/pkg/build/llvm/src/llvm/tools/llvmc/ConfigLexer.l
"/home/wanderer/pkg/build/llvm/src/llvm/tools/llvmc/ConfigLexer.l", line 191: warning, -s option given but default rule can be matched
gmake[2]: Leaving directory `/usr/home/wanderer/pkg/build/llvm/obj/tools/llvmc'

2) gcc 3.5 (mainline CVS)
Mostly result using ~0 (negative signed int) expression as value of unsigned int function parameter.

Compiling Program.cpp
/usr/home/wanderer/pkg/build/llvm/obj/lib/System/platform/../Unix/Program.cpp: In member function `int llvm::sys::Program::ExecuteAndWait(const std::vector<std::string, std::allocator<std::string> >&) const':
/usr/home/wanderer/pkg/build/llvm/obj/lib/System/platform/../Unix/Program.cpp:132: warning: control reaches end of non-void function

Compiling TableGen.cpp
/home/wanderer/pkg/build/llvm/src/llvm/utils/TableGen/TableGen.cpp: In function `llvm::Record* ParseMachineCode(__gnu_cxx::__normal_iterator<llvm::Record**, std::vector<llvm::Record*, std::allocator<llvm::Record*> > >, __gnu_cxx::__normal_iterator<llvm::Record**, std::vector<llvm::Record*, std::allocator<llvm::Record*> > >, unsigned char*)':
/home/wanderer/pkg/build/llvm/src/llvm/utils/TableGen/TableGen.cpp:227: warning: converting of negative value `-0x000000001' to `unsigned int'
/home/wanderer/pkg/build/llvm/src/llvm/utils/TableGen/TableGen.cpp:234: warning: converting of negative value `-0x000000001' to `unsigned int'
/home/wanderer/pkg/build/llvm/src/llvm/utils/TableGen/TableGen.cpp:235: warning: converting of negative value `-0x000000001' to `unsigned int'

Compiling BottomUpClosure.cpp
/home/wanderer/pkg/build/llvm/src/llvm/lib/Analysis/DataStructure/BottomUpClosure.cpp: In member function `unsigned int llvm::BUDataStructures::calculateGraphs(llvm::Function*, std::vector<llvm::Function*, std::allocator<llvm::Function*> >&, unsigned int&, __gnu_cxx::hash_map<llvm::Function*, unsigned int, __gnu_cxx::hash<llvm::Function*>, std::equal_to<llvm::Function*>, std::allocator<unsigned int> >&)':
/home/wanderer/pkg/build/llvm/src/llvm/lib/Analysis/DataStructure/BottomUpClosure.cpp:109: warning: converting of negative value `-0x000000001' to `unsigned int'

Compiling AliasSetTracker.cpp
/home/wanderer/pkg/build/llvm/src/llvm/lib/Analysis/AliasSetTracker.cpp: In member function `bool llvm::AliasSetTracker::add(llvm::FreeInst*)':
/home/wanderer/pkg/build/llvm/src/llvm/lib/Analysis/AliasSetTracker.cpp:260: warning: passing negative value `-0x000000001' for converting 2 of `llvm::AliasSet& llvm::AliasSetTracker::addPointer(llvm::Value*, unsigned int, llvm::AliasSet::AccessType, bool&)'
/home/wanderer/pkg/build/llvm/src/llvm/lib/Analysis/AliasSetTracker.cpp: In member function `bool llvm::AliasSetTracker::remove(llvm::FreeInst*)':
/home/wanderer/pkg/build/llvm/src/llvm/lib/Analysis/AliasSetTracker.cpp:366: warning: passing negative value `-0x000000001' for converting 2 of `llvm::AliasSet* llvm::AliasSetTracker::findAliasSetForPointer(const llvm::Value*, unsigned int)'

Compiling DeadStoreElimination.cpp
/home/wanderer/pkg/build/llvm/src/llvm/lib/Transforms/Scalar/DeadStoreElimination.cpp: In member function `bool<unnamed>::DSE::runOnBasicBlock(llvm::BasicBlock&)':
/home/wanderer/pkg/build/llvm/src/llvm/lib/Transforms/Scalar/DeadStoreElimination.cpp:72: warning: passing negative value `-0x000000001' for converting 2 of `bool llvm::AliasSetTracker::add(llvm::Value*, unsigned int)'

Compiling LoopExtractor.cpp
/home/wanderer/pkg/build/llvm/src/llvm/include/llvm/PassSupport.h: In function `llvm::Pass* llvm::callDefaultCtor() [with PassName = <unnamed>::LoopExtractor]':
/home/wanderer/pkg/build/llvm/src/llvm/include/llvm/PassSupport.h:209: instantiated from `llvm::RegisterOpt<PassName>::RegisterOpt(const char*, const char*, bool) [with PassName = <unnamed>::LoopExtractor]'
/home/wanderer/pkg/build/llvm/src/llvm/lib/Transforms/IPO/LoopExtractor.cpp:50: instantiated from here
/home/wanderer/pkg/build/llvm/src/llvm/include/llvm/PassSupport.h:171: warning: converting of negative value `-0x000000001' to `unsigned int'

Compiling X86CodeEmitter.cpp
/home/wanderer/pkg/build/llvm/src/llvm/lib/Target/X86/X86CodeEmitter.cpp: In member function `void<unnamed>::Emitter::emitMemModRMByte(const llvm::MachineInstr&, unsigned int, unsigned int)':
/home/wanderer/pkg/build/llvm/src/llvm/lib/Target/X86/X86CodeEmitter.cpp:437: warning: converting of negative value `-0x000000001' to `unsigned int'
/home/wanderer/pkg/build/llvm/src/llvm/lib/Target/X86/X86CodeEmitter.cpp:437: warning: converting of negative value `-0x000000001' to `unsigned int'
/home/wanderer/pkg/build/llvm/src/llvm/lib/Target/X86/X86CodeEmitter.cpp:437: warning: converting of negative value `-0x000000001' to `unsigned int'
/home/wanderer/pkg/build/llvm/src/llvm/lib/Target/X86/X86CodeEmitter.cpp:437: warning: converting of negative value `-0x000000001' to `unsigned int'
/home/wanderer/pkg/build/llvm/src/llvm/lib/Target/X86/X86CodeEmitter.cpp:437: warning: converting of negative value `-0x000000001' to `unsigned int'
Compiling X86FloatingPoint.cpp
/home/wanderer/pkg/build/llvm/src/llvm/lib/Target/X86/X86FloatingPoint.cpp: In member function `void<unnamed>::FPS::popStackAfter(llvm::ilist_iterator<llvm::MachineInstr>&)':
/home/wanderer/pkg/build/llvm/src/llvm/lib/Target/X86/X86FloatingPoint.cpp:339: warning: converting of negative value `-0x000000001' to `unsigned int'
/home/wanderer/pkg/build/llvm/src/llvm/lib/Target/X86/X86FloatingPoint.cpp: In member function `void<unnamed>::FPS::freeStackSlotAfter(llvm::ilist_iterator<llvm::MachineInstr>&, unsigned int)':
/home/wanderer/pkg/build/llvm/src/llvm/lib/Target/X86/X86FloatingPoint.cpp:371: warning: converting of negative value `-0x000000001' to `unsigned int'
/home/wanderer/pkg/build/llvm/src/llvm/lib/Target/X86/X86FloatingPoint.cpp:372: warning: converting of negative value `-0x000000001' to `unsigned int'

Compiling SparcV9BurgISel.cpp
/home/wanderer/pkg/build/llvm/src/llvm/lib/Target/SparcV9/SparcV9BurgISel.cpp: In function `uint64_t llvm::ConvertConstantToIntType(const llvm::TargetMachine&, const llvm::Value*, const llvm::Type*, bool&)':
/home/wanderer/pkg/build/llvm/src/llvm/lib/Target/SparcV9/SparcV9BurgISel.cpp:574: warning: converting of negative value `-0x000000001' to `unsigned int'

Compiling SparcV9RegInfo.cpp
/home/wanderer/pkg/build/llvm/src/llvm/lib/Target/SparcV9/SparcV9RegInfo.cpp: In member function `void llvm::SparcV9RegInfo::suggestRegs4MethodArgs(const llvm::Function*, llvm::LiveRangeInfo&) const':
/home/wanderer/pkg/build/llvm/src/llvm/lib/Target/SparcV9/SparcV9RegInfo.cpp:383: warning: converting of negative value `BadRegClass' to `unsigned int'
/home/wanderer/pkg/build/llvm/src/llvm/lib/Target/SparcV9/SparcV9RegInfo.cpp: In member function `void llvm::SparcV9RegInfo::colorMethodArgs(const llvm::Function*, llvm::LiveRangeInfo&, std::vector<llvm::MachineInstr*, std::allocator<llvm::MachineInstr*> >&, std::vector<llvm::MachineInstr*, std::allocator<llvm::MachineInstr*> >&) const':
/home/wanderer/pkg/build/llvm/src/llvm/lib/Target/SparcV9/SparcV9RegInfo.cpp:427: warning: converting of negative value `BadRegClass' to `unsigned int'
/home/wanderer/pkg/build/llvm/src/llvm/lib/Target/SparcV9/SparcV9RegInfo.cpp: In member function `void llvm::SparcV9RegInfo::suggestRegs4CallArgs(llvm::MachineInstr*, llvm::LiveRangeInfo&) const':
/home/wanderer/pkg/build/llvm/src/llvm/lib/Target/SparcV9/SparcV9RegInfo.cpp:618: warning: converting of negative value `BadRegClass' to `unsigned int'

Compiling ProgramInfo.cpp
/home/wanderer/pkg/build/llvm/src/llvm/lib/Debugger/ProgramInfo.cpp: In function `const llvm::GlobalVariable* getNextStopPoint(const llvm::Value*, unsigned int&, unsigned int&)':
/home/wanderer/pkg/build/llvm/src/llvm/lib/Debugger/ProgramInfo.cpp:90: warning: converting of negative value `-0x000000001' to `unsigned int'
/home/wanderer/pkg/build/llvm/src/llvm/lib/Debugger/ProgramInfo.cpp:91: warning: converting of negative value `-0x000000001' to `unsigned int'
/home/wanderer/pkg/build/llvm/src/llvm/lib/Debugger/ProgramInfo.cpp:104: warning: converting of negative value `-0x000000001' to `unsigned int'
/home/wanderer/pkg/build/llvm/src/llvm/lib/Debugger/ProgramInfo.cpp:104: warning: converting of negative value `-0x000000001' to `unsigned int'

I resend email with updated (after mass header move) log examples.

> LLVM build without big problems in obj dir == src dir case (for example,
> last night tester build)
> But I have problem with building CVS version LLVM in obj dir != src dir
> case.

I *only* build with obj dir != src dir and never have a problem.

>
gmake[1]: Entering directory
`/usr/home/wanderer/pkg/build/llvm/obj/projects'
gmake[2]: Entering directory
`/usr/home/wanderer/pkg/build/llvm/src/llvm/projects/Stacker'
../../Makefile.common:60: ../../Makefile.config: No such file or directory
../../Makefile.common:65: /Makefile.rules: No such file or directory
gmake[2]: *** No rule to make target `/Makefile.rules'. Stop.
gmake[2]: Leaving directory
`/usr/home/wanderer/pkg/build/llvm/src/llvm/projects/Stacker'
gmake[1]: *** [all] Error 1
gmake[1]: Leaving directory `/usr/home/wanderer/pkg/build/llvm/obj/projects'
gmake: *** [all] Error 1

This looks like you didn't run configure in the build directory ?

> Also some new warnings from last successful buld some days ago:
>
> 1) flex
gmake[2]: Entering directory
`/usr/home/wanderer/pkg/build/llvm/obj/tools/llvmc'
Flexing /home/wanderer/pkg/build/llvm/src/llvm/tools/llvmc/ConfigLexer.l
"/home/wanderer/pkg/build/llvm/src/llvm/tools/llvmc/ConfigLexer.l", line
191: warning, -s option given but default rule can be matched
gmake[2]: Leaving directory
`/usr/home/wanderer/pkg/build/llvm/obj/tools/llvmc'

That one's okay. If I could figure out how to turn the warning off, I
would. In any event, its not indicative of a problem.

> 2) gcc 3.5 (mainline CVS)
> Mostly result using ~0 (negative signed int) expression as value of
> unsigned int function parameter.
>

Compiling Program.cpp
/usr/home/wanderer/pkg/build/llvm/obj/lib/System/platform/../Unix/Program.cpp:
In member function `int llvm::sys::Program::ExecuteAndWait(const
std::vector<std::string, std::allocator<std::string> >&) const':
/usr/home/wanderer/pkg/build/llvm/obj/lib/System/platform/../Unix/Program.cpp:132:
warning: control reaches end of non-void function

Not sure what's up with that. 3.4 doesn't generate the warning and there
actually is not a way to return from that function by reaching the end.
The final statement is an if which either throws or returns. Looks like
3.5 has some regressions.

Compiling TableGen.cpp
/home/wanderer/pkg/build/llvm/src/llvm/utils/TableGen/TableGen.cpp: In
function `llvm::Record*
ParseMachineCode(__gnu_cxx::__normal_iterator<llvm::Record**,
std::vector<llvm::Record*, std::allocator<llvm::Record*> > >,
__gnu_cxx::__normal_iterator<llvm::Record**, std::vector<llvm::Record*,
std::allocator<llvm::Record*> > >, unsigned char*)':
/home/wanderer/pkg/build/llvm/src/llvm/utils/TableGen/TableGen.cpp:227:
warning: converting of negative value `-0x000000001' to `unsigned int'
/home/wanderer/pkg/build/llvm/src/llvm/utils/TableGen/TableGen.cpp:234:
warning: converting of negative value `-0x000000001' to `unsigned int'
/home/wanderer/pkg/build/llvm/src/llvm/utils/TableGen/TableGen.cpp:235:
warning: converting of negative value `-0x000000001' to `unsigned int'

I think that's what the author intended. It doesn't give a warning with
GCC 3.4. If this troubles you, could you prepare a patch that doesn't
cause this file to generate the warning with GCC 3.5?

I have the same comment for everything below here too. Most of us don't
use GCC 3.5 (yet). I personally won't use it until 3.5.1 is available as
I don't like to waste my time with compiler flaws. So, if you'd like to
get rid of these warnings, the simplest solution is to use GCC 3.4.
Otherwise, you'll need to fix them yourself.

Reid.

This looks like you didn't run configure in the build directory ?

Run configure <options> and make from empty obj dir. (as many times before without problems)
Full log attached.

That one's okay. If I could figure out how to turn the warning off,
I would. In any event, its not indicative of a problem.

I provide it just for information as new build warning.

> warning: control reaches end of non-void function
Looks like 3.5 has some regressions.

Yes, this is gcc 3.5 problem.

> /home/wanderer/pkg/build/llvm/src/llvm/utils/TableGen/TableGen.cpp:235:
> warning: converting of negative value `-0x000000001' to `unsigned int'
So, if you'd like to
get rid of these warnings, the simplest solution is to use GCC 3.4.
Otherwise, you'll need to fix them yourself.

Ok will prepere patch for review.

Vladimir

llvm.log (69.7 KB)