llvm-6502/lib
Chandler Carruth 84c0f65446 Fix several bugs in r221220's new program finding code.
In both the Unix and Windows variants, std::getenv was called and the
result passed directly to a function accepting a StringRef. This isn't
OK because it might return a null pointer and that causes the StringRef
constructor to assert (and generally produces crash-prone code if
asserts are disabled). Fix this by independently testing the result as
non-null prior to splitting things.

This in turn uncovered another bug in the Unix variant where it would
infinitely recurse if PATH="", or after this fix if PATH isn't set.
There is no need to recurse at all. Slightly re-arrange the code to make
it clear that we can just fixup the Paths argument based on the
environment if we find anything.

I don't know of a particularly useful way to test these routines in
LLVM. I'll commit a test to Clang that ensures that its driver correctly
handles various settings of PATH. However, I have no idea how to
correctly write a Windows test for the PATHEXT change. Any Windows
developers who could provide such a test, please have at. =D

Many thanks to Nick Lewycky and others for helping debug this. =/ It was
quite nasty for us to track down.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@223099 91177308-0d34-0410-b5e6-96231b3b80d8
2014-12-02 00:52:01 +00:00
..
Analysis Simplify pointer comparisons involving memory allocation functions 2014-12-01 23:38:06 +00:00
AsmParser Parse 'ghccc' in .ll files as the GHC convention (cc 10) 2014-12-01 21:04:44 +00:00
Bitcode Add and use Type::subtypes. NFC. 2014-11-24 20:44:36 +00:00
CodeGen [Statepoints 2/4] Statepoint infrastructure for garbage collection: MI & x86-64 Backend 2014-12-01 22:52:56 +00:00
DebugInfo Make DWARFAcceleratorTable::dump() const. 2014-11-20 16:21:11 +00:00
ExecutionEngine Add LLVMObject to LLVMExecutionEngine. 2014-11-27 06:36:22 +00:00
IR [Statepoints 1/4] Statepoint infrastructure for garbage collection: IR Intrinsics 2014-12-01 21:18:12 +00:00
IRReader
LineEditor
Linker Use a continue to reduce indentation and clang-format. NFC. 2014-12-01 19:17:46 +00:00
LTO Remove StringMap::GetOrCreateValue in favor of StringMap::insert 2014-11-19 05:49:42 +00:00
MC [NVPTX] Do not emit .weak symbols for NVPTX 2014-12-01 21:16:17 +00:00
Object Object/COFF: Fix off-by-one error for object having lots of relocations 2014-11-26 22:17:25 +00:00
Option
ProfileData llvm-cov: Sink some reporting logic into CoverageMapping 2014-11-14 01:50:32 +00:00
Support Fix several bugs in r221220's new program finding code. 2014-12-02 00:52:01 +00:00
TableGen Revert r222957 "Replace std::map<K, V*> with std::map<K, V> to handle ownership and deletion of the values." 2014-11-30 01:20:17 +00:00
Target Try to fix a bot failure due to a variable used only in an assert. 2014-12-01 23:27:45 +00:00
Transforms Revert r223049, r223050 and r223051 while investigating test failures. 2014-12-01 17:36:43 +00:00
CMakeLists.txt
LLVMBuild.txt
Makefile