Douglas Gregor
4e8b5fb1eb
Move the implicit declaration of a default constructor into a separate
...
routine; no functionality change.
llvm-svn: 107434
2010-07-01 22:02:46 +00:00
Douglas Gregor
8453ddb5fe
Provide exception specifications for implicitly-declared copy constructors.
...
llvm-svn: 107429
2010-07-01 20:59:04 +00:00
Daniel Dunbar
a2b1f8b5cd
MC: Pass the target instance to the AsmParser constructor.
...
llvm-svn: 107427
2010-07-01 20:41:59 +00:00
Ted Kremenek
bd862711fd
Fix PR 7475 by enhancing the static analyzer to also invalidate bindings for non-static global variables
...
when calling a function/method whose impact on global variables we cannot accurately estimate.
This change introduces two new MemSpaceRegions that divide up the memory space of globals, and causes
RegionStore and BasicStore to consult a binding to the NonStaticGlobalsMemSpaceRegion when lazily
determining the value of a global.
llvm-svn: 107423
2010-07-01 20:16:50 +00:00
Jordy Rose
f7488ec6dc
Add an ivar to SymbolReaper for the current statement, and then stop passing the current statement around everywhere. Preparation for symbolic extents.
...
llvm-svn: 107422
2010-07-01 20:09:55 +00:00
Douglas Gregor
19ecba740f
Test implicit declaration of copy assignment operator with non-const argument
...
llvm-svn: 107421
2010-07-01 20:08:52 +00:00
Douglas Gregor
f120304cc4
Move the implicit declaration of a constructor out to a separate
...
method. No functionality change.
llvm-svn: 107415
2010-07-01 19:09:28 +00:00
Douglas Gregor
cfe682274c
Teach DeclareImplicitCopyConstructor how to cope with virtual bases
...
and multi-dimensional array fields. Fixes several bugs found by
inspection.
llvm-svn: 107411
2010-07-01 18:27:03 +00:00
Douglas Gregor
54be33925a
Move declaration of a class's implicit copy constructor into a
...
separate function. Aside from making the loops infinitely faster, no
functionality change.
llvm-svn: 107407
2010-07-01 17:57:27 +00:00
Douglas Gregor
68e1136585
Provide an exception-specification for an implicitly-declared
...
copy-assignment operator.
llvm-svn: 107406
2010-07-01 17:48:08 +00:00
Douglas Gregor
f56ab7b6be
Move the implicit declaration of a class's copy-assignment operator
...
into a separate routine. No functionality change.
llvm-svn: 107402
2010-07-01 16:36:15 +00:00
Douglas Gregor
3311ed4f0e
Make loops infinitely faster. No functionality change.
...
llvm-svn: 107398
2010-07-01 15:29:53 +00:00
Douglas Gregor
2f3d9e8264
Add Sema test case for exception-specifiers implicitly added to destructors.
...
llvm-svn: 107395
2010-07-01 14:21:35 +00:00
Douglas Gregor
bac7490ffc
Remove unnecessary ASTContext parameter from
...
CXXRecordDecl::getDestructor(); no functionality change.
llvm-svn: 107394
2010-07-01 14:13:13 +00:00
Zhongxing Xu
bf81ed1fcf
ExplodedGraph never uses ASTContext, remove it.
...
llvm-svn: 107388
2010-07-01 07:10:59 +00:00
Chris Lattner
0e7929f30c
fix rdar://8147692 - yet another crash due to my abi work.
...
llvm-svn: 107387
2010-07-01 06:20:47 +00:00
Douglas Gregor
957551609c
Reinstate fix for PR7526, which was failing because, now that we
...
aren't dropping all exception specifications on destructors, the
exception specifications on implicitly-declared destructors were
detected as being wrong (which they were).
Introduce logic to provide a proper exception-specification for
implicitly-declared destructors. This also fixes PR6972.
Note that the other implicitly-declared special member functions also
need to get exception-specifications. I'll deal with that in a
subsequent commit.
llvm-svn: 107385
2010-07-01 05:10:53 +00:00
Douglas Gregor
d537dc022a
Update diagnostic on compatibility page to reflect reality
...
llvm-svn: 107382
2010-07-01 03:50:01 +00:00
Douglas Gregor
7c42659cee
When performing copy initialization via user-defined conversions,
...
don't allow two user-defined conversions. Fixes PR6595 (again).
llvm-svn: 107379
2010-07-01 03:43:00 +00:00
Douglas Gregor
3671ad4571
Revert r107374, which broke bootstrap.
...
llvm-svn: 107378
2010-07-01 03:28:42 +00:00
Douglas Gregor
c6e4c68371
When building the type of a destructor, make sure to keep the
...
exception specification. Fixes PR7526.
llvm-svn: 107374
2010-07-01 02:33:15 +00:00
Douglas Gregor
fb0c0d37b7
Extend the "cannot convert from base class pointer to derived class
...
pointer" diagnostic to handle references, too.
llvm-svn: 107372
2010-07-01 02:14:45 +00:00
Daniel Dunbar
223749db6c
Driver: .dSYM suffix should be appended, not replace the existing suffix.
...
llvm-svn: 107369
2010-07-01 01:36:31 +00:00
Daniel Dunbar
bb7ac52e02
Driver/IRgen: Add support for -momit-leaf-frame-pointer.
...
llvm-svn: 107367
2010-07-01 01:31:45 +00:00
Ted Kremenek
78f8c3014d
Update checker build.
...
llvm-svn: 107364
2010-07-01 01:06:36 +00:00
Douglas Gregor
a343430e00
Add test case that I forgot to commit with r107354 (the implementation
...
of C++ DR481).
llvm-svn: 107359
2010-07-01 00:21:50 +00:00
Douglas Gregor
5a5fcd83c5
Be a bit more careful with undefined CXXRecordDecls. Fixes
...
rdar://problem/8124080 and PR7118.
llvm-svn: 107358
2010-07-01 00:21:21 +00:00
Daniel Dunbar
3de064dfdf
Revert "IRgen: Make sure any prolog instructions get debug info.", the lexical
...
scope hasn't been set up yet so this isn't valid. It was just a cleanup to the
IR, so I'm going to ignore it for now.
llvm-svn: 107356
2010-07-01 00:16:31 +00:00
Douglas Gregor
dc13ded606
Implement C++ DR481, which clarifies that the scope of template
...
parameters starts at the end of the template-parameter rather than at
the point where the template parameter name is encounted. For example,
given:
typedef unsigned char T;
template<typename T = T> struct X0 { };
The "T" in the default argument refers to the typedef of "unsigned
char", rather than referring to the newly-introduced template type
parameter 'T'.
Addresses <rdar://problem/8122812>.
llvm-svn: 107354
2010-07-01 00:00:45 +00:00
Daniel Dunbar
9dcde4bdec
Driver/Darwin: Add one -L for the DarwinClang toolchain to point into the gcc
...
library directory, as we still rely on a few libraries that are hiding there (in
particular libstdc++.dylib).
llvm-svn: 107353
2010-06-30 23:56:13 +00:00
Douglas Gregor
56f2e34a6a
Improve diagnostic when we fail to pick an overload because it would
...
require a base-to-derived pointer conversion.
llvm-svn: 107349
2010-06-30 23:01:39 +00:00
John Thompson
781ad17ba9
Fix vector literal/cast confusion - bug 6895.
...
llvm-svn: 107347
2010-06-30 22:55:51 +00:00
Douglas Gregor
5396853d81
Wording tweak from Dan.
...
llvm-svn: 107344
2010-06-30 22:43:03 +00:00
Douglas Gregor
426c572d78
Wording tweak from Dan.
...
llvm-svn: 107343
2010-06-30 22:38:37 +00:00
Benjamin Kramer
aab931dd32
typo.
...
llvm-svn: 107342
2010-06-30 22:29:56 +00:00
Daniel Dunbar
4a58ced750
Runtime: Always build compiler-rt using the Clang we just built, instead of the
...
system CC.
llvm-svn: 107328
2010-06-30 22:10:41 +00:00
Daniel Dunbar
8d65fc86c4
Move lib/Runtime to runtime/, and build after everything else.
...
llvm-svn: 107327
2010-06-30 22:10:38 +00:00
Douglas Gregor
b7b04ae204
Remove redundant and incomplete bits from the users manual w.r.t. language conformance
...
llvm-svn: 107326
2010-06-30 22:04:24 +00:00
Douglas Gregor
9c9f26d4bf
New language-compatibility page, including language-compatibility information for the various language dialects Clang supports in a single, easy-to-find page
...
llvm-svn: 107325
2010-06-30 22:01:08 +00:00
Daniel Dunbar
df000da850
libclang: When invoking external clang process to get code completion results,
...
pass -ccc-clang-cxx to force C++ support (even if the binary was built without
it).
llvm-svn: 107324
2010-06-30 21:40:01 +00:00
Daniel Dunbar
6696e22cc9
IRgen: Fix debug info regression in r106970; when we eliminate the return value
...
store make sure to move the debug metadata from the store (which is actual
'return' statement location) to the return instruction (which otherwise would
have the function end location as its debug info).
- Tested by gdb test suite.
llvm-svn: 107322
2010-06-30 21:27:58 +00:00
Daniel Dunbar
d7ac9a375a
IRgen: Make sure any prolog instructions get debug info.
...
llvm-svn: 107320
2010-06-30 21:27:56 +00:00
Daniel Dunbar
8ab6c54ce2
Rewriter: Use the appropriate printing context instead of the default
...
constructed one -- this is necessary to ensure types get printed correctly.
llvm-svn: 107312
2010-06-30 19:16:53 +00:00
Daniel Dunbar
219fa69f91
AST: Propogate printing policy to types in a bunch more places.
...
llvm-svn: 107311
2010-06-30 19:16:48 +00:00
Chris Lattner
5c740f1523
Reapply:
...
r107173, "fix PR7519: after thrashing around and remembering how all this stuff"
r107216, "fix PR7523, which was caused by the ABI code calling ConvertType instead"
This includes a fix to make ConvertTypeForMem handle the "recursive" case, and call
it as such when lowering function types which have an indirect result.
llvm-svn: 107310
2010-06-30 19:14:05 +00:00
Fariborz Jahanian
02995320e9
Use isFunctionOrMethod for vars declared locallly
...
in method/blocks to decide not to mangle them.
llvm-svn: 107309
2010-06-30 18:57:21 +00:00
Eric Christopher
aba9fb217e
Add a return to silence a warning. Alternately a default: return false
...
would work.
Sebastian: figure out which one you want :)
llvm-svn: 107305
2010-06-30 18:36:32 +00:00
Zhanyong Wan
88d5a91f0d
Fix RecursiveASTVisitor to traverse the ctor initializer list before
...
traversing the ctor body when traversing a CXXConstructorDecl.
Reviewed by chandlerc and csilvers.
llvm-svn: 107304
2010-06-30 18:34:52 +00:00
Fariborz Jahanian
0f19afb9d4
extern variable declared locally to objective-c++ method
...
should not be mangled either. Fixes radar 8016412.
llvm-svn: 107303
2010-06-30 18:27:47 +00:00
Sebastian Redl
d92badfd9c
Make both old and new versions of reference binding use the new classification functions, and updated them for N3092.
...
llvm-svn: 107301
2010-06-30 18:13:39 +00:00
Douglas Gregor
bc0c79b4ab
Clean up the diagnostic complaining about the element type of a vector
...
type so that it actually complains about the element type itself.
llvm-svn: 107299
2010-06-30 17:30:41 +00:00
Douglas Gregor
2187266120
Complain about the application of a transparent_union attribute to a
...
union whose first field has integral vector type. Also, clean up this
diagnostic a bit. Thanks to Eli for spotting this change in semantics
last week.
llvm-svn: 107296
2010-06-30 17:24:13 +00:00
Chris Lattner
749b8ed5af
reduce nesting.
...
llvm-svn: 107292
2010-06-30 16:58:07 +00:00
Duncan Sands
36d97d8938
Add header file needed to compile with g++-4.6, which has undergone some more
...
header trimming (needed for std::uninitialized_copy).
llvm-svn: 107291
2010-06-30 16:54:05 +00:00
Sebastian Redl
d559a545d4
Fix a comment typo.
...
llvm-svn: 107290
2010-06-30 16:41:54 +00:00
Fariborz Jahanian
e33c116bdf
Nasty rewriter bug which turns out to have an easy fix in
...
rewriting a c-style cast expression in statement printer.
Fixes radar 8143056.
llvm-svn: 107289
2010-06-30 16:31:08 +00:00
Argyrios Kyrtzidis
639ffb0c07
Fix rdar://8139785 "implement warning on dead expression in comma operator"
...
As a bonus, fix the warning for || and && operators; it was emitted even if one of the operands had side effects, e.g:
x || test_logical_foo1();
emitted a bogus "expression result unused" for 'x'.
llvm-svn: 107274
2010-06-30 10:53:14 +00:00
Argyrios Kyrtzidis
bd8ac8cf07
Fix PCH support for UnresolvedUsingTypenameDecl and UnresolvedUsingValueDecl.
...
llvm-svn: 107268
2010-06-30 08:49:30 +00:00
Argyrios Kyrtzidis
4a57bd0d62
Support DependentSizedArrayType for PCH.
...
llvm-svn: 107267
2010-06-30 08:49:25 +00:00
Argyrios Kyrtzidis
f9f47c8e54
Support ParenListExpr for PCH.
...
llvm-svn: 107266
2010-06-30 08:49:18 +00:00
Argyrios Kyrtzidis
2b3ac09200
Make the constructor explicit.
...
llvm-svn: 107265
2010-06-30 08:49:12 +00:00
Charles Davis
2a47730767
Mangle arrays in the Microsoft C++ Mangler. It's not quite finished (it
...
doesn't mangle array parameters right), but I think that should be fixed
in Sema (Doug, John, what do you think?).
Also, stub out the remaining mangleType() routines.
llvm-svn: 107264
2010-06-30 08:09:57 +00:00
Ted Kremenek
169e43c4cf
Correctly implement the CheckerVisit optimization introduced in r106884, but this time actually used the cached checker list when calling back to Checker visit methods. This reduces the analysis time for sqlite3.c by 8%.
...
llvm-svn: 107259
2010-06-30 07:28:52 +00:00
Daniel Dunbar
120a1e9d0f
Headers: Define __INT64_TYPE__ in terms of getInt64Type(), which isn't always
...
'long'. The practical upshot is so that the uint64_t we define in our stdint.h
ends up being compatible with that defined by gcc (at least on Darwin), which
otherwise could lead to type incompatibilities with other system headers.
llvm-svn: 107255
2010-06-30 06:30:56 +00:00
Daniel Dunbar
540e8b1dcd
Headers: Change [u]intmax_t to be defined in terms of __[U]INTMAX_TYPE__, instead of intN_t.
...
llvm-svn: 107254
2010-06-30 06:30:50 +00:00
Chandler Carruth
139e96216a
Reapply r107235, this time with both my typo fixed, and a logical bug fixed.
...
Previously we relied on the presence of a member which needs no initialization
to prevent us from creating an additional initialization of the outer anonymous
union field. We have already correctly marked that field as initialized by the
member of the union (repeatedly due to the original bug this patch fixes) so we
simply need to bail out.
llvm-svn: 107242
2010-06-30 02:59:29 +00:00
Chandler Carruth
0e783c2e86
Revert r107235, it had a silly typo in it, and fixing the typo breaks something
...
else. Get the build bots happy while I debug. Very sorry for the delay fixing
this...
llvm-svn: 107239
2010-06-30 02:06:16 +00:00
Jordy Rose
dc48471861
Pointers casted as integers still count as locations to SimpleSValuator, so don't crash if we do a funny thing like ((int)ptr)&1. Fixes PR7527.
...
llvm-svn: 107236
2010-06-30 01:35:20 +00:00
Chandler Carruth
abb04f730e
Fix PR7402: We were creating implicit member initializers for every field in an
...
anonymous union under the presumption that they didn't do anything. While this
is true, our checks for redundant initialization of an anonymous union still
fire when these overlap with explicit user initialization. A cleaner approach
is to avoid initializing multiple members of a union altogether, but this still
is in a rather fuzzy are especially when C++0x allows non-POD types into
unions.
llvm-svn: 107235
2010-06-30 00:54:29 +00:00
Daniel Dunbar
e422266926
Revert r107173, "fix PR7519: after thrashing around and remembering how all this stuff", it broke bootstrap.
...
llvm-svn: 107232
2010-06-30 00:22:35 +00:00
Daniel Dunbar
8386469d7d
Revert r107216, "fix PR7523, which was caused by the ABI code calling ConvertType instead", it is part of a boostrap breaking sequence.
...
llvm-svn: 107231
2010-06-30 00:22:30 +00:00
Douglas Gregor
4799d03ce8
Implement C++ DR299, which allows an implicit conversion from a class
...
type to an integral or enumeration type in the size of an array new
expression, e.g.,
new int[ConvertibleToInt(10)];
This is a GNU and C++0x extension.
llvm-svn: 107229
2010-06-30 00:20:43 +00:00
Chandler Carruth
9c9286b531
Retain the source location of the constructor when building an implicit member
...
initialization. I tried several ideas but couldn't come up with a test case for
this that didn't rely on a Clang bug to report a diagnostic after template
instantiation of the constructor due to the implicit initializers. Suggestions
welcome. This fixes the source location aspect of PR7402.
llvm-svn: 107226
2010-06-29 23:50:44 +00:00
Douglas Gregor
5823da3ab0
Re-improve recovery when the condition of a switch statement does not
...
have integral or enumeration type, so that we still check the contents
of the switch body. My previous patch made this worse; now we're back
to where we were previously.
llvm-svn: 107223
2010-06-29 23:25:20 +00:00
Douglas Gregor
f4ea725d38
Factor the conversion from a switch condition to an integral or
...
enumeration type out into a separate, reusable routine. The only
functionality change here is that we recover a little more
aggressively from ill-formed switch conditions.
llvm-svn: 107222
2010-06-29 23:17:37 +00:00
Argyrios Kyrtzidis
74d28bd084
Support C++ friend declarations for PCH.
...
This commit 'introduces' a slightly different way to restore the state of the AST object.
It makes PCHDeclReader/PCHDeclWriter friends and gives them access to the private members of the object.
The rationale is to avoid using/modifying the AST interfaces for PCH read/write so that to:
-Avoid complications with objects that have side-effects during creation or when using some setters.
-Not 'pollute' the AST interface with methods only used by the PCH reader/writer
-Allow AST objects to be read-only.
llvm-svn: 107219
2010-06-29 22:47:00 +00:00
Argyrios Kyrtzidis
26d7201d5d
When we know that we are at sub-statement reading (which is all of PCHStmtReader) use the "faster" ReadSubStmt. No functionality change.
...
llvm-svn: 107218
2010-06-29 22:46:25 +00:00
Daniel Dunbar
8c94ffe776
IRgen: Assignment to Objective-C properties shouldn't reload the value, for
...
complex values either. Previously we did this properly for regular assignment,
but not for compound assignment.
- Also, tidy up assignment code a bit to look more like the scalar path.
llvm-svn: 107217
2010-06-29 22:44:21 +00:00
Chris Lattner
466b1419c6
fix PR7523, which was caused by the ABI code calling ConvertType instead
...
of ConvertTypeRecursive when it needed to in a few cases, causing pointer
types to get resolved at the wrong time.
llvm-svn: 107216
2010-06-29 22:39:04 +00:00
Daniel Dunbar
c85ea8e175
IRgen: Assignment to Objective-C properties shouldn't reload the value (which
...
would trigger an extra method call).
- While in the area, I also changed Clang to not emit an unnecessary load from
'x' in cases like 'y = (x = 1)'.
llvm-svn: 107210
2010-06-29 22:00:45 +00:00
Ted Kremenek
090d62e7cc
Tweaker Checker::VisitEndAnalysis to have 'hasWorkRemaining' also
...
be true if some paths were aborted because they exceeded
the maximum loop unrolling count.
llvm-svn: 107209
2010-06-29 21:58:54 +00:00
Ted Kremenek
3f1240b614
Add test case for <rdar://problem/4289832>. Clang actuallys gets
...
the test case right (for the noreturn warning) because the CFG
doesn't support @try yet, but the test case is now present when
we do properly implement CFG support for @try...@catch.
llvm-svn: 107203
2010-06-29 20:25:42 +00:00
Douglas Gregor
c048c52734
When typo correction produces a result that is not of the kind we're
...
looking for, reset the name within the LookupResult structure in
addition to clearing out the results. Fixes PR7508.
llvm-svn: 107197
2010-06-29 19:27:42 +00:00
Chris Lattner
cccaad9584
change ABIArgInfo to hold its llvm type with PATypeHolder so that
...
it doesn't dangle as types get refined. This fixes Shootout-C++/lists1
and probably also PR7522.
llvm-svn: 107196
2010-06-29 19:21:36 +00:00
Douglas Gregor
6969fb73ca
Fix broken testcase
...
llvm-svn: 107194
2010-06-29 19:17:14 +00:00
Douglas Gregor
9629e9ac3e
Typo correction for namespace alias definitions
...
llvm-svn: 107191
2010-06-29 18:55:19 +00:00
Daniel Dunbar
99e13101b2
tests: Fix test to not depend on instruction names.
...
llvm-svn: 107186
2010-06-29 18:34:40 +00:00
Daniel Dunbar
f35e76552f
Sema: Fix a subtle i64 -> i32 truncation which broke layout of large structures
...
with bit-fields.
llvm-svn: 107185
2010-06-29 18:34:35 +00:00
Chris Lattner
34d6281ae5
relax the CGFunctionInfo::CGFunctionInfo ctor to allow any sequence
...
of CanQualTypes to be passed in.
llvm-svn: 107176
2010-06-29 18:13:52 +00:00
Fariborz Jahanian
66f9a6560e
This patch fixes a bug whereby, clang skipped
...
unimplemented property warning for properties
coming from class's conformin protocol. It also
simplifies the algorithm in the process.
Fixes radar 8035776.
llvm-svn: 107174
2010-06-29 18:12:32 +00:00
Chris Lattner
ab1e65e2ea
fix PR7519: after thrashing around and remembering how all this stuff
...
works, the fix is quite simple: just make sure to call ConvertTypeRecursive
when the function type being lowered is in the midst of ConvertType.
llvm-svn: 107173
2010-06-29 17:56:33 +00:00
Douglas Gregor
cdf87024ed
Allow a using directive to refer to the implicitly-defined namespace
...
"std", with a warning, to improve GCC compatibility. Fixes PR7517.
As a drive-by, add typo correction for using directives.
llvm-svn: 107172
2010-06-29 17:53:46 +00:00
Douglas Gregor
56980d688b
With packed enums, an enumerator's value may be stored in more bits
...
than the enumeration type itself takes. Fixes PR7477.
llvm-svn: 107163
2010-06-29 17:12:35 +00:00
Daniel Dunbar
8452ef0798
tests: Use %clangxx when using driver for C++, in case C++ support is disabled.
...
llvm-svn: 107153
2010-06-29 16:52:24 +00:00
Daniel Dunbar
ec1bee907a
tests: Spell %clang_cc1 correctly.
...
llvm-svn: 107152
2010-06-29 16:52:18 +00:00
Chris Lattner
e70a007b36
minor cleanups.
...
llvm-svn: 107150
2010-06-29 16:40:28 +00:00
Daniel Dunbar
00d3d8e902
Driver/Darwin: Only run dsymutil when we are also compiling/assembling as part
...
of the compilation.
- <rdar://problem/8141387> clang is always invoking dsymutil
llvm-svn: 107149
2010-06-29 16:38:33 +00:00
Jeffrey Yasskin
bb219e01a6
Delete assert in ComputeKeyFunction. The function runs fine without it, since
...
there's an explicit guard on isPolymorphic, and virtual bases don't affect the
key function calculation. This allows people to call
ASTContext::getKeyFunction on arbitrary classes.
llvm-svn: 107143
2010-06-29 15:27:35 +00:00
Chris Lattner
22a931e3bb
Change X86_64ABIInfo to have ASTContext and TargetData ivars to
...
avoid passing ASTContext down through all the methods it has.
When classifying an argument, or argument piece, as INTEGER, check
to see if we have a pointer at exactly the same offset in the
preferred type. If so, use that pointer type instead of i64. This
allows us to compile A function taking a stringref into something
like this:
define i8* @foo(i64 %D.coerce0, i8* %D.coerce1) nounwind ssp {
entry:
%D = alloca %struct.DeclGroup, align 8 ; <%struct.DeclGroup*> [#uses=4]
%0 = getelementptr %struct.DeclGroup* %D, i32 0, i32 0 ; <i64*> [#uses=1]
store i64 %D.coerce0, i64* %0
%1 = getelementptr %struct.DeclGroup* %D, i32 0, i32 1 ; <i8**> [#uses=1]
store i8* %D.coerce1, i8** %1
%tmp = getelementptr inbounds %struct.DeclGroup* %D, i32 0, i32 0 ; <i64*> [#uses=1]
%tmp1 = load i64* %tmp ; <i64> [#uses=1]
%tmp2 = getelementptr inbounds %struct.DeclGroup* %D, i32 0, i32 1 ; <i8**> [#uses=1]
%tmp3 = load i8** %tmp2 ; <i8*> [#uses=1]
%add.ptr = getelementptr inbounds i8* %tmp3, i64 %tmp1 ; <i8*> [#uses=1]
ret i8* %add.ptr
}
instead of this:
define i8* @foo(i64 %D.coerce0, i64 %D.coerce1) nounwind ssp {
entry:
%D = alloca %struct.DeclGroup, align 8 ; <%struct.DeclGroup*> [#uses=3]
%0 = insertvalue %0 undef, i64 %D.coerce0, 0 ; <%0> [#uses=1]
%1 = insertvalue %0 %0, i64 %D.coerce1, 1 ; <%0> [#uses=1]
%2 = bitcast %struct.DeclGroup* %D to %0* ; <%0*> [#uses=1]
store %0 %1, %0* %2, align 1
%tmp = getelementptr inbounds %struct.DeclGroup* %D, i32 0, i32 0 ; <i64*> [#uses=1]
%tmp1 = load i64* %tmp ; <i64> [#uses=1]
%tmp2 = getelementptr inbounds %struct.DeclGroup* %D, i32 0, i32 1 ; <i8**> [#uses=1]
%tmp3 = load i8** %tmp2 ; <i8*> [#uses=1]
%add.ptr = getelementptr inbounds i8* %tmp3, i64 %tmp1 ; <i8*> [#uses=1]
ret i8* %add.ptr
}
This implements rdar://7375902 - [codegen quality] clang x86-64 ABI lowering code punishing StringRef
llvm-svn: 107123
2010-06-29 06:01:59 +00:00
Chris Lattner
de310d5d95
Minix doesn't support dylibs, PR7294
...
llvm-svn: 107120
2010-06-29 05:05:09 +00:00