- Jul 04, 2013
-
-
Rui Ueyama authored
This is a follow-up patch for r185524. Being assert enabled does not mean that DEBUG() is enabled, so we need to check the existence of DEBUG() itself. llvm-svn: 185619
-
Jakob Stoklund Olesen authored
llvm-svn: 185618
-
Jakob Stoklund Olesen authored
Stop using the ISD::EXCEPTIONADDR and ISD::EHSELECTION when lowering landing pad arguments. These nodes were previously legalized into CopyFromReg nodes, but that never worked properly because the CopyFromReg node weren't guaranteed to be scheduled at the top of the basic block. This meant the exception pointer and selector registers could be clobbered before being copied to a virtual register. This patch copies the two physical registers to virtual registers at the beginning of the basic block, and lowers the landingpad instruction directly to two CopyFromReg nodes reading the *virtual* registers. This is safe because virtual registers don't get clobbered. A future patch will remove the ISD::EXCEPTIONADDR and ISD::EHSELECTION nodes. llvm-svn: 185617
-
Jakob Stoklund Olesen authored
Compute the insertion point from the end of the basic block instead of skipping labels from the front. This caused failures in landing pads when live-in copies where inserted before instruction selection. llvm-svn: 185616
-
Jakob Stoklund Olesen authored
This will soon be tested by exception handling working at all. llvm-svn: 185615
-
Richard Smith authored
llvm-svn: 185614
-
Richard Smith authored
llvm-svn: 185613
-
Nick Lewycky authored
llvm-svn: 185612
-
Craig Topper authored
llvm-svn: 185611
-
Craig Topper authored
Use SmallVectorImpl instead of SmallVector for iterators and references to avoid specifying the vector size unnecessarily. llvm-svn: 185610
-
Anna Zaks authored
The motivation is to suppresses false use-after-free reports that occur when calling std::list::pop_front() or std::list::pop_back() twice. The analyzer does not reason about the internal invariants of the list implementation, so just do not report any of warnings in std::list. Fixes radar://14317928. llvm-svn: 185609
-
Anna Zaks authored
This suppresses a false positive in std::hash_map. Fixes radar://14255587. llvm-svn: 185608
-
Craig Topper authored
llvm-svn: 185607
-
Craig Topper authored
Use SmallVectorImpl::iterator/const_iterator instead of SmallVector to avoid specifying the vector size. llvm-svn: 185606
-
Eric Christopher authored
llvm-svn: 185605
-
Richard Smith authored
substitution failed, report that as a substitution failure rather than pretending that there was no default argument. The test cases in PR15673 have exposed some pre-existing poor diagnostics here. llvm-svn: 185604
-
Eric Christopher authored
llvm-svn: 185603
-
Richard Trieu authored
llvm-svn: 185602
-
Eric Christopher authored
Patch by pashev.igor. llvm-svn: 185601
-
Jakob Stoklund Olesen authored
Revert "Simplify landing pad lowering." Revert "Remove the EXCEPTIONADDR, EHSELECTION, and LSDAADDR ISD opcodes." llvm-svn: 185600
-
Fariborz Jahanian authored
types when deciding on validity of a property inclusion. // rdar://14345082 llvm-svn: 185599
-
Richard Smith authored
previously didn't work if a mem-initializer-id had a template argument which contained parentheses or braces. We now implement a simple rule: just look for a ') {' or '} {' that is not nested. The '{' is assumed to start the function-body. There are still two cases which we misparse, where the ') {' comes from a compound literal or from a lambda. The former case is not valid C++, and the latter will probably not be valid C++ once DR1607 is resolved, so these seem to be of low value, and we do not regress on them with this change. EDG and g++ also misparse both of these cases. llvm-svn: 185598
-
Marshall Clow authored
llvm-svn: 185597
-
Jakob Stoklund Olesen authored
These exception-related opcodes are not used any longer. llvm-svn: 185596
-
Jakob Stoklund Olesen authored
Stop using the ISD::EXCEPTIONADDR and ISD::EHSELECTION when lowering landing pad arguments. These nodes were previously legalized into CopyFromReg nodes, but that never worked properly because the CopyFromReg node weren't guaranteed to be scheduled at the top of the basic block. This meant the exception pointer and selector registers could be clobbered before being copied to a virtual register. This patch copies the two physical registers to virtual registers at the beginning of the basic block, and lowers the landingpad instruction directly to two CopyFromReg nodes reading the *virtual* registers. This is safe because virtual registers don't get clobbered. A future patch will remove the ISD::EXCEPTIONADDR and ISD::EHSELECTION nodes. llvm-svn: 185595
-
Jakob Stoklund Olesen authored
This function adds a live-in physical register to an MBB and ensures that it is copied to a virtual register immediately. llvm-svn: 185594
-
Fariborz Jahanian authored
llvm-svn: 185593
-
Stephen Lin authored
Have ARMBaseRegisterInfo::getCallPreservedMask return the 'correct' mask for the GHC calling convention. This is purely academic because GHC calls are always tail calls so the register mask will never be used; however, this change makes the code clearer and brings the ARM implementation of the GHC calling convention in line with the X86 implementation. Also, it might save someone else some time trying to figuring out what is happening... llvm-svn: 185592
-
Fariborz Jahanian authored
migrating setter/getter methods to an eventual property declaraiton. This is wip. // rdar://14345082 llvm-svn: 185591
-
Sebastian Pop authored
to reduce indentation level No functionality changed. llvm-svn: 185590
-
Eric Christopher authored
llvm-svn: 185589
-
Eric Christopher authored
for them and update all uses. llvm-svn: 185588
-
- Jul 03, 2013
-
-
Quentin Colombet authored
In the ARM back-end, build_vector nodes are lowered to a target specific build_vector that uses floating point type. This works well, unless the inserted bitcasts survive until instruction selection. In that case, they incur moves between integer unit and floating point unit that may result in inefficient code. In other words, this conversion may introduce artificial dependencies when the code leading to the build vector cannot be completed with a floating point type. In particular, this happens when loads are not aligned. Before this patch, in that case, the compiler generates general purpose loads and creates the floating point vector from them, instead of directly using the vector unit. The patch uses a vector friendly sequence of code when the inserted bitcasts to floating point survived DAGCombine. This is done by a target specific DAGCombine that changes the target specific build_vector into a sequence of insert_vector_elt that get rid of the bitcasts. <rdar://problem/14170854> llvm-svn: 185587
-
Eric Christopher authored
llvm-svn: 185586
-
Eric Christopher authored
(and for consistency). llvm-svn: 185585
-
Roman Divacky authored
llvm-svn: 185584
-
Bill Schmidt authored
Long double is 64 bits on FreeBSD PPC, so the f128 entry is superfluous. llvm-svn: 185583
-
Bill Schmidt authored
Long double is 64 bits on FreeBSD PPC, so the f128 entry is superfluous. llvm-svn: 185582
-
Renato Golin authored
llvm-svn: 185581
-
Bill Schmidt authored
PR16456 reported that Clang implements a hybrid between AltiVec's "Keyword and Predefine Method" and its "Context Sensitive Keyword Method," where "bool" is always a keyword, but "vector" and "pixel" are context-sensitive keywords. This isn't permitted by the AltiVec spec. For consistency with gcc, this patch implements the Context Sensitive Keyword Method for bool, and stops treating true and false as keywords in Altivec mode. The patch removes KEYALTIVEC as a trigger for defining these keywords in include/clang/Basic/TokenKinds.def, and adds logic for "vector bool" that mirrors the existing logic for "vector pixel." The test case is taken from the bug report. llvm-svn: 185580
-