| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- No (intended) functionality change.
- Primary purpose is to clearly separate (lazy) construction of
globals that are a forward declaration or tentative definition from
those that are the final definition.
- Lazy construction is now encapsulated in
GetAddrOf{Function,GlobalVar} while final definitions are
constructed in EmitGlobal{Function,Var}Definition.
- External interface for dealing with globals is now limited to
EmitGlobal and GetAddrOf{Function,GlobalVar}.
- Also updated helper functions dealing with statics, annotations,
and ctors to be private.
llvm-svn: 54179
|
|
|
|
|
|
|
|
| |
- Killed useless CodeGenModule::EmitGlobalVarDeclarator, instead just
recurse on any ScopedDecl.
- Fix for <rdar://problem/6093838>
llvm-svn: 54162
|
|
|
|
|
|
| |
simplifying code along the way and fixing a problem and memory leak or two.
llvm-svn: 53876
|
|
|
|
|
|
|
| |
various objc lists over to it. First up, the protocol list
on ObjCInterfaceDecl.
llvm-svn: 53856
|
|
|
|
|
|
| |
we don't push strings into LLVM IR and then have to read them back out.
llvm-svn: 52765
|
|
|
|
| |
llvm-svn: 52764
|
|
|
|
|
|
|
| |
instead of passing in just a couple random things it currently
happens to use.
llvm-svn: 52756
|
|
|
|
| |
llvm-svn: 52092
|
|
|
|
| |
llvm-svn: 51993
|
|
|
|
|
|
|
| |
because trying to access non-existent ParamVarDecls can crash.
Testcase from the original source for PR2414.
llvm-svn: 51960
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
much closer to passing the gcc struct layout tests.
It might be possible to refactor this a bit, but I'm not sure there's
actually enough common code for that to be useful.
To get the calling convention completely correct, a bit of
platform-specific code is necessary even for x86-Linux. On x86-Linux, the
alignment of function parameters is extremely strange; as far as I can tell,
it's always 4 except for SSE vectors or structs containing SSE vectors. I'm
continuing to investigate this.
llvm-svn: 51839
|
|
|
|
|
|
| |
Implemented by David Chisnall!
llvm-svn: 51835
|
|
|
|
|
|
| |
types so that they end up the correct size.
llvm-svn: 51787
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
associated declaration. This is a prerequisite to handling
general union initializations; for example, an array of unions involving
pointers has to be turned into a struct because the elements can have
incompatible types.
I refactored the code a bit to make it more readable; now, the logic for
definitions is all in EmitGlobalVarInit.
The second parameter for GetAddrOfGlobalVar is now dead; I'll remove it
separately.
By itself, this patch should not cause any visible changes.
llvm-svn: 51783
|
|
|
|
|
|
| |
This fixes a crash on the included testcase (found in NetHack).
llvm-svn: 51767
|
|
|
|
|
|
| |
alignment and alignment attributes.
llvm-svn: 51676
|
|
|
|
|
|
| |
This change makes clang generate the same thing as llvm-gcc.
llvm-svn: 51674
|
|
|
|
| |
llvm-svn: 51587
|
|
|
|
|
|
|
| |
been used. In preparation for the fix to PR2360, but also a minor bug
in its own right.
llvm-svn: 51583
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
required for correctness in cases of copying a struct to itself or to
an overlapping struct (itself for cases like *a = *a, and overlapping
is possible with unions).
Hopefully, this won't end up being a perf issue; LLVM *should* be able
to optimize memmove to memcpy in a lot of cases, and for small copies
the generated code *should* be mostly comparable. (In reality, LLVM
is currently horrible at optimizing memmove, but that's a bug, not a
fundamental issue.)
gcc currently generates wrong code; that's
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32667.
llvm-svn: 51566
|
|
|
|
|
|
|
|
|
| |
lib/CodeGen/CGExpr.cpp and to change include/clang/AST/Attr.h to
use its own enum for visibility types instead of using
llvm::GlobalValue::VisibilityTypes. These changes eliminate
dependencies in the AST library on LLVM's VMCore library.
llvm-svn: 51398
|
|
|
|
|
|
|
|
|
|
| |
as far as I can tell, and it fixes code like test/CodeGen/functions.c.
(Whatever performance effect it might have, crashing on a
construct like this isn't really acceptable; I've run into this
multiple times.)
llvm-svn: 51312
|
|
|
|
|
|
| |
information. This patch currently enables generation of line number debug information (stoppoints) and region begin/end debug information. The new files CGDebugInfo.h and CGDebugInfo.cpp implements the debug info manager class CGDebugInfo.
llvm-svn: 50848
|
|
|
|
|
|
|
| |
Fix 'swapping' of attributes to not insert null values into the
DeclAttrs map.
llvm-svn: 50612
|
|
|
|
|
|
| |
type should be internal, not weak/linkonce.
llvm-svn: 50611
|
|
|
|
| |
llvm-svn: 50485
|
|
|
|
|
|
|
| |
reimplemented in Sema someday. This is tracked in PR2236. Until then
disabling it removes some bogus diagnostics (see 2236).
llvm-svn: 50263
|
|
|
|
|
|
|
| |
Add test
Implement feedback from Chris re: PR1998
llvm-svn: 50001
|
|
|
|
|
|
|
|
|
| |
actually used.
Warn about unused static functions and variables.
This fixes PR1998.
llvm-svn: 49987
|
|
|
|
| |
llvm-svn: 49951
|
|
|
|
| |
llvm-svn: 49944
|
|
|
|
|
|
|
|
| |
VarDecl::isBlockVarDecl() and VarDecl::isFileVarDecl().
This is a fairly mechanical/large change. As a result, I avoided making any changes/simplifications that weren't directly related. I did break two Analysis tests. I also have a couple FIXME's in UninitializedValues.cpp. Ted, can you take a look? If the bug isn't obvious, I am happy to dig in and fix it (since I broke it).
llvm-svn: 49748
|
|
|
|
| |
llvm-svn: 49279
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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: 48535
|
|
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
|