Chris Lattner
ab17fb2c98
fix the more complex cases by actually codegen'ing the right expr :)
...
llvm-svn: 67219
2009-03-18 18:30:44 +00:00
Chris Lattner
28bcf1a429
add codegen support for casting an element to a union.
...
There are some more complex cases (_Complex and structs)
that I'm still working on.
llvm-svn: 67218
2009-03-18 18:28:57 +00:00
Mike Stump
bc7d67ce08
Add codegen support for aggregate BlockDeclRefExprs.
...
llvm-svn: 67207
2009-03-18 15:54:29 +00:00
Chris Lattner
c2a0b97950
fix PR3809, codegen for inc/dec of function pointers.
...
llvm-svn: 67165
2009-03-18 04:25:13 +00:00
Chris Lattner
63d06ab65a
teach codegen to handle noop casts as lvalues.
...
llvm-svn: 67164
2009-03-18 04:02:57 +00:00
Anders Carlsson
fe2e680509
Fix failing test case.
...
llvm-svn: 67147
2009-03-18 01:10:22 +00:00
Anders Carlsson
e73e3ecc04
Initialize the cleanup.dst variable if necessary. Fixes PR3789.
...
llvm-svn: 67075
2009-03-17 05:53:35 +00:00
Anders Carlsson
e8911a9a13
We want to grep the output, not the input :-)
...
llvm-svn: 67074
2009-03-17 05:49:13 +00:00
Mike Stump
5469f29aa9
Do up codegen for function static data and externs in functions in block
...
literals.
llvm-svn: 66984
2009-03-13 23:34:28 +00:00
Daniel Dunbar
8ce48d8c10
x86_32 ABI: Don't try and expand structures with bitfields.
...
- This is an ABI incompatiblity, but this is not likely to be a huge
deal in practice. For now we at least generate self consistent code
instead of crashing.
- <rdar://problem/6657601> x86-32 ABI: Bitfields in small structures
are not passed correctly
llvm-svn: 66713
2009-03-11 22:05:26 +00:00
Chris Lattner
f85a938985
Fix PR3682 by just disabling a broken assertion. This check should be
...
done in sema, and is reflected by the existing PR3258. In the meantime,
fix PR3682 by disabling a bogus assertion (which doesn't account for +
operands).
llvm-svn: 66533
2009-03-10 06:42:37 +00:00
Chris Lattner
6dd0f9263d
reduce duplication of parsing code between %0 and %x0 and
...
add support for modifiers on named references, like %c[foo].
llvm-svn: 66532
2009-03-10 06:38:02 +00:00
Chris Lattner
d7d5fdf090
move matching of named operands into AsmStmt class. At the same
...
time handle + operands in operand counting, fixing asm.c:t7 to
expand into $2 instead of $1.
llvm-svn: 66531
2009-03-10 06:33:24 +00:00
Mike Stump
6f7d9f8774
codegen support for dispose helpers for block literals.
...
llvm-svn: 66320
2009-03-07 02:53:18 +00:00
Mike Stump
aeb0ffd56c
Codegen support for copy helpers for block literals.
...
llvm-svn: 66319
2009-03-07 02:35:30 +00:00
Daniel Dunbar
94911a91d5
x86_64 ABI: Handle long double in union when upper eightbyte results
...
in a lone X87 class.
- PR3735.
llvm-svn: 66277
2009-03-06 17:50:25 +00:00
Daniel Dunbar
8e79b8491f
IRgen support for weak_import.
...
- <rdar://problem/6652110> clang should support weak_import
llvm-svn: 66270
2009-03-06 16:20:49 +00:00
Mike Stump
cfc045e36c
Testcase for last fix.
...
llvm-svn: 66258
2009-03-06 06:35:21 +00:00
Mike Stump
fbe25dd1e4
Finish off __Block_byref_id_object_dispose codegen for block literals.
...
llvm-svn: 66247
2009-03-06 04:53:30 +00:00
Mike Stump
ee2a5ee5f7
More codegen support for the copy/dispose helpers for block literals.
...
llvm-svn: 66241
2009-03-06 02:29:21 +00:00
Mike Stump
0c74327715
Framework for codegen for copy/dispose helpers.
...
llvm-svn: 66231
2009-03-06 01:33:24 +00:00
Eli Friedman
cecc21d2f6
Make IRGen compatible with declaring a function with incomplete
...
return/argument types. (The generated IR isn't ideal, but we can't
really do better in general.)
llvm-svn: 66132
2009-03-05 04:18:07 +00:00
Eli Friedman
22fcc24b30
Initial implementation of CodeGen for incomplete function types; fixes
...
PR3688. (The FIXME is a rather big performance issue, but it only
affects code using this feature, which is relatively rare.)
llvm-svn: 66128
2009-03-05 03:16:41 +00:00
Mike Stump
626aecc4be
Add codegen support for __block variables to call _Block_object_dispose as necessary.
...
llvm-svn: 66117
2009-03-05 01:23:13 +00:00
Mike Stump
2d33d6300c
Fixup __block codegen in nested block literals.
...
llvm-svn: 66091
2009-03-04 22:48:06 +00:00
Daniel Dunbar
5b9e9682f1
Support "asm" renaming of external symbols.
...
- PR3698.
llvm-svn: 66038
2009-03-04 17:31:19 +00:00
Mike Stump
0874160bd5
Add __block codegen testcase. We introduce a temporary flag to enable
...
codegen, until such time as codegen is complete enough to turn on with
-fblocks.
llvm-svn: 66031
2009-03-04 13:17:22 +00:00
Eli Friedman
3efa41a478
Continuation of PR3687: fix more places to use the right type for
...
booleans.
llvm-svn: 66012
2009-03-04 04:25:14 +00:00
Eli Friedman
42d2a3add6
Attempt to fix PR3709: when converting from an integer to a pointer,
...
first extend the integer to the correct width.
llvm-svn: 66009
2009-03-04 04:02:35 +00:00
Eli Friedman
78350edafb
Fix for PR3687: use the memory representation for booleans when a
...
sub-type describes a memory location, like the pointee type of a pointer
or the element type of an array.
llvm-svn: 65925
2009-03-03 04:48:01 +00:00
Daniel Dunbar
e2e704752c
Attempt to make test more robust (fails for users who put LLVM in
...
/path/with/store/in/it").
llvm-svn: 65852
2009-03-02 18:50:36 +00:00
Chris Lattner
d3fd8fb3ac
testcase for mike's fix for PR3612
...
llvm-svn: 65757
2009-03-01 03:26:22 +00:00
Anders Carlsson
ed5e69fe50
Do some blocks cleanup and simplification. Fix a crash, and add a test case.
...
llvm-svn: 65746
2009-03-01 01:09:12 +00:00
Chris Lattner
e87da66562
adjust to changes in the mainline llvm .ll printer.
...
llvm-svn: 65745
2009-03-01 00:59:19 +00:00
Chris Lattner
3ef668c27a
after going around in circles a few times, finally cave and emit structure
...
copies with memcpy instead of memmove. This matches what GCC does and if it
causes a problem with a particular libc we can always fix it with a target
hook.
llvm-svn: 65699
2009-02-28 18:18:58 +00:00
Chris Lattner
d42c29f9a2
fix some sema problems with wide strings and hook up basic codegen for them.
...
llvm-svn: 65582
2009-02-26 23:01:51 +00:00
Mike Stump
92000e54ac
Add end of line at end.
...
llvm-svn: 65557
2009-02-26 19:00:14 +00:00
Anders Carlsson
43e8a2b36e
Add test for enum types
...
llvm-svn: 65540
2009-02-26 17:38:19 +00:00
Daniel Dunbar
4208835eec
Temporarily disable clearing of insert point (to indicate unreachable
...
code) when calling noreturn functions; general expression emission
isn't ready to do the right thing in all cases.
llvm-svn: 65473
2009-02-25 20:59:29 +00:00
Daniel Dunbar
1cdbc5404b
Allow constant initializers to reference their defining decl.
...
- PR3662.
llvm-svn: 65472
2009-02-25 20:08:33 +00:00
Daniel Dunbar
a1047857f7
Remove a FIXME; I was mistaken in believing gcc rejected this.
...
llvm-svn: 65420
2009-02-25 00:22:25 +00:00
Daniel Dunbar
d4ecca135a
Fix IRgen of constant expressions referring to external/static
...
variables.
- PR3657.
llvm-svn: 65381
2009-02-24 18:41:57 +00:00
Douglas Gregor
e62c0a45dd
Improve merging of function declarations. Specifically:
...
- When we are declaring a function in local scope, we can merge with
a visible declaration from an outer scope if that declaration
refers to an entity with linkage. This behavior now works in C++
and properly ignores entities without linkage.
- Diagnose the use of "static" on a function declaration in local
scope.
- Diagnose the declaration of a static function after a non-static
declaration of the same function.
- Propagate the storage specifier to a function declaration from a
prior declaration (PR3425)
- Don't name-mangle "main"
llvm-svn: 65360
2009-02-24 01:23:02 +00:00
Mike Stump
624497c29a
Cleanp code with some recent suggestions.
...
llvm-svn: 65285
2009-02-22 13:27:11 +00:00
Anders Carlsson
b8482c5d5d
Match gcc and always perform array/function conversion for asm input exprs. Fixes PR3641.
...
llvm-svn: 65256
2009-02-22 02:11:23 +00:00
Daniel Dunbar
9cbbd99c4b
Force arch for these test cases.
...
llvm-svn: 65252
2009-02-21 23:45:41 +00:00
Daniel Dunbar
3c81dabd76
Emit extern_weak when needed.
...
- PR3629.
llvm-svn: 65203
2009-02-21 00:24:10 +00:00
Daniel Dunbar
0c4eda5923
We must always mangle attribute overloadable functions; even if in a
...
system header.
- Prevents a codegen crash when anything used anything in tgmath! :)
llvm-svn: 65200
2009-02-20 23:09:27 +00:00
Daniel Dunbar
ce39954d5d
Handle constant int -> ptr casts of lvalue results.
...
- PR3463 (again).
llvm-svn: 65133
2009-02-20 18:22:23 +00:00
Daniel Dunbar
cdbb5e336d
Set call attribute for direct calls (i.e. noreturn).
...
- Remove an unused variant of EmitCallExpr overload.
llvm-svn: 65130
2009-02-20 18:06:48 +00:00