- Oct 04, 2013
-
-
Matthias Braun authored
llvm-svn: 191966
-
Matthias Braun authored
llvm-svn: 191965
-
Matthias Braun authored
llvm-svn: 191964
-
Matthias Braun authored
optimizeSelect folds (predicated) copy instructions, it must not ignore the original register class of the operand when replacing the register with the copies dest register. llvm-svn: 191963
-
Matthias Braun authored
The jump doesn't really kill the registers, the following call does but we never get back anyway. This avoids some verify-machineinstrs problems when TAILJUMPs are if-converted. llvm-svn: 191962
-
Matthias Braun authored
Copy over the whole register machine operand instead of creating a new one with an incomplete set of flags. llvm-svn: 191961
-
Ed Maste authored
llvm-svn: 191960
-
Michael Sartain authored
llvm-svn: 191959
-
Rafael Espindola authored
llvm-svn: 191958
-
Rafael Espindola authored
llvm-svn: 191957
-
Rafael Espindola authored
llvm-svn: 191956
-
Rafael Espindola authored
Revert "Teach TreeTransform and family how to transform generic lambdas within templates and nested within themselves." This reverts commit r191879. It caused llvm.org/pr17476. llvm-svn: 191955
-
Alexey Samsonov authored
llvm-svn: 191954
-
Amaury de la Vieuville authored
These IR instructions are undefined when the amount is equal to operand size, but NEON right shifts support such shifts. Work around that by emitting a different IR in these cases. llvm-svn: 191953
-
Alexey Samsonov authored
llvm-svn: 191952
-
Simon Atanasyan authored
general solution. llvm-svn: 191951
-
Timur Iskhodzhanov authored
llvm-svn: 191950
-
Alp Toker authored
This reverts commit r191942. llvm-svn: 191949
-
Alexey Samsonov authored
Restore LLVM_BUILD_RUNTIME option that was deleted in r191835, but is still used to control building of compiler-rt and libcxx llvm-svn: 191948
-
Simon Atanasyan authored
-static. So do not turn off the PIC flag if -static passed to the driver in case of MIPS target. http://llvm.org/bugs/show_bug.cgi?id=14693 llvm-svn: 191947
-
Dmitry Vyukov authored
It must set thr->in_rtl = 0 before executing user callback. llvm-svn: 191946
-
Jiangning Liu authored
llvm-svn: 191945
-
Jiangning Liu authored
llvm-svn: 191944
-
Alexey Samsonov authored
llvm-svn: 191943
-
Jin-Gu Kang authored
llvm-svn: 191942
-
Craig Topper authored
llvm-svn: 191941
-
Craig Topper authored
Add OPC_CheckChildSame0-3 to the DAG isel matcher. This replaces sequences of MoveChild, CheckSame, MoveParent. Saves 846 bytes from the X86 DAG isel matcher, ~300 from ARM, ~840 from Hexagon. llvm-svn: 191940
-
David Blaikie authored
In the case (shown in the attached test) where a member function definition was emitted into debug info the following could occur: 1) build the debug info for the member function definition 2) in (1), build the debug info for the member function declaration 3) construct and add the member function declaration DIE 4) add it to its context 5) build its context (the type it is a member of) 6) construct the members and add them to the type 7) except don't add member functions because "getOrCreateSubprogram" adds the function to its parent anyway 8) except we're only partway through building this subprogram declaration so it hasn't been added yet - but we returned the partially constructed DIE (since it's already in the MDNode->DIE mapping to avoid infinitely recursing trying to create the member function DIE) 9) once the type is constructed, add the member function to it 10) now the members are out of order (the member function being defined is listed as the last member, even though it was declared as the first) To avoid this, construct the context of the subprogram DIE before we query to see if it exists. That way we never end up creating it before creating its context and ending up in this situation. Alternatively, the type construction that visits/builds all the members could call something like getOrCreateSubprogram, but that doesn't ever do the "add to context" step. Then the type building code would always be responsible for adding members (and the subprogram "addToContextDIE" would no-op because the context building would have added the subprogram declaration to the type/context DIE already). (the test cases updated were overly-sensitive to offsets or abbreviation numbers. We don't have a nice way to make these tests more robust as yet - multiline FileCheck matches would be required) llvm-svn: 191939
-
Andrew Kaylor authored
llvm-svn: 191938
-
Jordan Rose authored
Re-commit r191910 (reverted in r191936) with layering violation fixed, by moving the bug categories to StaticAnalyzerCore instead of ...Checkers. llvm-svn: 191937
-
Richard Smith authored
llvm-svn: 191936
-
Peter Collingbourne authored
llvm-svn: 191935
-
Sean Callanan authored
to be explicit, to prevent horrid things like std::string a = ConstString("foo") from taking the path ConstString -> bool -> char -> std::string. This fixes, among other things, ClangFunction. <rdar://problem/15137989> llvm-svn: 191934
-
Daniel Malea authored
llvm-svn: 191933
-
Richard Mitton authored
Changed the dwarf aranges code to not use getLabelEndName, as it turns out it's not reliable to call that given user-defined section names. Section names can have characters in that aren't representable as symbol names. The dwarf-aranges test case has been updated to include a special character, to check this. This fixes pr17416. llvm-svn: 191932
-
Peter Collingbourne authored
libsupc++ declares these constructors inline, so we won't necessarily get a definition for them in the library. llvm-svn: 191931
-
- Oct 03, 2013
-
-
Peter Collingbourne authored
llvm-svn: 191930
-
Owen Anderson authored
Pull fptrunc's upwards through selects when one of the select's selectands was a constant. This has a number of benefits, including producing small immediates (easier to materialize, smaller constant pools) as well as being more likely to allow the fptrunc to fuse with a preceding instruction (truncating selects are unusual). llvm-svn: 191929
-
David Blaikie authored
DIE::addChild had a shortcircuit that silently no-op'd when a child was readded to the same parent. This hid some quirky/redundant code in DwarfDebug/CompileUnit. By removing that functionality and replacing it with an assert I was able to find and cleanup those cases, mostly centering around adding members to types in various circumstances. 1) The original oddity I noticed while working on type units (which actually was helping me in the short term, by accident) was the addToContextOwner call in constructTypeDIE. This call was completely bogus (why was it only done for non-virtual types? what relevance does that have at all) and redundant with the more uniform addToContextOwner made in getOrCreateTypeDIE. 2) If a member function definition was visited (createSubprogramDIE), it would attempt to build the member function declaration. The declaration DIE would then be added to its context, but in building the context (the type for which this function is a member) the members of the type would be added to the type automatically, so by the time the context was constructed, the member function was already associated with it. 3) The same as (2) but without the member function being constructed first. Whenever a type was constructed, the members would be created and member functions would be created by getOrCreateSubprogramDIE - this would lead to the subprogram being added to the (incomplete) type already, then the general member-construction code would add it again. llvm-svn: 191928
-
Matt Arsenault authored
llvm-svn: 191927
-