| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
|
|
|
|
|
| |
ObjCProtocolDecl directly.
Implement CodeGen support for forward protocol decls (no-ops are so
nice to implement).
Also moved CGObjCRuntime.h out of CodeGenModule.h
llvm-svn: 54709
|
|
|
|
|
|
|
| |
- Was unused and generated a unnecessary load of self
(missed file)
llvm-svn: 54668
|
|
|
|
|
|
|
| |
- Implement type conversion of ObjCQualifiedIdType
- Wire @protocol(...) to GenerateProtocolRef in ScalarExprEmitter
llvm-svn: 54666
|
|
|
|
| |
llvm-svn: 54665
|
|
|
|
|
|
|
| |
- Changed CodeGenModule::getObjCRuntime to return reference.
- Added CodeGenModule::hasObjCRuntime predicate.
llvm-svn: 54645
|
|
|
|
|
|
| |
- Remove internal uses of AST.h
llvm-svn: 54628
|
|
|
|
| |
llvm-svn: 54605
|
|
|
|
| |
llvm-svn: 54548
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Changed EmitSub to work on all cases (arithmetic, ptr - int, ptr -
ptr) so that implementation matches that of other operators.
- Modify EmitCompoundAssign to compute and perform the appropriate
casts of left, right, and result types for the assorted pointer
arithmetic cases.
- Fix EmitSub (ptr - int) case to negate the rhs *after*
extension. This is critical when the rhs is unsigned (and needs
extension).
- This fixes cfrac.
- <rdr://6115726>
llvm-svn: 54392
|
|
|
|
|
|
| |
- <rdar://problem/6122967>
llvm-svn: 54338
|
|
|
|
|
|
|
|
|
|
| |
- Follows emission scheme used by llvm-gcc, i.e. invent an id for
each label whose address is taken and replace each indirect goto by
a switch to each possible target.
- Currently we emit a switch for each indirect goto instead of
merging them as llvm-gcc does.
llvm-svn: 54318
|
|
|
|
| |
llvm-svn: 54107
|
|
|
|
| |
llvm-svn: 54100
|
|
|
|
| |
llvm-svn: 54099
|
|
|
|
| |
llvm-svn: 54048
|
|
|
|
|
|
|
|
|
|
|
| |
int foo(void) {
float x[2];
return x;
}
rdar://6093986
llvm-svn: 53946
|
|
|
|
| |
llvm-svn: 53928
|
|
|
|
| |
llvm-svn: 53899
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
1) add a new ASTContext::getFloatTypeSemantics method.
2) Use it from SemaExpr.cpp, CodeGenTypes.cpp and other places.
3) Change the TargetInfo.h get*Format methods to return their
fltSemantics byref instead of by pointer.
4) Change CodeGenFunction::EmitBuiltinExpr to allow builtins which
sometimes expand specially and othertimes fall back to libm.
5) Add support for __builtin_nan("") to codegen, cases that don't pass
in an empty string are currently lowered to libm calls.
6) Fix codegen of __builtin_infl.
llvm-svn: 52914
|
|
|
|
|
|
| |
selectors instead of Value*'s.
llvm-svn: 52760
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
clang as a Release build.
The big change is that all AST nodes (subclasses of Stmt) whose children are
Expr* store their children as Stmt* or arrays of Stmt*. This is to remove
strict-aliasing warnings when using StmtIterator. None of the interfaces of any
of the classes have changed (except those with arg_iterators, see below), as the
accessor methods introduce the needed casts (via cast<>). While this extra
casting may seem cumbersome, it actually adds some important sanity checks
throughout the codebase, as clients using StmtIterator can potentially overwrite
children that are expected to be Expr* with Stmt* (that aren't Expr*). The casts
provide extra sanity checks that are operational in debug builds to catch
invariant violations such as these.
For classes that have arg_iterators (e.g., CallExpr), the definition of
arg_iterator has been replaced. Instead of it being Expr**, it is an actual
class (called ExprIterator) that wraps a Stmt**, and provides the necessary
operators for iteration. The nice thing about this class is that it also uses
cast<> to type-checking, which introduces extra sanity checks throughout the
codebase that are useful for debugging.
A few of the CodeGen functions that use arg_iterator (especially from
OverloadExpr) have been modified to take begin and end iterators instead of a
base Expr** and the number of arguments. This matches more with the abstraction
of iteration. This still needs to be cleaned up a little bit, as clients expect
that ExprIterator is a RandomAccessIterator (which we may or may not wish to
allow for efficiency of representation).
This is a fairly large patch. It passes the tests (except CodeGen/bitfield.c,
which was already broken) on both a Debug and Release build, but it should
obviously be reviewed.
llvm-svn: 52378
|
|
|
|
| |
llvm-svn: 51958
|
|
|
|
|
|
| |
Implemented by David Chisnall!
llvm-svn: 51835
|
|
|
|
|
|
|
| |
unsigned because it's possible (at least in theory) to have
have both positive and negative pointers pointing to the same object.
llvm-svn: 51681
|
|
|
|
|
|
|
|
| |
someone tries to make a bitfield volatile?).
Not sure how to write a test; any suggestions?
llvm-svn: 51558
|
|
|
|
|
|
| |
at the Sema layer.
llvm-svn: 51203
|
|
|
|
| |
llvm-svn: 51193
|
|
|
|
|
|
|
|
|
| |
expressing the full flexibility of the LLVM shufflevector instruction.
The expected immediate usage is in *mmintrin.h, so that they don't
depend on the mess of gcc-inherited (and not completely implemented)
shuffle builtins.
llvm-svn: 51113
|
|
|
|
| |
llvm-svn: 51081
|
|
|
|
| |
llvm-svn: 49980
|
|
|
|
| |
llvm-svn: 49979
|
|
|
|
| |
llvm-svn: 49942
|
|
|
|
| |
llvm-svn: 49607
|
|
|
|
|
|
|
|
| |
interaction for function parameters, fixing PR2046.
Patch by Doug Gregor!
llvm-svn: 49369
|
|
|
|
| |
llvm-svn: 49279
|
|
|
|
|
|
| |
generator needs to call isAnyComplexType(). This fixes PR1960.
llvm-svn: 49220
|
|
|
|
| |
llvm-svn: 49201
|
|
|
|
|
|
|
| |
allowing them to be treated the same in some contexts. A suggestion for a
better name is welcome :)
llvm-svn: 49100
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
remaining open issues I've communicated to him:
1) self can be assigned to, and his patch didn't handle it correctly.
2) CollectObjCIvarTypes is N^2 (because each subclass reprocesses
all parent class ivars) and flattens classes. If A derives from B,
and both have an int, I'd expect to get { {i32}, i32}, not { i32, i32}.
David, please review.
llvm-svn: 48970
|
|
|
|
|
|
| |
etoile runtime, patch by David Chisnall!
llvm-svn: 48969
|
|
|
|
| |
llvm-svn: 48534
|
|
lib dir and move all the libraries into it. This follows the main
llvm tree, and allows the libraries to be built in parallel. The
top level now enforces that all the libs are built before Driver,
but we don't care what order the libs are built in. This speeds
up parallel builds, particularly incremental ones.
llvm-svn: 48402
|