- May 06, 2013
-
-
Eric Christopher authored
llvm-svn: 181248
-
Eric Christopher authored
llvm-svn: 181247
-
Reid Kleckner authored
Summary: No functionality change. The existing tests for this pragma only verify that we can preprocess it. Reviewers: rsmith CC: cfe-commits Differential Revision: http://llvm-reviews.chandlerc.com/D751 llvm-svn: 181246
-
Bill Wendling authored
llvm-svn: 181245
-
Shankar Easwaran authored
llvm-svn: 181244
-
Rafael Espindola authored
The alignment is just a byte in the middle of Characteristics, not an independent flag. Making it an independent field in the yaml representation makes it more yamlio friendly. llvm-svn: 181243
-
Edwin Vane authored
If the LoopConvert Transform detects an alias for the loop variable, it attempts to use that name in the resulting range-based for loop while removing the original DeclStmt for the variable. That removal produced bad code when the declaration was in the condition of an if, switch, while, or for stmt. This revision fixes the problem by simply replacing the declaration with a use of the alias variable. llvm-svn: 181242
-
Daniel Malea authored
llvm-svn: 181239
-
Argyrios Kyrtzidis authored
We can pass such an input-file-visiting ASTReaderListener to ASTReader::readASTFileControlBlock. llvm-svn: 181238
-
Argyrios Kyrtzidis authored
llvm-svn: 181237
-
rdar://problem/11669154Enrico Granata authored
Make a summary format for libc++ STL containers that shows the number of items as before, but also shows the pointer value for pointer-to-container llvm-svn: 181236
-
Jyotsna Verma authored
llvm-svn: 181235
-
Jean-Luc Duprat authored
llvm-svn: 181234
-
Krzysztof Parzyszek authored
llvm-svn: 181233
-
Rafael Espindola authored
Patch by Jun Koi! llvm-svn: 181231
-
Andrew Trick authored
Test case by Michele Scandale! Fixes PR10293: Load not hoisted out of loop with multiple exits. There are few regressions with this patch, now tracked by rdar:13817079, and a roughly equal number of improvements. The regressions are almost certainly back luck because LoopRotate has very little idea of whether rotation is profitable. Doing better requires a more comprehensive solution. This checkin is a quick fix that lacks generality (PR10293 has a counter-example). But it trivially fixes the case in PR10293 without interfering with other cases, and it does satify the criteria that LoopRotate is a loop canonicalization pass that should avoid heuristics and special cases. I can think of two approaches that would probably be better in the long run. Ultimately they may both make sense. (1) LoopRotate should check that the current header would make a good loop guard, and that the loop does not already has a sufficient guard. The artifical SimplifiedLoopLatch check would be unnecessary, and the design would be more general and canonical. Two difficulties: - We need a strong guarantee that we won't endlessly rotate, so the analysis would need to be precise in order to avoid the SimplifiedLoopLatch precondition. - Analysis like this are usually based on SCEV, which we don't want to rely on. (2) Rotate on-demand in late loop passes. This could even be done by shoving the loop back on the queue after the optimization that needs it. This could work well when we find LICM opportunities in multi-branch loops. This requires some work, and it doesn't really solve the problem of SCEV wanting a loop guard before the analysis. llvm-svn: 181230
-
Tom Stellard authored
v2: - Replace switch statement with TSFlags query Reviewed-by:
Vincent Lejeune <vljn@ovi.com> Tested-By:
Aaron Watry <awatry@gmail.com> llvm-svn: 181229
-
Tom Stellard authored
Reviewed-by:
Vincent Lejeune <vljn@ovi.com> Tested-By:
Aaron Watry <awatry@gmail.com> llvm-svn: 181228
-
Eric Christopher authored
llvm-svn: 181227
-
Eric Christopher authored
llvm-svn: 181226
-
Tom Stellard authored
Reviewed-by:
Vincent Lejeune <vljn@ovi.com> Tested-By:
Aaron Watry <awatry@gmail.com> llvm-svn: 181225
-
Eric Christopher authored
llvm-svn: 181224
-
Tom Stellard authored
Reviewed-by:
Vincent Lejeune <vljn@ovi.com> Tested-By:
Aaron Watry <awatry@gmail.com> llvm-svn: 181223
-
Ulrich Weigand authored
[SystemZ] Update non-pic DWARF encodings As pointed out by Rafael Espindola, we should match the DWARF encodings produced by GCC in both pic and non-pic modes. This was not the case for the non-pic case. This patch changes all DWARF encodings to DW_EH_PE_absptr for the non-pic case, just like GCC does. The test case is updated to check for both variants. llvm-svn: 181222
-
Edwin Vane authored
If a NullTo(Member)Pointer cast results from a macro arg expansion, all uses of the arg must result in such casts or else the macro arg cannot be replaced with 'nullptr' safely. This revision adds logic and tests to ensure the safety of replacing macro args in the Use-Nullptr Transform. Fixes: PR15816 llvm-svn: 181221
-
Adhemerval Zanella authored
This patch handles the R_PPC64_REL64 relocation type for powerpc64 for mcjit. llvm-svn: 181220
-
Jean-Luc Duprat authored
llvm-svn: 181219
-
Enrico Granata authored
llvm-svn: 181218
-
Howard Hinnant authored
Expose accidentally removed __compressed_pair constructor taking piecewise_construct_t. This fixes http://llvm.org/bugs/show_bug.cgi?id=15918 . llvm-svn: 181217
-
Jean-Luc Duprat authored
A * (1 - (uitofp i1 C)) -> select C, 0, A B * (uitofp i1 C) -> select C, B, 0 select C, 0, A + select C, B, 0 -> select C, B, A These come up in code that has been hand-optimized from a select to a linear blend, on platforms where that may have mattered. We want to undo such changes with the following transform: A*(1 - uitofp i1 C) + B*(uitofp i1 C) -> select C, A, B llvm-svn: 181216
-
Tim Northover authored
This just enables some testing I'd missed after implementing MCJIT support. llvm-svn: 181215
-
Jordan Rose authored
The one user has been changed to use getLValue on the compound literal expression and then use the normal bindLoc to assign a value. No need to special case this in the StoreManager. llvm-svn: 181214
-
Jordan Rose authored
This occurs because in C++11 the compound literal syntax can trigger a constructor call via list-initialization. That is, "Point{x, y}" and "(Point){x, y}" end up being equivalent. If this occurs, the inner CXXConstructExpr will have already handled the object construction; the CompoundLiteralExpr just needs to propagate that value forwards. <rdar://problem/13804098> llvm-svn: 181213
-
Jordan Rose authored
Previously, this compound literal expression (a GNU extension in C++): (AggregateWithDtor){1, 2} resulted in this AST: `-CXXBindTemporaryExpr [...] 'struct Point' (CXXTemporary [...]) `-CompoundLiteralExpr [...] 'struct AggregateWithDtor' `-CXXBindTemporaryExpr [...] 'struct AggregateWithDtor' (CXXTemporary [...]) `-InitListExpr [...] 'struct AggregateWithDtor' |-IntegerLiteral [...] 'int' 1 `-IntegerLiteral [...] 'int' 2 Note the two CXXBindTemporaryExprs. The InitListExpr is really part of the CompoundLiteralExpr, not an object in its own right. By introducing a new entity initialization kind in Sema specifically for compound literals, we avoid the treatment of the inner InitListExpr as a temporary. `-CXXBindTemporaryExpr [...] 'struct Point' (CXXTemporary [...]) `-CompoundLiteralExpr [...] 'struct AggregateWithDtor' `-InitListExpr [...] 'struct AggregateWithDtor' |-IntegerLiteral [...] 'int' 1 `-IntegerLiteral [...] 'int' 2 llvm-svn: 181212
-
Ulrich Weigand authored
Add SystemZ support This patch then adds all the usual platform-specific pieces for SystemZ: driver support, basic target info, register names and constraints, ABI info and vararg support. It also adds new tests to verify pre-defined macros and inline asm, and updates a test for the minimum alignment change. This version of the patch incorporates feedback from reviews by Eric Christopher and John McCall. Thanks to all reviewers! Patch by Richard Sandiford. llvm-svn: 181211
-
Ulrich Weigand authored
Allow targets to define minimum alignment for global variables This patch adds a new common code feature that allows platform code to request minimum alignment of global symbols. The background for this is that on SystemZ, the most efficient way to load addresses of global symbol is the LOAD ADDRESS RELATIVE LONG (LARL) instruction. This instruction provides PC-relative addressing, but only to *even* addresses. For this reason, existing compilers will guarantee that global symbols are always aligned to at least 2. [ Since symbols would otherwise already use a default alignment based on their type, this will usually only affect global objects of character type or character arrays. ] GCC also allows creating symbols without that extra alignment by using explicit "aligned" attributes (which then need to be used on both definition and each use of the symbol). To enable support for this with Clang, this patch adds a TargetInfo::MinGlobalAlign variable that provides a global minimum for the alignment of every global object (unless overridden via explicit alignment attribute), and adds code to respect this setting. Within this patch, no platform actually sets the value to anything but the default 1, resulting in no change in behaviour on any existing target. This version of the patch incorporates feedback from reviews by Eric Christopher and John McCall. Thanks to all reviewers! Patch by Richard Sandiford. llvm-svn: 181210
-
Ulrich Weigand authored
[SystemZ] Add to --enable-targets=all This patch finally enables the SystemZ target in the default build (with --enable-targets=all). Patch by Richard Sandiford. llvm-svn: 181209
-
Ulrich Weigand authored
[SystemZ] Add configure bits This patch wires up the SystemZ target in configure, so that it can now be built using --enable-targets=systemz. It is not yet included in the default build (--enable-targets=all); this will be done by a follow-up patch. Patch by Richard Sandiford. llvm-svn: 181208
-
Ulrich Weigand authored
[SystemZ] Set up JIT/MCJIT test cases This patch adds the necessary configuration bits and #ifdef's to set up the JIT/MCJIT test cases for SystemZ. Like other recent targets, we do fully support MCJIT, but do not support the old JIT at all. Set up the lit config files accordingly, and disable old-JIT unit tests. Patch by Richard Sandiford. llvm-svn: 181207
-
Ulrich Weigand authored
[SystemZ] Add MC test cases This adds all MC tests for the SystemZ target. Patch by Richard Sandiford. llvm-svn: 181206
-