|  | Commit message (Collapse) | Author | Age | Files | Lines | 
|---|
| | 
| 
| 
| 
| 
| | options align.
llvm-svn: 109952 | 
| | 
| 
| 
| 
| 
| | for malloc/free checking.  Patch by Andrew McGregor!
llvm-svn: 109939 | 
| | 
| 
| 
| 
| 
| 
| | the files in the precompiled preamble have changed since it was build,
force the preamble to be rebuilt.
llvm-svn: 109937 | 
| | 
| 
| 
| | llvm-svn: 109907 | 
| | 
| 
| 
| | llvm-svn: 109895 | 
| | 
| 
| 
| | llvm-svn: 109893 | 
| | 
| 
| 
| 
| 
| | environment variable is set.
llvm-svn: 109890 | 
| | 
| 
| 
| | llvm-svn: 109871 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| | This patch introduces the ClassTemplateDecl::spec_{begin,end}()
and FunctionTemplateDecl::{,partial_}spec_{begin,end}() member
functions as a public interface for iterating over the declarations'
specialisation sets.
llvm-svn: 109870 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| | This patch reimplements the find*Specialization family of member
functions of {Class,Function}TemplateDecl in terms of a common
implementation that uses SpecEntryTraits to obtain the most recent
declaration.
llvm-svn: 109869 | 
| | 
| 
| 
| 
| 
| 
| | SpecEntryTraits describes how to obtain the most recent declaration
of a specialisation from an entry in a specialisation FoldingSet.
llvm-svn: 109868 | 
| | 
| 
| 
| | llvm-svn: 109867 | 
| | 
| 
| 
| 
| 
| 
| | auto-synthesized (nonfragile-abi2 specific).
Fixes radar 8251648.
llvm-svn: 109866 | 
| | 
| 
| 
| | llvm-svn: 109865 | 
| | 
| 
| 
| | llvm-svn: 109864 | 
| | 
| 
| 
| | llvm-svn: 109862 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | notify the PCHReader to hold off passing Decls
to the consumer until the DeclContext is fully prepared.
Before, due to recursive loading, we could be in a situation where we would try to deserialize the decls of a DeclContext which was already doing that, and bad things would happen. In the specific case I encountered, the lexical decls would
form a cycle and we would enter infinite loop territory.
llvm-svn: 109857 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| | -Replace CurrentlyLoadingTypeOrDecl with a counting scheme (NumCurrentElementsDeserializing)
-Provide outside access to the mechanism by adding methods StartedDeserializing/FinishedDeserializing
  to ExternalASTSource.
These are preparation for the next commit.
llvm-svn: 109856 | 
| | 
| 
| 
| 
| 
| 
| 
| | (e.g. due to a broken template argument) following template parameters.
Fixes rdar://problem/8254267
llvm-svn: 109853 | 
| | 
| 
| 
| 
| 
| | some downstream crashes, among them rdar://problem/8229840.
llvm-svn: 109850 | 
| | 
| 
| 
| 
| 
| 
| 
| | an initializer requiring temporary object disposal.
Fixes rdar:://problem/8246444.
llvm-svn: 109849 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | The X86-64 ABI code didn't handle the case when a struct
would get classified and turn up as "NoClass INTEGER" for
example.  This is perfectly possible when the first slot
is all padding (e.g. due to empty base classes).  In this
situation, the first 8-byte doesn't take a register at all,
only the second 8-byte does.
This fixes this by enhancing the x86-64 abi stuff to allow
and handle this case, reverts the broken fix for PR5831,
and enhances the target independent stuff to be able to 
handle an argument value in registers being accessed at an
offset from the memory value.
This is the last x86-64 calling convention related miscompile
that I'm aware of.
llvm-svn: 109848 | 
| | 
| 
| 
| | llvm-svn: 109847 | 
| | 
| 
| 
| 
| 
| | since been fixed in trunk).
llvm-svn: 109834 | 
| | 
| 
| 
| | llvm-svn: 109833 | 
| | 
| 
| 
| 
| 
| | PCHReader and PCHWriter are initialized to correctly pick up all initializer. On the upside, this means that there is far less repetition in the dependent PCH now.
llvm-svn: 109823 | 
| | 
| 
| 
| 
| 
| | <rdar://problem/8250669>.
llvm-svn: 109822 | 
| | 
| 
| 
| 
| 
| 
| | sections on", this change uncovered a possible linker bug which resulted in the
wrong messages getting dispatched. Backing this out while we investigate...
llvm-svn: 109817 | 
| | 
| 
| 
| | llvm-svn: 109816 | 
| | 
| 
| 
| | llvm-svn: 109814 | 
| | 
| 
| 
| 
| 
| | Objective-C object and interface types. This is part of PR7741.
llvm-svn: 109808 | 
| | 
| 
| 
| 
| 
| | that needs it and remove getCoerceResult.
llvm-svn: 109807 | 
| | 
| 
| 
| | llvm-svn: 109805 | 
| | 
| 
| 
| 
| 
| | float, the special case hack in getCoerceResult can go away.
llvm-svn: 109804 | 
| | 
| 
| 
| 
| 
| | functionality change.
llvm-svn: 109797 | 
| | 
| 
| 
| 
| 
| | early codegen/deserialization.
llvm-svn: 109796 | 
| | 
| 
| 
| 
| 
| 
| 
| | <2 x float> instead of double.  This works but can't be turned
on until I teach codegen to pass <2 x float> as one XMM register
instead of two.
llvm-svn: 109790 | 
| | 
| 
| 
| | llvm-svn: 109786 | 
| | 
| 
| 
| | llvm-svn: 109785 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | CodeGenModule::MayDeferGeneration into a new function,
DeclIsRequiredFunctionOrFileScopedVar.
This is essentially a CodeGen predicate that is also needed by the PCH mechanism to determine whether a decl
needs to be deserialized during PCH loading for codegen purposes.
Since this logic is shared by CodeGen and the PCH mechanism, move it to the ASTContext,
thus CodeGenModule's GetLinkageForFunction/GetLinkageForVariable and the GVALinkage enum is moved out of CodeGen.
This fixes current (and avoids future) codegen-from-PCH bugs.
llvm-svn: 109784 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | end of a struct.  This improves the case when the struct being passed
contains 3 floats, either due to a struct or array of 3 things.  Before
we'd generate this IR for the testcase:
define float @bar(double %X.coerce0, double %X.coerce1) nounwind {
entry:
  %X = alloca %struct.foof, align 8               ; <%struct.foof*> [#uses=2]
  %0 = bitcast %struct.foof* %X to %1*            ; <%1*> [#uses=2]
  %1 = getelementptr %1* %0, i32 0, i32 0         ; <double*> [#uses=1]
  store double %X.coerce0, double* %1
  %2 = getelementptr %1* %0, i32 0, i32 1         ; <double*> [#uses=1]
  store double %X.coerce1, double* %2
  %tmp = getelementptr inbounds %struct.foof* %X, i32 0, i32 2 ; <float*> [#uses=1]
  %tmp1 = load float* %tmp                        ; <float> [#uses=1]
  ret float %tmp1
}
which compiled (with optimization) to:
_bar:                                   ## @bar
## BB#0:                                ## %entry
	movd	%xmm1, %rax
	movd	%eax, %xmm0
	ret
Now we produce:
define float @bar(double %X.coerce0, float %X.coerce1) nounwind {
entry:
  %X = alloca %struct.foof, align 8               ; <%struct.foof*> [#uses=2]
  %0 = bitcast %struct.foof* %X to %0*            ; <%0*> [#uses=2]
  %1 = getelementptr %0* %0, i32 0, i32 0         ; <double*> [#uses=1]
  store double %X.coerce0, double* %1
  %2 = getelementptr %0* %0, i32 0, i32 1         ; <float*> [#uses=1]
  store float %X.coerce1, float* %2
  %tmp = getelementptr inbounds %struct.foof* %X, i32 0, i32 2 ; <float*> [#uses=1]
  %tmp1 = load float* %tmp                        ; <float> [#uses=1]
  ret float %tmp1
}
and:
_bar:                                   ## @bar
## BB#0:                                ## %entry
	movaps	%xmm1, %xmm0
	ret
llvm-svn: 109776 | 
| | 
| 
| 
| | llvm-svn: 109771 | 
| | 
| 
| 
| 
| 
| 
| | as <2 x float> instead of as double.  The backend isn't ready
yet, but infrastructure in the frontend can come up.
llvm-svn: 109768 | 
| | 
| 
| 
| | llvm-svn: 109766 | 
| | 
| 
| 
| 
| 
| 
| | make it clear that this function should only return a type
that the codegen will classify the same as an INTEGER type.
llvm-svn: 109763 | 
| | 
| 
| 
| 
| 
| | that Eli pointed out, rdar://8249586
llvm-svn: 109762 | 
| | 
| 
| 
| 
| 
| | this will hopefully fix the osuosl clang-i686-darwin10 builder.
llvm-svn: 109760 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | return where the struct has a base but no fields.  This
was because the x86-64 abi logic was checking the wrong
predicate in one place.
This was introduced in r91874, which was a fix for PR5831,
which lacked a CHECK line, so I verified and added it.
llvm-svn: 109759 | 
| | 
| 
| 
| 
| 
| 
| | variables to those in file scope (nonfragile-abi2).
Fixes radar 8248681.
llvm-svn: 109758 | 
| | 
| 
| 
| 
| 
| | with CK_NoOp. Fixes PR7727.
llvm-svn: 109757 |