| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
| |
llvm-svn: 57335
|
|
|
|
| |
llvm-svn: 57332
|
|
|
|
|
|
| |
processing the Decl of an Objective-C foreach statement.
llvm-svn: 57209
|
|
|
|
|
|
| |
processing the Decl of a @catch statement.
llvm-svn: 57208
|
|
|
|
|
|
| |
scoped decl chain.
llvm-svn: 57192
|
|
|
|
|
|
|
| |
constant lvalue. Implement this in codegen by moving the code out of CGBuiltin
into EmitConstantExpr.
llvm-svn: 57163
|
|
|
|
|
|
|
| |
it is possible that a builtin could sometimes be folded (e.g. __builtin_clz)
if it's operand is a constant.
llvm-svn: 57161
|
|
|
|
| |
llvm-svn: 57157
|
|
|
|
|
|
|
| |
do it instead. We should still handle __builtin_nan etc, but don't yet.
This fixes incorrect evaluation of __builtin_constant_p, a FIXME.
llvm-svn: 57156
|
|
|
|
|
|
|
| |
constants for them, just use the constant evaluator to do the job. This
also fixes crashes on 'unknown constant builtins'.
llvm-svn: 57155
|
|
|
|
| |
llvm-svn: 57142
|
|
|
|
|
|
|
| |
handling blocks.
- This has false positives, but at least prevents miscompiles.
llvm-svn: 56958
|
|
|
|
| |
llvm-svn: 56954
|
|
|
|
| |
llvm-svn: 56902
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
collisions.
- Provide CodeGenModule::CreateRuntimeFunction which guarantees that
the function it creates will have the provided name in the final
module. This allows the runtime to have its functions protected
from declarations of the same name in the source code.
- One could argue that this is a reason to abuse the llvm::Module
namespace for dealing with function redeclarations. However, that
approach seems conceptually flawed to me. This one also happens to
be somewhat more efficient.
No functionality change.
llvm-svn: 56899
|
|
|
|
| |
llvm-svn: 56830
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Provides a basic primitive to jump to an arbitrary basic block,
through the finally code.
- Only used for return statements and rethrow currently. Still need
to handle break, continue and goto.
- Code still needs to be shuffled around to live elsewhere.
llvm-svn: 56827
|
|
|
|
|
|
| |
Comment exception-handling code generation strategy.
llvm-svn: 56763
|
|
|
|
| |
llvm-svn: 56762
|
|
|
|
|
|
| |
readable and to generate more readable IR.
llvm-svn: 56758
|
|
|
|
|
|
|
| |
- This should be rejected by sema (IMHO) but that needs some
investigation.
llvm-svn: 56756
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- There is no need to branch on the rethrow variable to determine if
we need to call objc_exception_try_exit. We know whether an
exception was thrown, so just branch to a different target if we
want to skip the try_exit.
This is a slight semantic departure from gcc, but only for throwing
nil, which is undefined (and for which gcc emits broken code).
- Also fixes a bug in current code which was calling try_exit too
many times when an exception was uncaught (but there were some
handlers).
Fix bug introduced in prev. commit, the type of the @catch parameter
was uninitialized.
llvm-svn: 56754
|
|
|
|
| |
llvm-svn: 56753
|
|
|
|
|
|
| |
of the function.
llvm-svn: 56752
|
|
|
|
|
|
|
|
|
|
|
| |
when there are no @catch blocks.
Also, eliminated unneeded alloca for the rethrow object.
Also, avoid generating code to rethrow exception if the exception will
trivially always be caught.
llvm-svn: 56751
|
|
|
|
|
|
| |
(smaller) size == garbage on stack == heisenbugs.
llvm-svn: 56750
|
|
|
|
|
|
|
|
|
|
|
| |
- return attributes - inreg, zext and sext
- parameter attributes
- function attributes - nounwind, readonly, readnone, noreturn
Return attributes use 0 as the index.
Function attributes use ~0U as the index.
llvm-svn: 56705
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
s/ParamAttr/Attribute/g
s/PAList/AttrList/g
s/FnAttributeWithIndex/AttributeWithIndex/g
s/FnAttr/Attribute/g
This sets the stage
- to implement function notes as function attributes and
- to distinguish between function attributes and return value attributes.
llvm-svn: 56623
|
|
|
|
| |
llvm-svn: 56547
|
|
|
|
|
|
| |
Also, "simple" getter synthesis no longer uses temporary AST objects.
llvm-svn: 56544
|
|
|
|
|
|
|
|
|
|
| |
- Add CodeGenFunction::{EmitReturnOfRValue, EmitIvarOffset}
- Factor EmitLValueForIvar out of EmitObjCIvarRefLValue.
No non-error functionality change (some unsupported errors are
degraded to asserts for the time being).
llvm-svn: 56543
|
|
|
|
|
|
| |
implementing property access.
llvm-svn: 56542
|
|
|
|
| |
llvm-svn: 56538
|
|
|
|
|
|
| |
Rename to match changes done on llvm side.
llvm-svn: 56537
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Enables use of ABIArgInfo::Expand when needed. This greatly
improves our x86 ABI compatibility.
- As the infrastructure for target specific ABI handling isn't built
yet, this change means ABI compatibility on other platforms is once
again broken in a different way than before.
- Upcoming: Figure out how to refactor ABI handling into
targets. More documentation.
llvm-svn: 56293
|
|
|
|
| |
llvm-svn: 56291
|
|
|
|
|
|
|
|
|
| |
Ensure that ABIArgInfo::Default implementation for aggregrate types
is sensible (StructRet on return and ByVal on arguments).
No functionality change.
llvm-svn: 56289
|
|
|
|
|
|
| |
- No functionality change.
llvm-svn: 56269
|
|
|
|
| |
llvm-svn: 56102
|
|
|
|
| |
llvm-svn: 56101
|
|
|
|
| |
llvm-svn: 56100
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
value).
- Added ABIArgInfo::ByVal (mostly supported) and ABIArgInfo::Expand
(asserted out).
- Added classifyArgumentType which currently just uses
ABIArgInfo::Default or ByVal. This nearly matches old behavior, but
we now set ByVal in a few situations we may have left it off before
(on complex, for example).
llvm-svn: 56086
|
|
|
|
|
|
|
|
|
| |
no method declaration was found.
- This was allowing arrays to pass "by value" among other things.
Add assert in CodeGen that arguments cannot have array type.
llvm-svn: 56080
|
|
|
|
|
|
|
|
| |
- As a test, enable basic usage for some common x86-32 cases. This
increases our x86-32 compliance (on other targets our compliance
will just be broken in a different way).
llvm-svn: 56051
|
|
|
|
|
|
|
|
|
|
|
|
| |
type of a call.
Change NeXT runtime to use this instead of trying to bitcasting
internally (which doesn't respect the ABI).
Fix subtle bug, use of ConvertTypeRecursive instead of ConvertType is
bad inside GetFunctionType.
llvm-svn: 56050
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Added CodeGenTypes::GetFunctionType, taking a CGFunctionInfo.
- Updated Obj-C runtimes to use this instead of rolling the
llvm::FunctionType by hand.
- Killed CodeGenTypes::{ConvertReturnType, DecodeArgumentTypes}.
Add ABIArgInfo class to encapsulate ABI decision of how to lower types
to LLVM.
- Will move to target sometime soon.
llvm-svn: 56047
|
|
|
|
|
|
|
| |
to LLVM.
- Will move to target sometime soon.
llvm-svn: 56046
|
|
|
|
|
|
| |
which represents a 'condition' declaration, e.g: "if (int x=0) {...}".
llvm-svn: 56045
|
|
|
|
|
|
|
|
| |
- Realized these functions will eventually need access to more data,
moved to CodeGenModule. Eventually they should probably live
together in some other helper class.
llvm-svn: 56039
|
|
|
|
|
|
|
|
| |
- Move actual param attr list creation to
CodeGenFunction::ConstructParamAttrList.
- Make ReturnTypeUsesSret static.
llvm-svn: 56038
|