summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
...
* Find xdot or xdot.py.Matt Arsenault2013-07-086-35/+40
| | | | | | Ubuntu installs this as xdot, so finding xdot.py would fail. llvm-svn: 185860
* Allow llvm_find_program to find alternate namesMatt Arsenault2013-07-081-1/+2
| | | | llvm-svn: 185859
* [PowerPC] Always use "assembler dialect" 1Ulrich Weigand2013-07-0810-42/+65
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | A setting in MCAsmInfo defines the "assembler dialect" to use. This is used by common code to choose between alternatives in a multi-alternative GNU inline asm statement like the following: __asm__ ("{sfe|subfe} %0,%1,%2" : "=r" (out) : "r" (in1), "r" (in2)); The meaning of these dialects is platform specific, and GCC defines those for PowerPC to use dialect 0 for old-style (POWER) mnemonics and 1 for new-style (PowerPC) mnemonics, like in the example above. To be compatible with inline asm used with GCC, LLVM ought to do the same. Specifically, this means we should always use assembler dialect 1 since old-style mnemonics really aren't supported on any current platform. However, the current LLVM back-end uses: AssemblerDialect = 1; // New-Style mnemonics. in PPCMCAsmInfoDarwin, and AssemblerDialect = 0; // Old-Style mnemonics. in PPCLinuxMCAsmInfo. The Linux setting really isn't correct, we should be using new-style mnemonics everywhere. This is changed by this commit. Unfortunately, the setting of this variable is overloaded in the back-end to decide whether or not we are on a Darwin target. This is done in PPCInstPrinter (the "SyntaxVariant" is initialized from the MCAsmInfo AssemblerDialect setting), and also in PPCMCExpr. Setting AssemblerDialect to 1 for both Darwin and Linux no longer allows us to make this distinction. Instead, this patch uses the MCSubtargetInfo passed to createPPCMCInstPrinter to distinguish Darwin targets, and ignores the SyntaxVariant parameter. As to PPCMCExpr, this patch adds an explicit isDarwin argument that needs to be passed in by the caller when creating a target MCExpr. (To do so this patch implicitly also reverts commit 184441.) llvm-svn: 185858
* Fix Sema for compares with _Atomic vars.Eli Friedman2013-07-083-41/+38
| | | | | | | | | | | | | | | | Use UsualArithmeticConversions unconditionally in analysis of comparisons and conditional operators: the method performs the usual arithmetic conversions if both sides are arithmetic, and usual unary conversions if they are not. This is just a cleanup for conditional operators; for comparisons, it fixes the issue that we would try to check isArithmetic() on an atomic type. Also, fix GetExprRange() in SemaChecking.cpp so it deals with variables of atomic type correctly. Fixes PR15537. llvm-svn: 185857
* Implement n3545 for c++14Marshall Clow2013-07-082-0/+9
| | | | llvm-svn: 185856
* PPC: Mark vector CC action for SETO and SETONE as ExpandHal Finkel2013-07-082-0/+20
| | | | | | | | Another bug found by llvm-stress! This fixes hitting llvm_unreachable("Invalid integer vector compare condition"); at the end of getVCmpInst in PPCISelDAGToDAG. llvm-svn: 185855
* IR headers moved to llvm/IR some aeons ago, update documentation.Benjamin Kramer2013-07-083-16/+16
| | | | llvm-svn: 185854
* Add a comment to this change, requested by Eric Christopher.Joey Gouly2013-07-082-0/+5
| | | | llvm-svn: 185853
* StringRef: add DenseMapInfo for StringRef.Manman Ren2013-07-084-9/+18
| | | | | | | | Remove the implementation in include/llvm/Support/YAMLTraits.h. Added a DenseMap type DITypeHashMap in DebugInfo.h: DenseMap<std::pair<StringRef, unsigned>, MDNode*> llvm-svn: 185852
* [ADT/NullablePtr] Allow implicit conversion of NullablePtr<OtherT> -> ↵Argyrios Kyrtzidis2013-07-081-0/+10
| | | | | | NullablePtr<T> if OtherT is derived from T. llvm-svn: 185851
* Reland "Use Clang's __has_* macros in Compiler.h ..." with fixesReid Kleckner2013-07-081-16/+40
| | | | | | | | | | | | | | | This reverts r185841 and relands r185831 without using __has_attribute(const). Clang prior to r161767 (between 3.1 and 3.2) does not accept __has_attribute(const) due to rdar://10253857. __const and __const__ are both keyword aliases of const, so they don't work either. I was able to repro the buildbot failure using clang 3.1 and this patch fixes it. Various important versions of XCode use clang 2.9-ish, so this workaround is necessary. llvm-svn: 185850
* Windows port for __codecvt_utf8<wchar_t>.Howard Hinnant2013-07-083-3/+22
| | | | llvm-svn: 185849
* Update docs to say that a FunctionPass should not inspect other functions ↵Stephen Lin2013-07-081-1/+1
| | | | | | | | than the one being processed. Please let me know if you disagree with this assessment (no one has yet, after asking on llvm-commits and LLVMDev) and I will revert. llvm-svn: 185848
* Debug Info: clean up usage of Verify.Manman Ren2013-07-083-20/+20
| | | | | | | No functionality change. It should suffice to check the type of a debug info metadata, instead of calling Verify. llvm-svn: 185847
* ARM: Improve codegen for generic vselect.Jim Grosbach2013-07-083-30/+57
| | | | | | | | Fall back to by-element insert rather than building it up on the stack. rdar://14351991 llvm-svn: 185846
* Use target DisplaySource if available so we can get mixed source and assembly.Michael Sartain2013-07-081-6/+9
| | | | | | This fixes "disassemble -m -n __printf". llvm-svn: 185845
* DebugInfo: Correct comment & re-format a nearby loopDavid Blaikie2013-07-081-5/+3
| | | | llvm-svn: 185844
* Fix a SCEV update problem.Shuxin Yang2013-07-082-2/+44
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The symptom is seg-fault, and the root cause is that a SCEV contains a SCEVUnknown which has null-pointer to a llvm::Value. This is how the problem take place: =================================== 1). In the pristine input IR, there are two relevant instrutions Op1 and Op2, Op1's corresponding SCEV (denoted as SCEV(op1)) is a SCEVUnknown, and SCEV(Op2) contains SCEV(Op1). None of these instructions are dead. Op1 : V1 = ... ... Op2 : V2 = ... // directly or indirectly (data-flow) depends on Op1 2) Optimizer (LSR in my case) generates an instruction holding the equivalent value of Op1, making Op1 dead. Op1': V1' = ... Op1: V1 = ... ; now dead) Op2 : V2 = ... //Now deps on Op1', but the SCEV(Op2) still contains SCEV(Op1) 3) Op1 is deleted, and call-back function is called to reset SCEV(Op1) to indicate it is invalid. However, SCEV(Op2) is not invalidated as well. 4) Following pass get the cached, invalid SCEV(Op2), and try to manipulate it, and cause segfault. The fix: ======== It seems there is no clean yet inexpensive fix. I write to dev-list soliciting good solution, unforunately no ack. So, I decide to fix this problem in a brute-force way: When ScalarEvolution::getSCEV is called, check if the cached SCEV contains a invalid SCEVUnknow, if yes, remove the cached SCEV, and re-evaluate the SCEV from scratch. I compile buch of big *.c and *.cpp, fortunately, I don't see any increase in compile time. Misc: ===== The reduced test-case has 2357 lines of code+other-stuff, too big to commit. rdar://14283433 llvm-svn: 185843
* DebugInfo: Simplify Address Pool index handling.David Blaikie2013-07-081-5/+3
| | | | | | | | | | Since the pool indexes are necessarily sequential and contiguous, just insert things in the right place rather than having to sort the sequence after the fact. No functionality change. llvm-svn: 185842
* Revert: "Use Clang's __has_* macros in Compiler.h to test for features"Quentin Colombet2013-07-081-38/+16
| | | | | | This reverts r185831 and 185833. llvm-svn: 185841
* PPC: Mark vector FREM as Expand by defaultHal Finkel2013-07-082-0/+9
| | | | | | | Another bug found by llvm-stress! This fixes crashing with: LLVM ERROR: Cannot select: v4f32 = frem ... llvm-svn: 185840
* Implement mad24() and mul24() builtinsTom Stellard2013-07-0810-0/+34
| | | | | Reviewed-by: Aaron Watry <awatry@gmail.com> llvm-svn: 185839
* Add __CLC_ prefix to all macro definitions in headersTom Stellard2013-07-0875-712/+712
| | | | | | | | | | | libclc was defining and undefing GENTYPE and several other macros with common names in its header files. This was preventing applications from defining macros with identical names as command line arguments to the compiler, because the definitions in the header files were masking the macros defined as compiler arguements. Reviewed-by: Aaron Watry <awatry@gmail.com> llvm-svn: 185838
* Implement barrier() builtinTom Stellard2013-07-083-0/+29
| | | | | | Reviewed and Tested-by: Aaron Watry <awatry@gmail.com> llvm-svn: 185837
* Add bitselect() builtinTom Stellard2013-07-082-0/+2
| | | | | Reviewed-By: Aaron Watry <awatry@gmail.com> llvm-svn: 185836
* clang-format this enum.Rafael Espindola2013-07-081-21/+20
| | | | llvm-svn: 185835
* We now always create files with the correct permissions. Simplify the interface.Rafael Espindola2013-07-084-105/+2
| | | | llvm-svn: 185834
* Attempt to fix Compiler.h for some self-hosting botsReid Kleckner2013-07-081-1/+1
| | | | | | | I tested r185831 by self-hosting clang with a recent clang, and got no warnings. I haven't been able to reproduce the problem locally. llvm-svn: 185833
* Create files with the correct permission instead of changing it afterwards.Rafael Espindola2013-07-081-9/+6
| | | | | | No intended functionality change. llvm-svn: 185832
* Use Clang's __has_* macros in Compiler.h to test for featuresReid Kleckner2013-07-081-16/+38
| | | | | | | | | | | | | | | | | | When targetting Windows, clang does not define __GNUC__, and as a result we don't use our attributes with it. This leads to warnings about unused functions that are already annotated with LLVM_ATTRIBUTE_UNUSED. Rather than testing for __clang__, we can use its __has_attribute and __has_builtin macros directlty. While I'm here, conditionally define and use __GNUC_PREREQ for gcc version checks. Spelling the check out with three comparisons is verbose and error prone. Reviewers: aaron.ballman Differential Revision: http://llvm-reviews.chandlerc.com/D1080 llvm-svn: 185831
* Create files with the correct permission instead of changing it afterwards.Rafael Espindola2013-07-081-22/+7
| | | | | | Not intended functionality change. llvm-svn: 185830
* [PowerPC] Support time base instructionsUlrich Weigand2013-07-082-0/+15
| | | | | | | | This adds support for the old-style time base instructions; while new programs are supposed to use mfspr, the mftb instructions are still supported and in use by existing assembler files. llvm-svn: 185829
* Fix incorrect incorrect cast identification in clang-format.Daniel Jasper2013-07-082-0/+2
| | | | | | | | | | | This fixes llvm.org/PR16534. Before: aaaaa& operator+(const aaaaa&)LLVM_DELETED_FUNCTION; After: aaaaa& operator+(const aaaaa&) LLVM_DELETED_FUNCTION; llvm-svn: 185828
* Fixed testcase failing under MS by adding "-fno-delayed-template-parsing",Enea Zaffanella2013-07-082-10/+18
| | | | | | | as suggested by Takumi. To this end, added a MatchVerifier::match() overload accepting a vector of invocation arguments. llvm-svn: 185827
* [PowerPC] Support basic compare mnemonicsUlrich Weigand2013-07-084-1/+62
| | | | | | | | | | | | | | | | | This adds support for the basic mnemoics (with the L operand) for the fixed-point compare instructions. These are defined as aliases for the already existing CMPW/CMPD patterns, depending on the value of L. This requires use of InstAlias patterns with immediate literal operands. To make this work, we need two further changes: - define a RegisterPrefix, because otherwise literals 0 and 1 would be parsed as literal register names - provide a PPCAsmParser::validateTargetOperandClass routine to recognize immediate literals (like ARM does) llvm-svn: 185826
* Fixes problem when calling llvm-ar from an unmodifiable directory.Manuel Klimek2013-07-081-2/+2
| | | | | | | | | This fixes a regression introduced by r185726: the new call to get a unique file does not prepend the system temporary directory, so we need to anchor on the file that the temporary file gets moved to to ensure we're on the same file system. llvm-svn: 185825
* Improve the comment from r185794 (re: PromoteIntRes_BUILD_VECTOR)Hal Finkel2013-07-081-2/+4
| | | | | | | In response to Duncan's review, I believe that the original comment was not as clear as it could be. Hopefully, this is better. llvm-svn: 185824
* Reformat clang-format's source files after r185822 and others.Daniel Jasper2013-07-089-59/+51
| | | | llvm-svn: 185823
* Prefer similar line breaks.Daniel Jasper2013-07-082-20/+33
| | | | | | | | | | | | | | | | | | | | | | | This adds a penalty for clang-format for each break that occurs in a set of parentheses (including fake parenthesis that determine the range of certain operator precendences) that have not yet been broken. Thereby, clang-format prefers similar line breaks. This fixes llvm.org/PR15506. Before: const int kTrackingOptions = NSTrackingMouseMoved | NSTrackingMouseEnteredAndExited | NSTrackingActiveAlways; After: const int kTrackingOptions = NSTrackingMouseMoved | NSTrackingMouseEnteredAndExited | NSTrackingActiveAlways; Also removed ParenState::ForFakeParenthesis which has become unused. llvm-svn: 185822
* [PowerPC] Fix PR16556 (handle undef ppcf128 in LowerFP_TO_INT).Bill Schmidt2013-07-082-0/+29
| | | | | | | | | | | | | | | | | | | | | PPCTargetLowering::LowerFP_TO_INT() expects its source operand to be either an f32 or f64, but this is not checked. A long double (ppcf128) operand will normally be custom-lowered to a conversion to f64 in this context. However, this isn't the case for an UNDEF node. This patch recognizes a ppcf128 as a legal source operand for FP_TO_INT only if it's an undef, in which case it creates an undef of the target type. At some point we might want to do a wholesale custom lowering of ISD::UNDEF when the type is ppcf128, but it's not really clear that's a great idea, and probably more work than it's worth for a situation that only arises in the case of a programming error. At this point I think simple is best. The test case comes from PR16556, and is a crash-test only. llvm-svn: 185821
* Fix use of invalidated iterator bug in AST match finder.Manuel Klimek2013-07-081-4/+6
| | | | | | | | Pulled out the cache clearing in the case of descendant matching, too, for consistency, also it is not technically needed there. FIXME: Make cache size configurable and add unit test. llvm-svn: 185820
* Convert an OCaml binding grep test to FileCheckReid Kleckner2013-07-081-329/+340
| | | | | | | | I shaved this yak because I mistakenly thought that this was one of the last grep tests. Turns out my search was skipping .ll files, for which there are ~1200 more tests using grep. llvm-svn: 185819
* Fix for corner cases in code handling leading "* " decorations in block commentsAlexander Kornienko2013-07-083-30/+69
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: Fixes problems that lead to incorrect formatting of these and similar snippets: /* ** */ /* **/ /* * */ /* *test */ Clang-format used to think that all the cases above use "* " decoration, and failed to calculate insertion position properly. It also used to remove leading "* " in the last line. Reviewers: klimek Reviewed By: klimek CC: cfe-commits Differential Revision: http://llvm-reviews.chandlerc.com/D1113 llvm-svn: 185818
* [lsan] Fix test.Sergey Matveev2013-07-081-2/+1
| | | | llvm-svn: 185817
* [lsan] Handle fork() correctly.Sergey Matveev2013-07-0810-2/+99
| | | | | | | | Update the main thread's os_id on every pthread_create, and before initiating leak checking. This ensures that we have the correct os_id even if we have forked after Init(). llvm-svn: 185815
* cpp11-migrate: Fixes for r185811Edwin Vane2013-07-082-2/+3
| | | | | | | | Some changes to r185811 broke certain build configurations. These changes should fix them. Author: Guillaume Papin <guillaume.papin@epitech.eu> llvm-svn: 185814
* cpp11-migrate: Tidying upEdwin Vane2013-07-0847-169/+232
| | | | | | | | | | | | * Some file headers were missing for files in Core/ * Some headers were included but not necessary * CMakeLists.txt was linking in LLVMSupport even though CMakeLists in subdirs were linking it in too. * StringRefisation of constructors of types in FileOverrides.h * Other misc cleanups Author: Guillaume Papin <guillaume.papin@epitech.eu> llvm-svn: 185811
* clang/include/clang/AST/ExprCXX.h:260:5: Fix a warning -- unknown command ↵NAKAMURA Takumi2013-07-081-1/+1
| | | | | | tag name 'cc'; did you mean 'c'? [-Wdocumentation] llvm-svn: 185810
* clang/test/Index/comment-custom-block-command.cpp: This has not been failing ↵NAKAMURA Takumi2013-07-081-1/+1
| | | | | | | | since r175892 on valgrind. That said, it fails with --vg-leak. Mark it as XFAIL: vg_leak instead. llvm-svn: 185809
* InstCombine: Fold X-C1 <u 2 -> (X & -2) == C1David Majnemer2013-07-082-0/+18
| | | | | | | | | | | Back in r179493 we determined that two transforms collided with each other. The fix back then was to reorder the transforms so that the preferred transform would give it a try and then we would try the secondary transform. However, it was noted that the best approach would canonicalize one transform into the other, removing the collision and allowing us to optimize IR given to us in that form. llvm-svn: 185808
OpenPOWER on IntegriCloud