summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
...
* [x86] Prevent llvm.x86.cmp.ps/pd/ss/sd from being selected with bad ↵Craig Topper2014-12-272-26/+33
| | | | | | immediates. The frontend now checks this when the builtin is used. This will allow the instruction printer to not have to deal with invalid immediates on these instructions. llvm-svn: 224885
* [FastIsel][X86] Fix invalid register replacement for bool argsKeno Fischer2014-12-272-28/+47
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: Consider the following IR: %3 = load i8* undef %4 = trunc i8 %3 to i1 %5 = call %jl_value_t.0* @foo(..., i1 %4, ...) ret %jl_value_t.0* %5 Bools (that are the result of direct truncs) are lowered as whatever the argument to the trunc was and a "and 1", causing the part of the MBB responsible for this argument to look something like this: %vreg8<def,tied1> = AND8ri %vreg7<kill,tied0>, 1, %EFLAGS<imp-def>; GR8:%vreg8,%vreg7 Later, when the load is lowered, it will insert %vreg15<def> = MOV8rm %vreg14, 1, %noreg, 0, %noreg; mem:LD1[undef] GR8:%vreg15 GR64:%vreg14 but remember to (at the end of isel) replace vreg7 by vreg15. Now for the bug. In fast isel lowering, we mistakenly mark vreg8 as the result of the load instead of the trunc. This adds a fixup to have vreg8 replaced by whatever the result of the load is as well, so we end up with %vreg15<def,tied1> = AND8ri %vreg15<kill,tied0>, 1, %EFLAGS<imp-def>; GR8:%vreg15 which is an SSA violation and causes problems later down the road. This fixes PR21557. Test Plan: Test test case from PR21557 is added to the test suite. Reviewers: ributzka Reviewed By: ributzka Subscribers: llvm-commits Differential Revision: http://reviews.llvm.org/D6245 llvm-svn: 224884
* [x86] Also add the missing type casts on the returns in the shaChandler Carruth2014-12-271-6/+6
| | | | | | | intrinsic header file. Along with r224822, this should restore the build bots to passing. llvm-svn: 224883
* [x86] Add missing typecast to __v4si to sha intrinsic header file.Craig Topper2014-12-271-6/+6
| | | | llvm-svn: 224882
* Objective-C: Tweak unavailability warning.Nico Weber2014-12-272-5/+18
| | | | | | | Don't warn when a selector has an unavailable and an available variant, and the first also has an implementation. llvm-svn: 224881
* [x86] Add range checking to the constant argument of cmpps/pd/ss/sd builtinas.Craig Topper2014-12-272-4/+28
| | | | llvm-svn: 224880
* [x86] Add the (v)cmpps/pd/ss/sd builtins to match gcc. Use them in the sse ↵Craig Topper2014-12-275-50/+518
| | | | | | | | | | intrinsic files. This still lower to the same intrinsics as before. This is preparation for bounds checking the immediate on the avx version of the builtin so we don't pass illegal immediates into the backend. Since SSE uses a smaller size immediate its not possible to bounds check when using a shared builtin. Rather than creating a clang specific builtin for the different immediate, I decided (after consulting with Chandler) that it was better to match gcc. llvm-svn: 224879
* Add more feature flags to the x86 instrinsic test.Craig Topper2014-12-271-0/+27
| | | | llvm-svn: 224878
* Fix formatting. NFC.Craig Topper2014-12-271-2/+2
| | | | llvm-svn: 224877
* Address review feedback on r221933.Nico Weber2014-12-276-102/+125
| | | | | | | | | | | Remove ObjCMethodList::Count, instead store a "has more than one decl" bit in the low bit of the ObjCMethodDecl pointer, using a PointerIntPair. Most of this patch is replacing ".Method" with ".getMethod()". No intended behavior change. llvm-svn: 224876
* Make the test from r224873 actually pass.Nico Weber2014-12-271-2/+4
| | | | | | | The behavior looks incorrect to me, but the test is supposed to document current behavior for now. llvm-svn: 224875
* Mark __builtin_ia32_cmppd256 and __builtin_ia32_cmpps256 as taking an ICE ↵Craig Topper2014-12-271-2/+2
| | | | | | for the constant parameter. llvm-svn: 224874
* Add more test coverage for the Objective-C deprected selector warning.Nico Weber2014-12-271-0/+11
| | | | | | | I broke this case in a local patch I'm writing, and there was no test to stop me. Now there is. llvm-svn: 224873
* Convert test to llvm-readobj. NFC.Rafael Espindola2014-12-261-318/+361
| | | | llvm-svn: 224872
* [Hexagon] Adding auto-incrementing loads with and without byte reversal.Colin LeMahieu2014-12-262-0/+100
| | | | llvm-svn: 224871
* [Hexagon] Adding locked loads.Colin LeMahieu2014-12-262-0/+23
| | | | llvm-svn: 224870
* [Hexagon] Adding deallocframe and circular addressing loads.Colin LeMahieu2014-12-266-8/+163
| | | | llvm-svn: 224869
* [Hexagon] Adding remaining post-increment instruction variants. Removing ↵Colin LeMahieu2014-12-264-61/+61
| | | | | | unused classes. llvm-svn: 224868
* [Hexagon] Adding post-increment unsigned byte loads.Colin LeMahieu2014-12-264-16/+27
| | | | llvm-svn: 224867
* [Hexagon] Adding post-increment signed byte loads with tests.Colin LeMahieu2014-12-264-12/+127
| | | | llvm-svn: 224866
* Adjust the rest of the tests due to r224849.David Majnemer2014-12-261-2/+2
| | | | llvm-svn: 224865
* Use llvm-readobj. NFC.Rafael Espindola2014-12-261-238/+162
| | | | llvm-svn: 224864
* Escape ? to silence GCC warning about trigraphs.Daniel Jasper2014-12-261-1/+1
| | | | llvm-svn: 224863
* [X86] Add the debug registers DR8-DR15 so we can assemble and disassemble ↵Craig Topper2014-12-264-11/+27
| | | | | | references to them. llvm-svn: 224862
* [X86] Don't fail disassembly if REX.R/REX.B is used on an MMX register. ↵Craig Topper2014-12-263-6/+18
| | | | | | Similar fix to not fail to disassembler CR9-CR15 references. llvm-svn: 224861
* Band-aid fix for PR22032: don't emit DWARF debug info if AddressSanitizer is ↵Timur Iskhodzhanov2014-12-262-3/+19
| | | | | | enabled on Windows llvm-svn: 224860
* No need to run llvm-as. NFC.Rafael Espindola2014-12-261-5/+4
| | | | llvm-svn: 224859
* [sanitizer] Treat \r, \n, \t as flag separators.Evgeniy Stepanov2014-12-262-1/+4
| | | | llvm-svn: 224858
* [asan] Fix possibly uninitialized coverage flag.Evgeniy Stepanov2014-12-261-0/+2
| | | | llvm-svn: 224857
* [ASan/Win] Add basic support for MemoryRangeIsAvailable and DumpProcessMap ↵Timur Iskhodzhanov2014-12-262-5/+47
| | | | | | to make it easier to debug startup shadow mapping failures llvm-svn: 224856
* [asan] Bump coverage size limit on 32-bit platforms.Evgeniy Stepanov2014-12-261-1/+1
| | | | | | | This increases the limit from 4M locations to 16M, reserving 64Mb virtual memory. Chrome has >5M unique coverage locations with coverage=3. llvm-svn: 224855
* [asan] Extend coverage test.Evgeniy Stepanov2014-12-261-1/+13
| | | | llvm-svn: 224854
* [asan] Allow enabling coverage at activation.Evgeniy Stepanov2014-12-269-68/+149
| | | | | | | | This is a re-commit of r224838 + r224839, previously reverted in r224850. Test failures were likely (still can not reproduce) caused by two lit tests using the same name for an intermediate build target. llvm-svn: 224853
* [ASan/Win] Suppress error messaging when Abort() is calledTimur Iskhodzhanov2014-12-262-2/+17
| | | | | | This will prevent ASan bots from hanging / timing out llvm-svn: 224852
* Update tests due to r224849David Majnemer2014-12-262-2/+2
| | | | | | Inferring nuw caused some clang tests to change their output. llvm-svn: 224851
* Revert r224838, r224839.Evgeniy Stepanov2014-12-269-149/+68
| | | | | | Flaky failures on the build bots. llvm-svn: 224850
* InstCombine: Infer nuw for multipliesDavid Majnemer2014-12-264-6/+57
| | | | | | | A multiply cannot unsigned wrap if there are bitwidth, or more, leading zero bits between the two operands. llvm-svn: 224849
* ValueTracking: Small cleanup in ComputeNumSignBitsDavid Majnemer2014-12-261-2/+2
| | | | | | | Constant contains the isAllOnesValue and isNullValue predicates, not ConstantInt. llvm-svn: 224848
* InstCombe: Infer nsw for multipliesDavid Majnemer2014-12-265-89/+103
| | | | | | | We already utilize this logic for reducing overflow intrinsics, it makes sense to reuse it for normal multiplies as well. llvm-svn: 224847
* Teach disassembler to handle illegal immediates on (v)cmpps/pd/ss/sd ↵Craig Topper2014-12-266-71/+84
| | | | | | instructions. Instead of rejecting we'll just generate the _alt forms that don't try to alter the mnemonic. While I'm here, merge some common code in the Instruction printers for the condition code replacement and fix the mask on SSE to be 3-bits instead of 4. llvm-svn: 224846
* Use MCPhysReg for table of register encodings.Craig Topper2014-12-261-3/+3
| | | | llvm-svn: 224845
* Sema: Qualify getPrintable's Expr argumentDavid Majnemer2014-12-261-1/+1
| | | | | | | | getPrintable has an overload which takes a bool. This means that const qualified Exprs would get forwarded to the bool overload instead of the Expr overload. llvm-svn: 224844
* WIPDavid Majnemer2014-12-261-16/+16
| | | | llvm-svn: 224843
* [PowerPC] [FastISel] i1 constants must be zero extendedHal Finkel2014-12-252-1/+28
| | | | | | | | | | | When materializing constant i1 values, they must be zero extended. We represent i1 values as [0, 1], not [0, -1], in i32 registers. As it turns out, this code path was dead for i1 values prior to r216006 (which is why this did not manifest in miscompiles until recently). Fixes -O0 self-hosting on PPC64/Linux. llvm-svn: 224842
* [sanitizer] Tweak sancov.py output.Evgeniy Stepanov2014-12-251-1/+1
| | | | llvm-svn: 224841
* [sanitizer] sancov.py: print status to stderrEvgeniy Stepanov2014-12-251-1/+1
| | | | llvm-svn: 224840
* [asan] Disable __sanitizer_cov_dump registration on Windows.Evgeniy Stepanov2014-12-251-0/+2
| | | | | | Looks like we can't use atexit() during ASan initialization on Windows. llvm-svn: 224839
* [asan] Allow enabling coverage at activation.Evgeniy Stepanov2014-12-259-68/+147
| | | | llvm-svn: 224838
* Simplify allocator_returns_null.cc testTimur Iskhodzhanov2014-12-251-6/+6
| | | | llvm-svn: 224837
* Initialize BackendConsumer::Context in constructor.Yaron Keren2014-12-251-1/+1
| | | | llvm-svn: 224836
OpenPOWER on IntegriCloud