- Oct 21, 2013
-
-
Rafael Espindola authored
When a linkonce_odr value that is on the dso list is not unnamed_addr we can still look to see if anything is actually using its address. If not, it is safe to hide it. This patch implements that by moving GlobalStatus to Transforms/Utils and using it in Internalize. llvm-svn: 193090
-
David Blaikie authored
Found while adding type safety to the various DWARF enumerations (form, attribute, tag, etc) that caused Clang to warn on an incompletely covered switch. Converting the comment to a default/unreachable uncovered this case of an unsupported form encoding. Seems we were skipping fission strings entirely. llvm-svn: 193089
-
Elena Demikhovsky authored
llvm-svn: 193083
-
Matheus Almeida authored
llvm-svn: 193082
-
Matheus Almeida authored
llvm-svn: 193081
-
Matheus Almeida authored
llvm-svn: 193080
-
Matheus Almeida authored
These instructions are logically related as they allow read/write of MSA control registers. Currently MSA control registers are emitted by number but hopefully that will change as soon as GAS starts accepting them by name as that would make the assembly easier to read. llvm-svn: 193078
-
Matheus Almeida authored
llvm-svn: 193077
-
Matheus Almeida authored
The second parameter of the SLD intrinsic is the number of columns (GPR) to slide left the source array. llvm-svn: 193076
-
Michael Gottesman authored
Additionally some small comment/stylistic fixes are included as well. llvm-svn: 193068
-
Bill Wendling authored
A landing pad can be jumped to only by the unwind edge of an invoke instruction. If we eliminate a partially redundant load in a landing pad, it will create a basic block that violates this constraint. It then leads to other problems down the line if it tries to merge that basic block with the landing pad. Avoid this by not eliminating the load in a landing pad. PR17621 llvm-svn: 193064
-
Nick Lewycky authored
llvm-svn: 193063
-
- Oct 20, 2013
-
-
Michael Gottesman authored
One optimization simplify-cfg performs is the converting of switches to lookup tables if the switch has > 4 cases. This is done by: 1. Finding the max/min case value and calculating the switch case range. 2. Create a lookup table basic block. 3. Perform a check in the switch's BB to see if the input value is in the switch's case range. If the input value satisfies said predicate branch to the lookup table BB, otherwise branch to the switch's default destination BB using the default value as the result. The conditional check consists of subtracting the min case value of the table from any input iN value and then ensuring that said value is unsigned less than the size of the lookup table represented as an iN value. If the lookup table is a covered lookup table, the size of the table will be N which is 0 as an iN value. Thus the comparison will be an `icmp ult` of an iN value against 0 which is always false yielding the incorrect result. This patch fixes this problem by recognizing if we have a covered lookup table and if we do, unconditionally jumps to the lookup table BB since the covering property of the lookup table implies no input values could not be handled by said BB. rdar://15268442 llvm-svn: 193045
-
Peter Collingbourne authored
llvm-svn: 193043
-
Peter Collingbourne authored
This ensures that the prefix data is treated as part of the function for the purpose of debug info. This provides a better debugging experience, among other things by allowing a debug info client to correctly look up a function in debug info given a function pointer. llvm-svn: 193042
-
Peter Collingbourne authored
r182712 attempted to do this, but it failed to handle data emitted via EmitBytes. llvm-svn: 193041
-
- Oct 19, 2013
-
-
Benjamin Kramer authored
llvm-svn: 193038
-
Bill Wendling authored
If the predecessor's being spliced into a landing pad, then we need the PHIs to come first and the rest of the predecessor's code to come *after* the landing pad instruction. llvm-svn: 193035
-
Yaron Keren authored
llvm-svn: 193034
-
Yaron Keren authored
llvm-svn: 193033
-
Yaron Keren authored
llvm-svn: 193031
-
Eric Christopher authored
llvm-svn: 193024
-
Eric Christopher authored
llvm-svn: 193023
-
Andrew Trick authored
llvm-svn: 193021
-
Andrew Trick authored
SCEV currently fails to compute loop counts for nonunit stride loops. This comes up frequently. It prevents loop optimization and forces vectorization to insert extra loop checks. For example: void foo(int n, int *x) { for (int i = 0; i < n; i += 3) { x[i] = i; x[i+1] = i+1; x[i+2] = i+2; } } We need to properly handle the case in which limit > INT_MAX-stride. In the above case: n > INT_MAX-3. In this case the loop counter will step beyond the limit and overflow at the same time. However, knowing that signed integer overlow in undefined, we can assume the loop test behavior is arbitrary after overflow. This obeys both C undefined behavior rules, and the more strict LLVM poison value rules. I'm finally fixing this in response to Hal Finkel's persistence. The most probable reason that we never optimized this before is that we were being careful to handle case where the developer expected a side-effect free infinite loop relying on overflow: for (int i = 0; i < n; i += s) { ++j; } return j; If INT_MAX+1 is a multiple of s and n > INT_MAX-s, then we might expect an infinite loop. However there are plenty of ways to achieve this effect without relying on undefined behavior of signed overflow. llvm-svn: 193015
-
Bill Wendling authored
llvm-svn: 193014
-
Nadav Rotem authored
llvm-svn: 193013
-
Bill Wendling authored
llvm-svn: 193012
-
NAKAMURA Takumi authored
llvm-svn: 193011
-
Bill Wendling authored
llvm-svn: 193009
-
Bill Wendling authored
Update to reflect current GC APIs and usage. The example code is taken from the Erlang GC implementation. llvm-svn: 193008
-
Michael J. Spencer authored
llvm-svn: 193007
-
Michael J. Spencer authored
llvm-svn: 193004
-
- Oct 18, 2013
-
-
Manman Ren authored
With this commit, all DIEs created in CompileUnit will be added to parents inside the same function. Also make getOrCreateTemplateType|Value functions private. No functionality change. llvm-svn: 193002
-
Manman Ren authored
llvm-svn: 193001
-
Hans Wennborg authored
This is another (final?) stab at making us able to parse our own asm output on Windows. Symbols on Windows often contain @'s and ?'s in their names. Our asm parser didn't like this. ?'s were not allowed, and @'s were intepreted as trying to reference PLT/GOT/etc. We can't just add quotes around the bad names, since e.g. for MinGW, we use gas to assemble, and it doesn't like quotes in some places (notably in .def directives). This commit makes us allow ?'s in symbol names, and @'s in symbol names for MS assembly. Differential Revision: http://llvm-reviews.chandlerc.com/D1978 llvm-svn: 193000
-
Rafael Espindola authored
Thanks to Milan Lenčo for noticing it. llvm-svn: 192996
-
Eric Christopher authored
error messages should not be able to occur at the same time. llvm-svn: 192985
-
David Majnemer authored
Forgot to 'svn add' llvm-svn: 192978
-
Richard Barton authored
Patch by Artyom Skrobov. llvm-svn: 192977
-