summaryrefslogtreecommitdiffstats
path: root/clang
Commit message (Collapse)AuthorAgeFilesLines
* Simplify the code a bit, NFC.Rafael Espindola2014-09-152-21/+4
| | | | | | hasConstructorVariants is always true for MS and false for Itanium. llvm-svn: 217809
* Move emitCXXStructor to CGCXXABI.Rafael Espindola2014-09-156-83/+164
| | | | | | A followup patch will address the code duplication. llvm-svn: 217807
* Create a emitCXXStructor function and make the existing emitCXXConstructor andRafael Espindola2014-09-153-49/+58
| | | | | | | | emitCXXDestructor static helpers. A next patch will make it a helper in CGCXXABI. llvm-svn: 217804
* Use intrusive refcounted pointers to manage RopeRefCountString lifetime.Benjamin Kramer2014-09-152-48/+14
| | | | | | | | | std::shared_ptr<char []> would be even nicer, but shared_ptr doesn't work with arrays :( No functionality change. llvm-svn: 217798
* unique_ptrify ChainedDiagnosticConsumer's ctor parametersDavid Blaikie2014-09-154-16/+19
| | | | llvm-svn: 217793
* Teach Clang how to use response files when calling other toolsReid Kleckner2014-09-1511-65/+371
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Patch by Rafael Auler! This patch addresses PR15171 and teaches Clang how to call other tools with response files, when the command line exceeds system limits. This is a problem for Windows systems, whose maximum command-line length is 32kb. I introduce the concept of "response file support" for each Tool object. A given Tool may have full support for response files (e.g. MSVC's link.exe) or only support file names inside response files, but no flags (e.g. Apple's ld64, as commented in PR15171), or no support at all (the default case). Therefore, if you implement a toolchain in the clang driver and you want clang to be able to use response files in your tools, you must override a method (getReponseFileSupport()) to tell so. I designed it to support different kinds of tools and internationalisation needs: - VS response files ( UTF-16 ) - GNU tools ( uses system's current code page, windows' legacy intl. support, with escaped backslashes. On unix, fallback to UTF-8 ) - Clang itself ( UTF-16 on windows, UTF-8 on unix ) - ld64 response files ( only a limited file list, UTF-8 on unix ) With this design, I was able to test input file names with spaces and international characters for Windows. When the linker input is large enough, it creates a response file with the correct encoding. On a Mac, to test ld64, I temporarily changed Clang's behavior to always use response files regardless of the command size limit (avoiding using huge command line inputs). I tested clang with the LLVM test suite (compiling benchmarks) and it did fine. Test Plan: A LIT test that tests proper response files support. This is tricky, since, for Unix systems, we need a 2MB response file, otherwise Clang will simply use regular arguments instead of a response file. To do this, my LIT test generate the file on the fly by cloning many -DTEST parameters until we have a 2MB file. I found out that processing 2MB of arguments is pretty slow, it takes 1 minute using my notebook in a debug build, or 10s in a Release build. Therefore, I also added "REQUIRES: long_tests", so it will only run when the user wants to run long tests. In the full discussion in http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20130408/171463.html, Rafael Espindola discusses a proper way to test llvm::sys::argumentsFitWithinSystemLimits(), and, there, Chandler suggests to use 10 times the current system limit (20MB resp file), so we guarantee that the system will always use response file, even if a new linux comes up that can handle a few more bytes of arguments. However, by testing with a 20MB resp file, the test takes long 8 minutes just to perform a silly check to see if the driver will use a response file. I found it to be unreasonable. Thus, I discarded this approach and uses a 2MB response file, which should be enough. Reviewers: asl, rafael, silvas Reviewed By: silvas Subscribers: silvas, rnk, thakis, cfe-commits Differential Revision: http://reviews.llvm.org/D4897 llvm-svn: 217792
* Fix memory leak of raw_ostreams in LogDiagnosticPrinter handling.David Blaikie2014-09-153-21/+17
| | | | | | | | | | | | | | | This is another case of conditional ownership (in this case a raw reference, plus a boolean to indicate whether the referenced object should be deleted). While it's not ideal, I prefer to make the ownership explicit with a unique_ptr than using a boolean flag (though it does make the reference and the unique_ptr redundant in the sense that they both refer to the same memory). At some point we might write a reusable conditional ownership pointer (a stateful custom deleter for a unique_ptr may be appropriate). Based on a patch from a patch by Anton Yartsev. llvm-svn: 217791
* Add -fseh-exceptions for MinGW-w64Reid Kleckner2014-09-158-0/+40
| | | | | | | | | | | | | | This adds a flag called -fseh-exceptions that uses the native Windows .pdata and .xdata unwind mechanism to throw exceptions. The other EH possibilities are DWARF and SJLJ exceptions. Patch by Martell Malone! Reviewed By: asl, rnk Differential Revision: http://reviews.llvm.org/D3419 llvm-svn: 217790
* Pretty print attributes associated with record declarations.Aaron Ballman2014-09-154-1/+15
| | | | llvm-svn: 217784
* Objective-C SDK modernizer. Do not modernize an enum Fariborz Jahanian2014-09-153-1/+17
| | | | | | | which already has the underlying interger type specification. // rdar://1826225 llvm-svn: 217783
* Adding some FIXMEs to the attribute emitter code regarding whether pretty ↵Aaron Ballman2014-09-151-0/+6
| | | | | | printing enumerators should use quoted string literals, or identifiers. NFC. llvm-svn: 217781
* When pretty printing attributes that have enumeration arguments, print the ↵Aaron Ballman2014-09-152-6/+59
| | | | | | enumerator identifier (as a string literal) instead of the internal enumerator integral value. llvm-svn: 217771
* Edit: Do not extend a removal to include trailing whitespace if we're at the endBenjamin Kramer2014-09-151-0/+6
| | | | | | | | | | of the file. This would run past the end of the buffer. Sadly I don't have a great way to test it, the only way to trigger the bug is having a removal fix it at the end of the file, which none of our current warnings can generate. llvm-svn: 217766
* [ARM] Add ACLE predefines: maxmin, rounding and h/w integer divisionJames Molloy2014-09-155-4/+29
| | | | | | Patch by Assad Hashmi! llvm-svn: 217760
* clang-format: Basic support for Java.Daniel Jasper2014-09-155-3/+92
| | | | llvm-svn: 217759
* clang-format: Add option to break before non-assignment operators.Daniel Jasper2014-09-155-18/+76
| | | | | | | | | This will allow: int aaaaaaaaaaaaaa = bbbbbbbbbbbbbb + ccccccccccccccc; llvm-svn: 217757
* Make test/Driver hermeticJF Bastien2014-09-142-6/+6
| | | | | | | | | | | | | | | | | | Summary: The includes shouldn't be there, use the compiler's built-in types/macros instead. This is a follow-up to r217694, as discussed in: http://lists.cs.uiuc.edu/pipermail/cfe-commits/Week-of-Mon-20140908/114669.html Test Plan: ninja check-clang Reviewers: nlewycky, thakis, echristo, chandlerc Subscribers: cfe-commits Differential Revision: http://reviews.llvm.org/D5348 llvm-svn: 217743
* Check delegating constructors for using uninitialized fields.Richard Trieu2014-09-122-0/+18
| | | | llvm-svn: 217716
* clang-cl: Warn when a /TC or /TP argument is unusedEhsan Akhgari2014-09-122-4/+6
| | | | | | | | | | | | Test Plan: The patch includes a test case. Reviewers: hansw Subscribers: cfe-commits Differential Revision: http://reviews.llvm.org/D5338 llvm-svn: 217710
* Don't print 'NULL TYPE' when dumping a delegating constructor.Richard Trieu2014-09-122-1/+10
| | | | llvm-svn: 217707
* Allow protocols to be just declared.Rafael Espindola2014-09-122-3/+20
| | | | llvm-svn: 217704
* patch to add missing warning on sizeof wrong parameterFariborz Jahanian2014-09-123-6/+30
| | | | | | | | for __builtin___strlcpy_chk/__builtin___strlcat_chk. Patch by Jacques Fortier with monir change by me and addition of test. rdar://18259539 llvm-svn: 217700
* clang-cl: Don't treat linker input files differently when /TP or /TC is ↵Ehsan Akhgari2014-09-122-2/+19
| | | | | | | | | | | | | | | | specified. Summary: This fixes http://llvm.org/PR20923. Test Plan: This patch includes an automated test. Reviewers: hansw Subscribers: cfe-commits Differential Revision: http://reviews.llvm.org/D5334 llvm-svn: 217699
* No need to use PNaCl's calling convention since PNaCl now uses a separate ↵JF Bastien2014-09-121-3/+0
| | | | | | approach for calling conventions. llvm-svn: 217696
* Fix copy/paste for test, the triple should be le64-unknown-unknownJF Bastien2014-09-121-2/+2
| | | | llvm-svn: 217695
* Add support for le64.JF Bastien2014-09-125-0/+228
| | | | | | | | | | | | | | | | | Summary: le64 is a generic little-endian 64-bit processor, mimicking le32. Also see the associated LLVM change. Test Plan: make check-all Reviewers: dschuff Subscribers: llvm-commits Differential Revision: http://reviews.llvm.org/D5318 llvm-svn: 217694
* clang-format: Improve line breaks at function calls.Daniel Jasper2014-09-122-0/+17
| | | | | | | | | | | | | Before: EXPECT_CALL(SomeObject, SomeFunction(Parameter)).Times(2).WillRepeatedly( Return(SomeValue)); After: EXPECT_CALL(SomeObject, SomeFunction(Parameter)) .Times(2) .WillRepeatedly(Return(SomeValue)); llvm-svn: 217687
* Add a previously-missing test case for return adjustment vs pure virtual methodsTimur Iskhodzhanov2014-09-121-0/+24
| | | | llvm-svn: 217686
* [ASan/Win] Fix PR20918 -- SEH handler doesn't work with the MD runtimeTimur Iskhodzhanov2014-09-122-0/+4
| | | | llvm-svn: 217679
* Update the test case after r217673Timur Iskhodzhanov2014-09-121-1/+1
| | | | | | Sorry, committing to multiple repos at once is hard... llvm-svn: 217677
* [ASan/Win] Rename asan_win_uar_thunk.lib to asan_win_dynamic_runtime_thunk.libTimur Iskhodzhanov2014-09-121-1/+2
| | | | | | | | It turned out that we have to bridge more stuff between the executable and the ASan RTL DLL than just __asan_option_detect_stack_use_after_return. See PR20918 for more details. llvm-svn: 217673
* Fixing a -Woverflow warning from GCC by using a more natural datatype for ↵Aaron Ballman2014-09-122-3/+3
| | | | | | this operation. NFC. llvm-svn: 217670
* Every code owner should be reachable via email, so add one forJoerg Sonnenberger2014-09-121-0/+2
| | | | | | Douglas Gregor and Ted Kremenek. llvm-svn: 217658
* Use unique_ptr for ScratchBuf and PragmaHandlers in the preprocessor.Craig Topper2014-09-123-21/+14
| | | | llvm-svn: 217656
* MS ABI: The latest VC "14" CTP implements deleted virtual functionsDavid Majnemer2014-09-123-13/+10
| | | | | | | | | | | | Deleted virtual functions get _purecall inserted into the vftable. Earlier CTPs would simply stick nullptr in there. N.B. MSVC can't handle deleted virtual functions which require return adjusting thunks, they give an error that a deleted function couldn't be called inside of a compiler generated function. We get this correct by making the thunk have a __purecall entry as well. llvm-svn: 217654
* MS ABI: Use the correct this arg when generating implict copy ctorDavid Majnemer2014-09-115-4/+43
| | | | | | | | | | We assumed that the incoming this argument would be the last argument. However, this is not true under the MS ABI. This fixes PR20897. llvm-svn: 217642
* Thread Safety Analysis: Avoid infinite recursion in an operator<<Justin Bogner2014-09-111-2/+2
| | | | | | | | | | | | | | | | | | r217556 introduced an operator<<(std::ostream &, StringRef) that seems to self recurse on some systems, because str.data(), which is a char *, was being implicitly converted back to StringRef in overload resolution. This manifested as SemaCXX/warn-thread-safety-analysis.cpp timing out in release builds and overflowing the stack in debug builds. One of the failing systems that saw this is here: http://lab.llvm.org:8013/builders/clang-x86_64-darwin11-nobootstrap-RAincremental/builds/4636 Using ostream's write method instead of operator<< should get the bots going again. llvm-svn: 217621
* Objective-C. Under a special flag, -Wcstring-format-directive,Fariborz Jahanian2014-09-114-35/+89
| | | | | | | | | off by default, issue a warning if %s directive is used in formart argument of a function/method declared as __attribute__((format(CF/NSString, ...))) To complete rdar://18182443 llvm-svn: 217619
* clang-cl: Add support for the /o option for object files, executables, and ↵Ehsan Akhgari2014-09-113-8/+169
| | | | | | | | | | | | | | | | | | | | | | | | | preprocessor output Summary: cl.exe recognizes /o as a deprecated and undocumented option similar to /Fe. This patch adds support for this option to clang-cl for /Fe, /Fo and /Fi. It also ensures that the last option among /o and /F* wins, if both specified. This is required at least for building autoconf based software, since autoconf uses -o to specify the executable output. This fixes http://llvm.org/PR20894. Test Plan: The patch includes automated tests. Reviewers: rnk Subscribers: cfe-commits Differential Revision: http://reviews.llvm.org/D5308 llvm-svn: 217615
* Use the simpler version of llvm::sys::fs::exists.Rafael Espindola2014-09-115-20/+7
| | | | | | | In all these cases it looks like the intention was to handle error in a similar way to the file not existing. llvm-svn: 217614
* Update C++ status page to reflect that Clang 3.5 has released.Richard Smith2014-09-111-4/+4
| | | | llvm-svn: 217609
* Update DR status list to reflect that Clang 3.5 has been released.Richard Smith2014-09-112-18/+18
| | | | llvm-svn: 217608
* Tests for DR573-580.Richard Smith2014-09-112-8/+134
| | | | llvm-svn: 217606
* Merge GetAddrOfCXXConstructor and GetAddrOfCXXDonstructor. NFC.Rafael Espindola2014-09-119-50/+21
| | | | llvm-svn: 217598
* Fix bug 20892 - clang-format does not handle C-style commentsRoman Kashitsyn2014-09-112-2/+19
| | | | | | | | | | | | | | | | | | | | | | Summary: http://llvm.org/bugs/show_bug.cgi?id=20892 Add support of C-style formatting enabling/disabling directives. Now the following two styles are supported: // clang-format on /* clang-format on */ The flexibility in comments (support of extra spaces and/or slashes, etc.) is deliberately avoided to simplify search in large code bases. Reviewers: djasper Reviewed By: djasper Subscribers: cfe-commits, curdeius, klimek Differential Revision: http://reviews.llvm.org/D5309 llvm-svn: 217588
* Avoid some unnecessary SmallVector copies.Benjamin Kramer2014-09-115-13/+11
| | | | | | No functionality change. llvm-svn: 217586
* NULL->nullptrAlexander Musman2014-09-111-1/+1
| | | | llvm-svn: 217573
* Fix a couple of -Wsign-compare warnings introduced in r217556Justin Bogner2014-09-111-3/+2
| | | | llvm-svn: 217569
* Thread Safety Analysis: major update to thread safety TIL.DeLesley Hutchins2014-09-108-765/+914
| | | | | | | | | | | | Numerous changes, including: * Changed the way variables and instructions are handled in basic blocks to be more efficient. * Eliminated SExprRef. * Simplified futures. * Fixed documentation. * Compute dominator and post dominator trees. llvm-svn: 217556
* More test for "void *" argument as index of a dictionary literal.Fariborz Jahanian2014-09-101-0/+5
| | | | llvm-svn: 217555
OpenPOWER on IntegriCloud