David Blaikie [Mon, 23 Jan 2012 22:22:44 +0000 (22:22 +0000)]
Simplify llvm::cl::Option by using a bit field instead of manual bit packing.
This still preserves the same total layout.
Previously it looked like:
*** Dumping AST Record Layout
0 | class llvm::cl::Option
0 | (Option vtable pointer)
8 | int NumOccurrences
12 | int Flags
16 | unsigned int Position
20 | unsigned int AdditionalVals
24 | class llvm::cl::Option * NextRegistered
32 | const char * ArgStr
40 | const char * HelpStr
48 | const char * ValueStr
sizeof=56, dsize=56, align=8
nvsize=56, nvalign=8
Now it looks like:
*** Dumping AST Record Layout
0 | class llvm::cl::Option
0 | (Option vtable pointer)
8 | int NumOccurrences
12 | enum NumOccurrencesFlag Occurrences
12 | unsigned int Value
12 | enum OptionHidden HiddenFlag
12 | enum FormattingFlags Formatting
13 | unsigned int Misc
16 | unsigned int Position
20 | unsigned int AdditionalVals
24 | class llvm::cl::Option * NextRegistered
32 | const char * ArgStr
40 | const char * HelpStr
48 | const char * ValueStr
sizeof=56, dsize=56, align=8
nvsize=56, nvalign=8
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148736
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Grosbach [Mon, 23 Jan 2012 21:53:26 +0000 (21:53 +0000)]
NEON VLD3 lane-indexed assembly parsing and encoding.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148734
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Mon, 23 Jan 2012 21:51:52 +0000 (21:51 +0000)]
Add support for .cfi_signal_frame. Fixes pr11762.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148733
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 23 Jan 2012 21:42:52 +0000 (21:42 +0000)]
Various public StringMap methods take or return "MapEntryTy", make it public.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148732
91177308-0d34-0410-b5e6-
96231b3b80d8
Lang Hames [Mon, 23 Jan 2012 21:15:01 +0000 (21:15 +0000)]
copyImplicitOps is redundant here - the loop above already copies these ops.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148725
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakob Stoklund Olesen [Mon, 23 Jan 2012 21:01:15 +0000 (21:01 +0000)]
Fix PR11829. PostRA LICM was too aggressive.
This fixes a typo in r148589.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148724
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakob Stoklund Olesen [Mon, 23 Jan 2012 21:01:11 +0000 (21:01 +0000)]
Simplify debug output.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148723
91177308-0d34-0410-b5e6-
96231b3b80d8
Devang Patel [Mon, 23 Jan 2012 20:20:06 +0000 (20:20 +0000)]
Intel syntax: Parse memory operand with empty base reg, e.g. DWORD PTR [4*RDI]
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148721
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Grosbach [Mon, 23 Jan 2012 19:39:08 +0000 (19:39 +0000)]
Simplify some NEON assembly pseudo definitions.
Let the generic token alias definitions handle the data subtype
suffices. We don't need explicit versions for each.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148718
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Beaumont-Gay [Mon, 23 Jan 2012 18:46:04 +0000 (18:46 +0000)]
Silence warnings in -asserts build
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148715
91177308-0d34-0410-b5e6-
96231b3b80d8
Devang Patel [Mon, 23 Jan 2012 18:31:58 +0000 (18:31 +0000)]
Intel syntax: Parse segment registers.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148712
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 23 Jan 2012 15:20:12 +0000 (15:20 +0000)]
convert CAZ, UndefValue, and CPN to use DenseMap's again, this time without
using OwningPtr. OwningPtr would barf when the densemap had to reallocate,
which doesn't appear to happen on the regression test suite, but obviously
happens in real life :)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148700
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 23 Jan 2012 15:10:41 +0000 (15:10 +0000)]
revert r148688 too, this isn't safe for DenseMap use. When DenseMap resizes, it will need to copy around arbitrary pointers
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148699
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 23 Jan 2012 15:09:44 +0000 (15:09 +0000)]
revert r148691 and 148693
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148698
91177308-0d34-0410-b5e6-
96231b3b80d8
Alexander Potapenko [Mon, 23 Jan 2012 11:22:43 +0000 (11:22 +0000)]
Implemented AddressSanitizer::getPassName()
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148697
91177308-0d34-0410-b5e6-
96231b3b80d8
NAKAMURA Takumi [Mon, 23 Jan 2012 09:14:42 +0000 (09:14 +0000)]
ARMAsmPrinter.cpp: Try to fix up r148686. EnableARMEHABI was also here.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148694
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 23 Jan 2012 08:52:32 +0000 (08:52 +0000)]
switch UndefValue and ConstantPointerNull over to DenseMap's for uniquing.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148693
91177308-0d34-0410-b5e6-
96231b3b80d8
Nick Lewycky [Mon, 23 Jan 2012 08:47:21 +0000 (08:47 +0000)]
Fix broken link.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148692
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 23 Jan 2012 08:42:38 +0000 (08:42 +0000)]
Replace a use of ConstantUniqueMap for CAZ constants with a simple DenseMap.
Now that the type system rewrite has landed, there is no need for its
complexity and std::map'ness.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148691
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 23 Jan 2012 08:19:57 +0000 (08:19 +0000)]
allow OwningPtr to be copy constructed if null, which is required to
make them be a valuetype in a DenseMap.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148688
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Mon, 23 Jan 2012 08:18:28 +0000 (08:18 +0000)]
Custom lower PCMPEQ/PCMPGT intrinsics to target specific nodes and remove the intrinsic patterns.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148687
91177308-0d34-0410-b5e6-
96231b3b80d8
Evgeniy Stepanov [Mon, 23 Jan 2012 07:57:39 +0000 (07:57 +0000)]
An option to selectively enable parts of ARM EHABI support.
This change adds an new value to the --arm-enable-ehabi option that
disables emitting unwinding descriptors. This mode gives a working
backtrace() without the (currently broken) exception support.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148686
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Mon, 23 Jan 2012 06:46:22 +0000 (06:46 +0000)]
Update more places to use target specific nodes for vector shifts instead of intrinsics.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148685
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Mon, 23 Jan 2012 06:16:53 +0000 (06:16 +0000)]
Custom lower vector shift intrinsics to target specific nodes and remove the patterns that are no longer needed.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148684
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Mon, 23 Jan 2012 05:07:16 +0000 (05:07 +0000)]
Avoid using an invalidated iterator.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148681
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Mon, 23 Jan 2012 03:41:53 +0000 (03:41 +0000)]
The iteration order over a std::set<Module*> depends on the addresses of the
modules. Avoid that to make the order the linker sees the modules deterministic.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148676
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Mon, 23 Jan 2012 00:06:44 +0000 (00:06 +0000)]
Remove pattern fragments for v32i8, v16i16, v8i32, v16i8, v8i16, and v4i32 loads. All integer vector loads are promoted to v2i64 or v4i64 so these pattern fragments can never match. Fix or remove patterns that used these fragments.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148672
91177308-0d34-0410-b5e6-
96231b3b80d8
Nick Lewycky [Mon, 23 Jan 2012 00:05:17 +0000 (00:05 +0000)]
Make Value::isDereferenceablePointer() handle unreachable code blocks. (This
returns false in the event the computation feeding into the pointer is
unreachable, which maybe ought to be true -- but this is at least consistent
with undef->isDereferenceablePointer().) Fixes PR11825!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148671
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Sun, 22 Jan 2012 23:36:02 +0000 (23:36 +0000)]
Combine X86 CMPPD and CMPPS node types. Simplifies selection code and pattern matching.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148670
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Sun, 22 Jan 2012 22:42:16 +0000 (22:42 +0000)]
Merge PCMPEQB/PCMPEQW/PCMPEQD/PCMPEQQ and PCMPGTB/PCMPGTW/PCMPGTD/PCMPGTQ X86 ISD node types into only two node types. Simplifying opcode selection and pattern matching.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148667
91177308-0d34-0410-b5e6-
96231b3b80d8
Nicolas Geoffray [Sun, 22 Jan 2012 20:05:26 +0000 (20:05 +0000)]
Use Attributes::None instead of 0 after r148553 change on Attributes from unsigned to their own class.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148665
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Sun, 22 Jan 2012 19:15:14 +0000 (19:15 +0000)]
Add target specific ISD node types for SSE/AVX vector shuffle instructions and change all the code that used to create intrinsic nodes to create the new nodes instead.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148664
91177308-0d34-0410-b5e6-
96231b3b80d8
Anton Korobeynikov [Sun, 22 Jan 2012 14:08:34 +0000 (14:08 +0000)]
Add an option to disable buggy copy propagation pass
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148662
91177308-0d34-0410-b5e6-
96231b3b80d8
NAKAMURA Takumi [Sun, 22 Jan 2012 12:14:35 +0000 (12:14 +0000)]
unittests/Support/Casting.cpp: [PR8226] Workaround for MSVC|Debug.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148659
91177308-0d34-0410-b5e6-
96231b3b80d8
Anton Korobeynikov [Sun, 22 Jan 2012 12:07:33 +0000 (12:07 +0000)]
Add fused multiple+add instructions from VFPv4.
Patch by Ana Pazos!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148658
91177308-0d34-0410-b5e6-
96231b3b80d8
Eli Bendersky [Sun, 22 Jan 2012 09:26:00 +0000 (09:26 +0000)]
Remove trailing spaces
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148655
91177308-0d34-0410-b5e6-
96231b3b80d8
Eli Bendersky [Sun, 22 Jan 2012 09:02:48 +0000 (09:02 +0000)]
Remove trailing spaces
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148654
91177308-0d34-0410-b5e6-
96231b3b80d8
Eli Bendersky [Sun, 22 Jan 2012 09:01:03 +0000 (09:01 +0000)]
Basic runtime dynamic loading capabilities added to ELFObjectFile, implemented
in a subclass named DyldELFObject. This class supports rebasing the object file
it represents by re-mapping section addresses to the actual memory addresses
the object was placed in. This is required for MC-JIT implementation on ELF with
debugging support.
Patch reviewed on llvm-commits.
Developed together with Ashok Thirumurthi and Andrew Kaylor.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148653
91177308-0d34-0410-b5e6-
96231b3b80d8
Eli Bendersky [Sun, 22 Jan 2012 07:05:02 +0000 (07:05 +0000)]
Split the lib/ExecutionEngine/RuntimeDyld/RuntimeDyldImpl.h header to smaller logical headers.
ELF and MachO implementations of RuntimeDyldImpl go into their own header files now.
Reviewed on llvm-commits
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148652
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Sun, 22 Jan 2012 03:07:48 +0000 (03:07 +0000)]
Make code a little less verbose.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148651
91177308-0d34-0410-b5e6-
96231b3b80d8
David Blaikie [Sun, 22 Jan 2012 01:17:04 +0000 (01:17 +0000)]
Help GCC along with code that's actually unreachable.
Unfortunately I don't think there's a fix for this that will work upstream and
also satisfy Clang's -Wunreachable-code, which is a pity. But I'll give it some
more thought -perhaps there's some way out.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148645
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Sun, 22 Jan 2012 01:15:56 +0000 (01:15 +0000)]
Remove unused X86 ISD node type defines.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148644
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Sun, 22 Jan 2012 00:41:20 +0000 (00:41 +0000)]
Move some vector shift patterns into their instruction definitions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148643
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Sat, 21 Jan 2012 18:37:15 +0000 (18:37 +0000)]
Add memory patterns for some of the fp<->integer conversion instructions. Fold some patterns into instruction definitions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148641
91177308-0d34-0410-b5e6-
96231b3b80d8
David Blaikie [Sat, 21 Jan 2012 18:02:01 +0000 (18:02 +0000)]
Remove unreachable defaults from gtest.
This will ensure LLVM and Clang build -Wswitch-enum-redundant-default (an on-by-default warning I'm about to add to Clang).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148639
91177308-0d34-0410-b5e6-
96231b3b80d8
Benjamin Kramer [Sat, 21 Jan 2012 10:42:44 +0000 (10:42 +0000)]
Remove unused variables.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148635
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Sat, 21 Jan 2012 08:49:33 +0000 (08:49 +0000)]
Fix PR11819 introduced by r148537. I'd commit the test case, but the generated code is terrible as it gets fully scalarized. Expect a future commit to fix that.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148632
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Sat, 21 Jan 2012 03:31:03 +0000 (03:31 +0000)]
Fix an obvious typo.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148622
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakob Stoklund Olesen [Sat, 21 Jan 2012 00:58:53 +0000 (00:58 +0000)]
Handle register masks in LiveVariables.
A register mask operand kills any live physreg that isn't preserved.
Unlike an implicit-def operand, the clobbered physregs are never live
afterwards.
This means LiveVariables has to track a much smaller number of live
physregs, and it should spend much less time in addRegisterDead().
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148609
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Grosbach [Sat, 21 Jan 2012 00:21:53 +0000 (00:21 +0000)]
RuntimeDyld alignment adjustment from MachO file.
The MachO file stores section alignment as log2(alignment-in-bytes). The
allocation routines want the raw alignment-in-bytes value, so adjust
for that.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148604
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Grosbach [Sat, 21 Jan 2012 00:07:56 +0000 (00:07 +0000)]
Thumb2 'add rd, pc, imm' alternate form for 'adr' instruction.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148601
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakob Stoklund Olesen [Fri, 20 Jan 2012 22:48:59 +0000 (22:48 +0000)]
Delete an unused member variable.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148594
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Grosbach [Fri, 20 Jan 2012 22:44:03 +0000 (22:44 +0000)]
Fix inverted condition.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148593
91177308-0d34-0410-b5e6-
96231b3b80d8
Devang Patel [Fri, 20 Jan 2012 22:32:05 +0000 (22:32 +0000)]
Intel syntax: Robustify register parsing.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148591
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakob Stoklund Olesen [Fri, 20 Jan 2012 22:27:12 +0000 (22:27 +0000)]
Support register masks in MachineLICM.
Only PostRA LICM is affected.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148589
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakob Stoklund Olesen [Fri, 20 Jan 2012 22:27:09 +0000 (22:27 +0000)]
Handle register masks in DeadMachineInstructionElim.
Don't track live physregs that are clobbered by a register mask operand.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148588
91177308-0d34-0410-b5e6-
96231b3b80d8
David Blaikie [Fri, 20 Jan 2012 21:51:11 +0000 (21:51 +0000)]
More dead code removal (using -Wunreachable-code)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148578
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Trick [Fri, 20 Jan 2012 21:23:40 +0000 (21:23 +0000)]
Handle a corner case with IV chain collection with bailout instead of assert.
Fixes PR11783: bad cast to AddRecExpr.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148572
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Trick [Fri, 20 Jan 2012 21:21:27 +0000 (21:21 +0000)]
Test case comments missing from my previous checkin.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148571
91177308-0d34-0410-b5e6-
96231b3b80d8
Devang Patel [Fri, 20 Jan 2012 21:21:01 +0000 (21:21 +0000)]
Intel syntax: Parse ... PTR [-8]
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148570
91177308-0d34-0410-b5e6-
96231b3b80d8
Devang Patel [Fri, 20 Jan 2012 21:14:06 +0000 (21:14 +0000)]
Intel syntax: For now, disable ambiguous JMP64pcrel32 for intel syntax.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148569
91177308-0d34-0410-b5e6-
96231b3b80d8
Bob Wilson [Fri, 20 Jan 2012 20:59:56 +0000 (20:59 +0000)]
ARM vector any_extends need to be selected to vmovl. <rdar://problem/
10723651>
We have patterns for vector sext and zext operations but were missing
anyext. Without those patterns, codegen will fail when the selection DAG
has any_extend nodes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148568
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Grosbach [Fri, 20 Jan 2012 20:02:39 +0000 (20:02 +0000)]
TblGen diagnostic for mismatched template instantiation.
Providing a template argment to a non-templatized class was crashing
tblgen. Add a diagnostic.
For example,
$ cat bug.td
class A;
def B : A<0> {
}
$ llvm-tblgen bug.td
bug.td:3:11: error: template argument provided to non-template class
def B : A<0> {
^
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148565
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Grosbach [Fri, 20 Jan 2012 19:16:00 +0000 (19:16 +0000)]
VST2 four-register w/ update pseudos for fixed/register update.
rdar://
10724489
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148560
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Grosbach [Fri, 20 Jan 2012 18:09:51 +0000 (18:09 +0000)]
NEON use vmov.i32 to splat some f32 values into vectors.
For bit patterns that aren't representable using the 8-bit floating point
representation for vmov.f32, but are representable via vmov.i32, treat
the .f32 syntax as an alias. Most importantly, this covers the case
'vmov.f32 Vd, #0.0'.
rdar://
10616677
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148556
91177308-0d34-0410-b5e6-
96231b3b80d8
Benjamin Kramer [Fri, 20 Jan 2012 18:08:30 +0000 (18:08 +0000)]
Don't use my favorite C++11 feature (comma at end of enum).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148555
91177308-0d34-0410-b5e6-
96231b3b80d8
Kostya Serebryany [Fri, 20 Jan 2012 17:56:17 +0000 (17:56 +0000)]
Extend Attributes to 64 bits
Problem: LLVM needs more function attributes than currently available (32 bits).
One such proposed attribute is "address_safety", which shows that a function is being checked for address safety (by AddressSanitizer, SAFECode, etc).
Solution:
- extend the Attributes from 32 bits to 64-bits
- wrap the object into a class so that unsigned is never erroneously used instead
- change "unsigned" to "Attributes" throughout the code, including one place in clang.
- the class has no "operator uint64 ()", but it has "uint64_t Raw() " to support packing/unpacking.
- the class has "safe operator bool()" to support the common idiom: if (Attributes attr = getAttrs()) useAttrs(attr);
- The CTOR from uint64_t is marked explicit, so I had to add a few explicit CTOR calls
- Add the new attribute "address_safety". Doing it in the same commit to check that attributes beyond first 32 bits actually work.
- Some of the functions from the Attribute namespace are worth moving inside the class, but I'd prefer to have it as a separate commit.
Tested:
"make check" on Linux (32-bit and 64-bit) and Mac (10.6)
built/run spec CPU 2006 on Linux with clang -O2.
This change will break clang build in lib/CodeGen/CGCall.cpp.
The following patch will fix it.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148553
91177308-0d34-0410-b5e6-
96231b3b80d8
Benjamin Kramer [Fri, 20 Jan 2012 16:39:46 +0000 (16:39 +0000)]
Protect SmallVectorImpl's constructor and a few other methods that aren't meant to be public.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148550
91177308-0d34-0410-b5e6-
96231b3b80d8
Benjamin Kramer [Fri, 20 Jan 2012 14:42:37 +0000 (14:42 +0000)]
Add missing breaks to switch.
Found by the clang static analyzer.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148543
91177308-0d34-0410-b5e6-
96231b3b80d8
Benjamin Kramer [Fri, 20 Jan 2012 14:42:32 +0000 (14:42 +0000)]
Remove a bunch of unused variable assignments.
Found by the clang static analyzer.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148541
91177308-0d34-0410-b5e6-
96231b3b80d8
Benjamin Kramer [Fri, 20 Jan 2012 14:42:25 +0000 (14:42 +0000)]
Remove obviously invalid early exit that prevented analyzing ConstantAggregateZeros.
Found by the clang static analyzer.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148540
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Fri, 20 Jan 2012 13:10:10 +0000 (13:10 +0000)]
Don't use -fvisibility-inlines-hidden on mingw to try to avoid a lot of
warnings from gcc.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148539
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Fri, 20 Jan 2012 09:29:03 +0000 (09:29 +0000)]
Improve 256-bit shuffle splitting to allow 2 sources in each 128-bit lane. As long as only a single lane of the source is used in the lane in the destination. This makes the splitting match much closer to what happens with 256-bit shuffles when AVX is disabled and only 128-bit XMM is allowed.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148537
91177308-0d34-0410-b5e6-
96231b3b80d8
Nick Lewycky [Fri, 20 Jan 2012 08:35:20 +0000 (08:35 +0000)]
Fix CountCodeReductionForAlloca to more accurately represent what SROA can and
can't handle. Also don't produce non-zero results for things which won't be
transformed by SROA at all just because we saw the loads/stores before we saw
the use of the address.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148536
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Trick [Fri, 20 Jan 2012 07:41:13 +0000 (07:41 +0000)]
SCEVExpander fixes. Affects LSR and indvars.
LSR has gradually been improved to more aggressively reuse existing code, particularly existing phi cycles. This exposed problems with the SCEVExpander's sloppy treatment of its insertion point. I applied some rigor to the insertion point problem that will hopefully avoid an endless bug cycle in this area. Changes:
- Always used properlyDominates to check safe code hoisting.
- The insertion point provided to SCEV is now considered a lower bound. This is usually a block terminator or the use itself. Under no cirumstance may SCEVExpander insert below this point.
- LSR is reponsible for finding a "canonical" insertion point across expansion of different expressions.
- Robust logic to determine whether IV increments are in "expanded" form and/or can be safely hoisted above some insertion point.
Fixes PR11783: SCEVExpander assert.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148535
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Fri, 20 Jan 2012 05:53:00 +0000 (05:53 +0000)]
Add support for selecting 256-bit PALIGNR.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148532
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Fri, 20 Jan 2012 04:07:48 +0000 (04:07 +0000)]
cmake: pass -fvisibility-inlines-hidden if it is supported. In a
Release+Asserts build with -DBUILD_SHARED_LIBS=ON, the install
directory goes from 72MB to 70MB.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148530
91177308-0d34-0410-b5e6-
96231b3b80d8
Eli Friedman [Fri, 20 Jan 2012 02:06:40 +0000 (02:06 +0000)]
Remove a low-quality test which was failing on Windows; test/CodeGen/X86/sret.ll is a better test for the relevant behavior.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148526
91177308-0d34-0410-b5e6-
96231b3b80d8
Bill Wendling [Fri, 20 Jan 2012 00:53:28 +0000 (00:53 +0000)]
When lowering the 'resume' instruction, look to see if we can eliminate the
'insertvalue' instructions that recreate the structure returned by the
'landingpad' instruction. Because the 'insertvalue' instruction isn't supported
by FastISel, this can save a bit of time during -O0 compilation.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148520
91177308-0d34-0410-b5e6-
96231b3b80d8
Eli Friedman [Fri, 20 Jan 2012 00:05:46 +0000 (00:05 +0000)]
Support MSVC x86-32 sret convention. PR11688. Patch by Joe Groff.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148513
91177308-0d34-0410-b5e6-
96231b3b80d8
Chad Rosier [Thu, 19 Jan 2012 21:50:08 +0000 (21:50 +0000)]
Fix typo.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148497
91177308-0d34-0410-b5e6-
96231b3b80d8
Benjamin Kramer [Thu, 19 Jan 2012 21:11:13 +0000 (21:11 +0000)]
Silence warnings about mixing enums.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148495
91177308-0d34-0410-b5e6-
96231b3b80d8
Owen Anderson [Thu, 19 Jan 2012 19:32:20 +0000 (19:32 +0000)]
Add a dump() implementation for sub-instruction MCOperands.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148493
91177308-0d34-0410-b5e6-
96231b3b80d8
Owen Anderson [Thu, 19 Jan 2012 19:24:37 +0000 (19:24 +0000)]
Add a new form of MCOperand, for representing sub-instructions. This is intended for supporting bundles through the MC layer, rather than lowering them pre-MC as we currently do for Thumb2 IT blocks. Since these sub-instruction operands hold pointers to the sub-instructions, it is the responsibility of the target's AsmPrinter to provide storage for them for the duration of the EmitInstruction() call.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148492
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Thu, 19 Jan 2012 19:14:36 +0000 (19:14 +0000)]
Set the "tail" flag on pattern-matched objc_storeStrong calls.
rdar://
10531041.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148490
91177308-0d34-0410-b5e6-
96231b3b80d8
Devang Patel [Thu, 19 Jan 2012 18:40:55 +0000 (18:40 +0000)]
Post process 'and', 'sub' instructions and select better encoding, if available.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148489
91177308-0d34-0410-b5e6-
96231b3b80d8
Nick Lewycky [Thu, 19 Jan 2012 18:19:42 +0000 (18:19 +0000)]
Actually, this code handles wrapped sets just fine. Noticed by inspection.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148487
91177308-0d34-0410-b5e6-
96231b3b80d8
Devang Patel [Thu, 19 Jan 2012 18:15:51 +0000 (18:15 +0000)]
Intel syntax: There is no need to create unary expr for simple negative displacement.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148486
91177308-0d34-0410-b5e6-
96231b3b80d8
Devang Patel [Thu, 19 Jan 2012 17:53:25 +0000 (17:53 +0000)]
Post process 'xor', 'or' and 'cmp' instructions and select better encoding, if available.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148485
91177308-0d34-0410-b5e6-
96231b3b80d8
Evgeniy Stepanov [Thu, 19 Jan 2012 12:53:06 +0000 (12:53 +0000)]
Emit ARM EHABI unwinding instructions for 3 more Thumb instructions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148473
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Thu, 19 Jan 2012 08:50:38 +0000 (08:50 +0000)]
Folding table additions and fixes for AVX.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148467
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Thu, 19 Jan 2012 08:19:12 +0000 (08:19 +0000)]
Merge 128-bit and 256-bit SHUFPS/SHUFPD handling.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148466
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Thu, 19 Jan 2012 07:47:03 +0000 (07:47 +0000)]
More bundle related API additions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148465
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Thu, 19 Jan 2012 07:46:36 +0000 (07:46 +0000)]
Rewriter should definitly rewrite instructions inside bundles.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148464
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 19 Jan 2012 06:34:52 +0000 (06:34 +0000)]
Introduce a new MutableArrayRef class, which refers to a series of mutable
T's that are consequtively in memory.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148463
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Thu, 19 Jan 2012 06:13:10 +0000 (06:13 +0000)]
Enhance finalizeBundle to return end of bundle iterator because it makes sense.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148462
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Grosbach [Thu, 19 Jan 2012 02:47:30 +0000 (02:47 +0000)]
ARM assembly diagnostic caret in better position for FPImm.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148459
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Grosbach [Thu, 19 Jan 2012 02:09:38 +0000 (02:09 +0000)]
Thumb2 relaxation for tADR to t2ADR.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148456
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Grosbach [Thu, 19 Jan 2012 01:50:30 +0000 (01:50 +0000)]
Add comment and fix range check in condition.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148455
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Grosbach [Thu, 19 Jan 2012 01:36:59 +0000 (01:36 +0000)]
Add testcase.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148454
91177308-0d34-0410-b5e6-
96231b3b80d8