- Nov 16, 2009
-
-
Dan Gohman authored
uninitialized memory. llvm-svn: 88985
-
Jeffrey Yasskin authored
The large code model is documented at http://www.x86-64.org/documentation/abi.pdf and says that calls should assume their target doesn't live within the 32-bit pc-relative offset that fits in the call instruction. To do this, we turn off the global-address->target-global-address conversion in X86TargetLowering::LowerCall(). The first attempt at this broke the lazy JIT because it can separate the movabs(imm->reg) from the actual call instruction. The lazy JIT receives the address of the movabs as a relocation and needs to record the return address from the call; and then when that call happens, it needs to patch the movabs with the newly-compiled target. We could thread the call instruction into the relocation and record the movabs<->call mapping explicitly, but that seems to require at least as much new complication in the code generator as this change. To fix this, we make lazy functions _always_ go through a call stub. You'd think we'd only have to force lazy calls through a stub on difficult platforms, but that turns out to break indirect calls through a function pointer. The right fix for that is to distinguish between calls and address-of operations on uncompiled functions, but that's complex enough to leave for someone else to do. Another attempt at this defined a new CALL64i pseudo-instruction, which expanded to a 2-instruction sequence in the assembly output and was special-cased in the X86CodeEmitter's emitInstruction() function. That broke indirect calls in the same way as above. This patch also removes a hack forcing Darwin to the small code model. Without far-call-stubs, the small code model requires things of the JITMemoryManager that the DefaultJITMemoryManager can't provide. Thanks to echristo for lots of testing! llvm-svn: 88984
-
Daniel Dunbar authored
llvm-svn: 88983
-
Daniel Dunbar authored
llvm-svn: 88982
-
Daniel Dunbar authored
language dependent. llvm-svn: 88981
-
Daniel Dunbar authored
llvm-svn: 88980
-
Daniel Dunbar authored
Don't build examples by default, use BUILD_EXAMPLES=1 to build them. The only utility of this is testing that we keep the examples up to date, I will just make the buildbots run with this flag. llvm-svn: 88979
-
Daniel Dunbar authored
disk space, and increasing battery lifetime. :) llvm-svn: 88978
-
Eric Christopher authored
llvm-svn: 88977
-
Evan Cheng authored
- Check memoperand alignment instead of checking stack alignment. Most load / store folding instructions are not referencing spill stack slots. - Mark MOVUPSrm re-materializable. llvm-svn: 88974
-
Devang Patel authored
llvm-svn: 88973
-
David Greene authored
Fix an expensive-checks error. The Mask and LHSMask may not be of the same size, so don't do the transformation if they're different. llvm-svn: 88972
-
Eli Friedman authored
llvm-svn: 88971
-
Douglas Gregor authored
sugared types. The basic problem is that our qualifier accessors (getQualifiers, getCVRQualifiers, isConstQualified, etc.) only look at the current QualType and not at any qualifiers that come from sugared types, meaning that we won't see these qualifiers through, e.g., typedefs: typedef const int CInt; typedef CInt Self; Self.isConstQualified() currently returns false! Various bugs (e.g., PR5383) have cropped up all over the front end due to such problems. I'm addressing this problem by splitting each qualifier accessor into two versions: - the "local" version only returns qualifiers on this particular QualType instance - the "normal" version that will eventually combine qualifiers from this QualType instance with the qualifiers on the canonical type to produce the full set of qualifiers. This commit adds the local versions and switches a few callers from the "normal" version (e.g., isConstQualified) over to the "local" version (e.g., isLocalConstQualified) when that is the right thing to do, e.g., because we're printing or serializing the qualifiers. Also, switch a bunch of Context.getCanonicalType(T1).getUnqualifiedType() == Context.getCanonicalType(T2).getQualifiedType() expressions over to Context.hasSameUnqualifiedType(T1, T2) llvm-svn: 88969
-
Eli Friedman authored
more cases. No intended visible change. llvm-svn: 88968
-
Mike Stump authored
llvm-svn: 88966
-
Devang Patel authored
llvm-svn: 88965
-
Jim Grosbach authored
llvm-svn: 88964
-
Devang Patel authored
llvm-svn: 88963
-
Eli Friedman authored
llvm-svn: 88962
-
Jim Grosbach authored
llvm-svn: 88961
-
Sebastian Redl authored
Repair broken FindCompositePointerType. Correct early termination condition. Get CVR qualifiers from canonical types. Traverse collected qualifiers in reverse order on rebuilding the pointer, so that we don't swap inner and outer qualifiers. That last one fixes PR5509. llvm-svn: 88960
-
Dan Gohman authored
llvm-svn: 88959
-
Dan Gohman authored
llvm-svn: 88957
-
Dan Gohman authored
llvm-svn: 88956
-
Dan Gohman authored
FixedStackPseudoSourceValueVal, to respect this isa relationship. llvm-svn: 88954
-
Dan Gohman authored
llvm-svn: 88953
-
Eli Friedman authored
llvm-svn: 88952
-
Devang Patel authored
llvm-svn: 88951
-
Ted Kremenek authored
llvm-svn: 88949
-
Jim Grosbach authored
llvm-svn: 88947
-
Lang Hames authored
llvm-svn: 88946
-
Rafael Espindola authored
llvm-svn: 88945
-
Mike Stump authored
llvm-svn: 88944
-
Rafael Espindola authored
llvm-svn: 88943
-
Jim Grosbach authored
llvm-svn: 88942
-
Mike Stump authored
llvm-svn: 88941
-
Bob Wilson authored
llvm-svn: 88940
-
Devang Patel authored
llvm-svn: 88939
-
Eli Friedman authored
treat it as a unary operator. llvm-svn: 88938
-