summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Support
Commit message (Collapse)AuthorAgeFilesLines
* Added *hidden* flags -print-options and -print-all-options soAndrew Trick2011-04-051-26/+150
| | | | | | | | | | | | | | | | | | | developers can see if their driver changed any cl::Option's. The current implementation isn't perfect but handles most kinds of options. This is nice to have when decomposing the stages of compilation and moving between different drivers. It's also a good sanity check when comparing results produced by different command line invocations that are expected to produce the comparable results. Note: This is not an attempt to prolong the life of cl::Option. On the contrary, it's a placeholder for a feature that must exist when cl::Option is replaced by a more appropriate framework. A new framework needs: a central option registry, dynamic name lookup, non-global containers of option values (e.g. per-module, per-function), *and* the ability to print options values and their defaults at any point during compilation. llvm-svn: 128910
* Assorted bugfixes in object file handling:Eric Christopher2011-04-031-0/+14
| | | | | | | | | | | | | | | | | | | | | | | - Adds support for sniffing PE/COFF files on win32 (.exe and .dll) which are COFF files that have an MS-DOS compatibility stub on the front of them. - Fixes a bug in the COFFObjectFile's support for the Microsoft COFF extension for long symbol names, wherein it was attempting to parse the leading '/' in an extended symbol name reference as part of the integer offset. - Fixes bugs in COFFObjectFile and ELFObjectFile wherein section and symbol iterators were being returned with uninitialized bytes; the type DataRefImpl is a union between 2 32-bit words (d.a and d.b) and a single intptr_t word (p). Only p was being initialized, so in 32-bit builds the result would be iterators with random upper 32-bit words in their DataRefImpls. This caused random failures when seeking around in object files. Patch by Graydon Hoare! llvm-svn: 128799
* Reset StringMap's NumTombstones on clears and rehashes.Jakob Stoklund Olesen2011-03-301-0/+3
| | | | | | | | | | | | | StringMap was not properly updating NumTombstones after a clear or rehash. This was not fatal until now because the table was growing faster than NumTombstones could, but with the previous change of preventing infinite growth of the table the invariant (NumItems + NumTombstones <= NumBuckets) stopped being observed, causing infinite loops in certain situations. Patch by José Fonseca! llvm-svn: 128567
* Prevent infinite growth of SmallPtrSet instances.Jakob Stoklund Olesen2011-03-301-6/+9
| | | | | | | | Rehash but don't grow when full of tombstones. Patch by José Fonseca! llvm-svn: 128566
* Prevent infinite growth of SmallMap instances.Jakob Stoklund Olesen2011-03-301-1/+13
| | | | | | | | Rehash but don't grow when full of tombstones. Patch by José Fonseca! llvm-svn: 128565
* Avoid turning a floating point division with a constant power of two into a ↵Benjamin Kramer2011-03-301-0/+8
| | | | | | | | | denormal multiplication. Some platforms may treat denormals as zero, on other platforms multiplication with a subnormal is slower than dividing by a normal. llvm-svn: 128555
* Add APFloat::getExactInverse.Benjamin Kramer2011-03-301-0/+26
| | | | | | | | | | | | | | The idea is, that if an ieee 754 float is divided by a power of two, we can turn the division into a cheaper multiplication. This function sees if we can get an exact multiplicative inverse for a divisor and returns it if possible. This is the hard part of PR9587. I tested many inputs against llvm-gcc's frotend implementation of this optimization and didn't find any difference. However, floating point is the land of weird edge cases, so any review would be appreciated. llvm-svn: 128545
* Constant folding support for calls to umul.with.overflow(), basically ↵Frits van Bommel2011-03-271-0/+10
| | | | | | identical to the smul.with.overflow() code. llvm-svn: 128379
* revert r128199 until it can be made to work with Frontend/dependency-gen.c.Andrew Trick2011-03-241-5/+9
| | | | llvm-svn: 128218
* Remove all uses of PATH_MAX and MAXPATHLEN from PathV2.Michael J. Spencer2011-03-241-9/+5
| | | | llvm-svn: 128199
* We don't need a null terminator for the output file.Rafael Espindola2011-03-221-4/+8
| | | | llvm-svn: 128098
* Properly initialize all fields in CrashReporterCleanupContext. This caused ↵Ted Kremenek2011-03-221-1/+1
| | | | | | the buildbot failure earlier. llvm-svn: 128071
* Temporarily stop recovering resources in CrashRecoveryContext while I ↵Ted Kremenek2011-03-221-1/+1
| | | | | | investigate further why this works on my machine and not on others. llvm-svn: 128065
* Provide a means for CrashRecovery clients to determine if code is currently ↵Ted Kremenek2011-03-211-0/+9
| | | | | | running while crash recovery cleanups are being processed. llvm-svn: 128008
* Avoid initializing posix_spawn_file_actions_t if not used.Benjamin Kramer2011-03-201-7/+11
| | | | | | | - glibc falls back to fork+exec if a file actions object is present. - On BSDs this saves a malloc. llvm-svn: 127969
* Tweak CrashRecoveryContextCleanup to provide an easy method for clients to ↵Ted Kremenek2011-03-191-0/+1
| | | | | | select between 'delete' and 'destructor' cleanups, and allow the destructor of CrashRecoveryContextCleanupRegister to be pseudo re-entrant. llvm-svn: 127929
* Tweak CrashRecoveryContext::GetCurrent() to return quickly if ↵Ted Kremenek2011-03-191-0/+3
| | | | | | | | 'gCrsahRecoveryEnabled' is false. This avoids us needing to go to thread local storage for the performance sensitive case where we are compiling code. llvm-svn: 127928
* setExecutable() should default to success if there's nothing custom for it.Jim Grosbach2011-03-181-1/+1
| | | | llvm-svn: 127891
* raw_ostream: [PR6745] Tweak formatting (double)%e for Windows hosts.NAKAMURA Takumi2011-03-181-0/+30
| | | | | | | On MSVCRT and compatible, output of %e is incompatible to Posix by default. Number of exponent digits should be at least 2. "%+03d" FIXME: Implement our formatter in future! llvm-svn: 127872
* Initialize the only-used-with-PPC-double-double parts of the APFloat class. ThisBill Wendling2011-03-181-13/+10
| | | | | | | makes valgrind stop complaining about uninitialized variables being read when it accesses a bitfield (category) that shares its bits with these variables. llvm-svn: 127871
* Check RequiresNullTerminator first, or we might read from an invalid address.Rafael Espindola2011-03-181-1/+1
| | | | llvm-svn: 127853
* Augment CrashRecoveryContext to have registered "cleanup" objects that can ↵Ted Kremenek2011-03-181-0/+38
| | | | | | be used to release resources during a crash. llvm-svn: 127849
* Use RequiresNullTerminator to create buffers without a null terminatorRafael Espindola2011-03-171-2/+4
| | | | | | instead of copying. llvm-svn: 127835
* Add an argument to APInt's magic udiv calculation to specify the number of ↵Benjamin Kramer2011-03-171-2/+4
| | | | | | | | bits that are known zero in the divided number. This will come in handy soon. llvm-svn: 127828
* lib/Support/raw_ostream.cpp: On mingw, report_fatal_error() should not be ↵NAKAMURA Takumi2011-03-161-0/+8
| | | | | | | | called at dtor context. report_fatal_error() invokes exit(). We know report_fatal_error() might not write messages to stderr when any errors were detected on FD == 2. llvm-svn: 127726
* Windows/PathV2.inc: [PR8520] Recognize "NUL" as special (character) file.NAKAMURA Takumi2011-03-161-1/+8
| | | | | FIXME: It is a temporal hack. We should detect as many "special file name" as possible. llvm-svn: 127724
* Windows/Path.inc: [PR6270] PathV1::makeUnique(): Give arbitrary initial seed ↵NAKAMURA Takumi2011-03-161-1/+11
| | | | | | | for workaround. FIXME: We should use sys::fs::unique_file() in future. llvm-svn: 127723
* Add scei vendorJohn Thompson2011-03-151-0/+3
| | | | llvm-svn: 127705
* Don't compute the file size if we don't need to.Rafael Espindola2011-03-101-14/+29
| | | | llvm-svn: 127426
* Add r127409 back now that the windows file was updated.Rafael Espindola2011-03-102-28/+77
| | | | llvm-svn: 127417
* Try to fix the windows build.Rafael Espindola2011-03-101-2/+2
| | | | llvm-svn: 127416
* Revert r127409 which broke all the Windows bots.Jakob Stoklund Olesen2011-03-102-77/+28
| | | | llvm-svn: 127413
* Add support for MemoryBuffers that are not null terminated and addRafael Espindola2011-03-102-28/+77
| | | | | | support for creating buffers that cover only a part of a file. llvm-svn: 127409
* lib/Support/regcomp.c: Fix cygwin warning.NAKAMURA Takumi2011-03-081-1/+1
| | | | llvm-svn: 127241
* Windows/PathV2.inc: Eliminate redundant condition. DWORD is unsigned.NAKAMURA Takumi2011-03-071-1/+1
| | | | llvm-svn: 127140
* raw_ostream: while it is generally desirable to do larger writes, it can lead toBenjamin Kramer2011-03-041-3/+7
| | | | | | | | | | inefficient file system buffering if the writes are not a multiple of the desired buffer size. Avoid this by limiting the large write to a multiple of the buffer size and copying the remainder into the buffer. Thanks to Dan for pointing this out. llvm-svn: 127026
* raw_ostream: If writing a string that is larger than the buffer, write it ↵Benjamin Kramer2011-03-041-9/+13
| | | | | | | | directly instead of doing many buffer-sized writes. This caps the number of write(2) calls per string to a maximum of 2. llvm-svn: 127010
* Support: Add llvm::AreStatisticsEnabled().Daniel Dunbar2011-02-261-0/+4
| | | | llvm-svn: 126558
* The signed version of our "magic number" computation for the integer ↵Cameron Zwarich2011-02-211-1/+1
| | | | | | | | | | | | | approximation of a constant had a minor typo introduced when copying it from the book, which caused it to favor negative approximations over positive approximations in many cases. Positive approximations require fewer operations beyond the multiplication. In the case of division by 3, we still generate code that is a single instruction larger than GCC's code. llvm-svn: 126097
* Provide tag strings for llvm specific tags.Devang Patel2011-02-181-0/+4
| | | | llvm-svn: 125986
* improve support for OpenBSD, patch by Amit Kulkarni!Chris Lattner2011-02-181-2/+4
| | | | llvm-svn: 125943
* Check the errorcode.Argyrios Kyrtzidis2011-02-181-0/+1
| | | | llvm-svn: 125804
* Enhance constant folding of bitcast operations on vectors of floats.Nadav Rotem2011-02-171-0/+6
| | | | | | | Add getAllOnesValue of FP numbers to Constants and APFloat. Add more tests. llvm-svn: 125776
* Triple::MinGW64 is deprecated and removed. We can use Triple::MinGW32 generally.NAKAMURA Takumi2011-02-171-3/+0
| | | | | | No one uses *-mingw64. mingw-w64 is represented as {i686|x86_64}-w64-mingw32. In llvm side, i686 and x64 can be treated as similar way. llvm-svn: 125747
* Implement a function from PathV2 whose definition is missing.Argyrios Kyrtzidis2011-02-151-0/+6
| | | | llvm-svn: 125574
* Adds llvm::sys::path::is_separator() to test whether a char is a path separatorZhanyong Wan2011-02-111-12/+13
| | | | | | on the host OS. Reviewed by dgregor. llvm-svn: 125406
* Rip out realpath() support. It's expensive, and often a bad idea, andDouglas Gregor2011-02-091-30/+0
| | | | | | I have another way to achieve the same goal. llvm-svn: 125239
* Attempt to fix the build after r125228.Cameron Zwarich2011-02-091-2/+2
| | | | llvm-svn: 125236
* Add llvm::sys::path::canonical(), which provides the canonicalizedDouglas Gregor2011-02-091-0/+30
| | | | | | | | | | name of a path, after resolving symbolic links and eliminating excess path elements such as "foo/../" and "./". This routine still needs a Windows implementation, but I don't have a Windows machine available. Help? Please? llvm-svn: 125228
* lib/Support/Errno.cpp: Check strerror_s() with HAVE_DECL_STRERROR_S in ↵NAKAMURA Takumi2011-02-091-1/+1
| | | | | | | | | | config.h.*. AC_CHECK_FUNCS seeks a symbol only in libs. We should check the declaration in string.h. FIXME: I have never seen mingw(s) have strerror_s() (not _strerror_s()). FIXME: Autoconf/CMake may seek strerror_s() with the definition MINGW_HAS_SECURE_API in future. llvm-svn: 125172
OpenPOWER on IntegriCloud