a468ae02cb 
								
							 
						 
						
							
							
								
								Simplify EvaluateAsAbsolute now that EvaluateAsRelocatableImpl does all  
							
							... 
							
							
							
							the folding it can.
llvm-svn: 122359 
							
						 
						
							2010-12-21 20:51:42 +00:00  
				
					
						
							
							
								 
						
							
								ee54636f0a 
								
							 
						 
						
							
							
								
								Fixed version of 122160 (the previous one would fold undefined symbols).  
							
							... 
							
							
							
							llvm-svn: 122167 
							
						 
						
							2010-12-19 04:18:56 +00:00  
				
					
						
							
							
								 
						
							
								9a2d4e04c7 
								
							 
						 
						
							
							
								
								Revert 122160 while I debug it.  
							
							... 
							
							
							
							llvm-svn: 122165 
							
						 
						
							2010-12-19 03:22:05 +00:00  
				
					
						
							
							
								 
						
							
								6fd80a5593 
								
							 
						 
						
							
							
								
								Move all folding to AttemptToFoldSymbolOffsetDifference.  
							
							... 
							
							
							
							llvm-svn: 122160 
							
						 
						
							2010-12-19 02:15:04 +00:00  
				
					
						
							
							
								 
						
							
								b403e098a1 
								
							 
						 
						
							
							
								
								Merge isAbsolute into IsSymbolRefDifferenceFullyResolved.  
							
							... 
							
							
							
							llvm-svn: 122148 
							
						 
						
							2010-12-18 06:27:54 +00:00  
				
					
						
							
							
								 
						
							
								8396dd0893 
								
							 
						 
						
							
							
								
								Remove the MCObjectFormat class.  
							
							... 
							
							
							
							llvm-svn: 122147 
							
						 
						
							2010-12-18 05:37:28 +00:00  
				
					
						
							
							
								 
						
							
								293a7c1840 
								
							 
						 
						
							
							
								
								Add a FIXME and explain a hack.  
							
							... 
							
							
							
							llvm-svn: 122144 
							
						 
						
							2010-12-18 04:19:20 +00:00  
				
					
						
							
							
								 
						
							
								1ea7f18caa 
								
							 
						 
						
							
							
								
								Fix the note.  
							
							... 
							
							
							
							llvm-svn: 122139 
							
						 
						
							2010-12-18 04:01:45 +00:00  
				
					
						
							
							
								 
						
							
								5004f4a9b5 
								
							 
						 
						
							
							
								
								Revert 122011, 122012, 122013, 122023 adding back an important optimization.  
							
							... 
							
							
							
							I added a note, but suggestions on how to add a test are really welcome.
llvm-svn: 122138 
							
						 
						
							2010-12-18 03:57:21 +00:00  
				
					
						
							
							
								 
						
							
								137d422e50 
								
							 
						 
						
							
							
								
								MC/Expr: Implemnt more aggressive folding during symbol evaluation using  
							
							... 
							
							
							
							IsSymbolRefDifferenceFullyResolved(). For example, we will now fold away
something like:
--
_a:
...
L0:
...
L1:
...
.long (L1 - L0) / 2
--
llvm-svn: 122043 
							
						 
						
							2010-12-17 05:50:33 +00:00  
				
					
						
							
							
								 
						
							
								e491ea4630 
								
							 
						 
						
							
							
								
								MC/Expr: Simplify.  
							
							... 
							
							
							
							llvm-svn: 122023 
							
						 
						
							2010-12-17 02:05:45 +00:00  
				
					
						
							
							
								 
						
							
								f89156da92 
								
							 
						 
						
							
							
								
								MC: Remove another dead MCAssembler argument, and update clients.  
							
							... 
							
							
							
							llvm-svn: 122013 
							
						 
						
							2010-12-17 01:07:35 +00:00  
				
					
						
							
							
								 
						
							
								f15aeb8d01 
								
							 
						 
						
							
							
								
								MC: Remove dead MCAssembler argument -- Rafael, can you check the FIXME I added  
							
							... 
							
							
							
							here?
llvm-svn: 122012 
							
						 
						
							2010-12-17 01:07:31 +00:00  
				
					
						
							
							
								 
						
							
								9af1335b5d 
								
							 
						 
						
							
							
								
								MC: Simplify (remove unnecessary MCAssembler argument, obsoleted by containment  
							
							... 
							
							
							
							in MCAsmLayout).
llvm-svn: 122011 
							
						 
						
							2010-12-17 01:07:28 +00:00  
				
					
						
							
							
								 
						
							
								33d571e2ae 
								
							 
						 
						
							
							
								
								Write => in a more normal form.  
							
							... 
							
							
							
							llvm-svn: 122009 
							
						 
						
							2010-12-17 01:07:22 +00:00  
				
					
						
							
							
								 
						
							
								76793bac89 
								
							 
						 
						
							
							
								
								MC/Expr: Simplify (and add a FIXME).  
							
							... 
							
							
							
							llvm-svn: 122008 
							
						 
						
							2010-12-17 01:07:20 +00:00  
				
					
						
							
							
								 
						
							
								395a09922b 
								
							 
						 
						
							
							
								
								MC/Expr: Add a doxyment.  
							
							... 
							
							
							
							llvm-svn: 121988 
							
						 
						
							2010-12-16 18:36:25 +00:00  
				
					
						
							
							
								 
						
							
								93e3cf0ebd 
								
							 
						 
						
							
							
								
								Sorry for such a large commit. The summary is that only MachO cares about the  
							
							... 
							
							
							
							actuall addresses in a .o file, so it is better to let the MachO writer compute
it.
This is good for two reasons. First, areas that shouldn't care about
addresses now don't have access to it. Second, the layout of each section
is independent. I should use this in a subsequent commit to speed it up.
Most of the patch is just removing the section address computation. The two
interesting parts are the change on how we handle padding in the end
of sections and how MachO can get the address of a-b when a and b are in
different sections.
Since now the expression evaluation normally doesn't know the section address,
it will think that a-b needs relocation and let the MachO writer know. Once
it has computed the section addresses, it calls back the expression evaluation
with the section addresses to resolve these expressions.
The remaining problem is the handling of padding. Currently it will create
a special alignment fragment at the end. Since that fragment doesn't update
the alignment of the section, it needs the real address to be computed.
Since now the layout will not compute a-b with a and b in different sections,
the only effect that the special alignment fragment has is update the
address size of the section. This can also be done by the MachO writer.
llvm-svn: 121076 
							
						 
						
							2010-12-07 00:27:36 +00:00  
				
					
						
							
							
								 
						
							
								1055f72b97 
								
							 
						 
						
							
							
								
								Use references to simplify the code a bit.  
							
							... 
							
							
							
							llvm-svn: 121050 
							
						 
						
							2010-12-06 22:30:54 +00:00  
				
					
						
							
							
								 
						
							
								46e40188f7 
								
							 
						 
						
							
							
								
								Simplify a bit.  
							
							... 
							
							
							
							llvm-svn: 120980 
							
						 
						
							2010-12-06 03:36:43 +00:00  
				
					
						
							
							
								 
						
							
								57ab708bdd 
								
							 
						 
						
							
							
								
								Try to resolve symbol differences early, and if successful create a plain  
							
							... 
							
							
							
							data fragment. This reduces the time to assemble the test in 8711 from 60s to
54s.
llvm-svn: 120767 
							
						 
						
							2010-12-03 00:55:40 +00:00  
				
					
						
							
							
								 
						
							
								bf792065a9 
								
							 
						 
						
							
							
								
								Add a fast path to EvaluateSymbolicAdd. This avoids computing symbol addresses  
							
							... 
							
							
							
							which then avoids running EnsureValid.
This cuts the assembly time of the testcase in PR8711 from 2:50 minutes to 1
minute.
llvm-svn: 120697 
							
						 
						
							2010-12-02 07:53:12 +00:00  
				
					
						
							
							
								 
						
							
								d82684c7fc 
								
							 
						 
						
							
							
								
								Fix typo.  
							
							... 
							
							
							
							llvm-svn: 119542 
							
						 
						
							2010-11-17 19:30:11 +00:00  
				
					
						
							
							
								 
						
							
								8c3039b67b 
								
							 
						 
						
							
							
								
								Change MCExpr::EvaluateAsRelocatableImpl of variables to return the original  
							
							... 
							
							
							
							variable if recursing fails to simplify it.
Factor AliasedSymbol to be a method of MCSymbol.
Update MCAssembler::EvaluateFixup to match the change in
EvaluateAsRelocatableImpl.
Remove the WeakRefExpr hack, as the object writer now sees the weakref with
no extra effort needed.
Nothing else is using MCTargetExpr, but keep it for now.
Now that the ELF writer sees relocations with aliases, handle
    .weak    foo2
foo2:
    .weak    bar2
    .set    bar2,foo2
    .quad    bar2
the same way gas does and produce a relocation with bar2.
llvm-svn: 119152 
							
						 
						
							2010-11-15 16:33:49 +00:00  
				
					
						
							
							
								 
						
							
								edb9d84dcc 
								
							 
						 
						
							
							
								
								add targetoperand flags for jump tables, constant pool and block address  
							
							... 
							
							
							
							nodes to indicate when ha16/lo16 modifiers should be used.  This lets
us pass PowerPC/indirectbr.ll.
The one annoying thing about this patch is that the MCSymbolExpr isn't
expressive enough to represent ha16(label1-label2) which we need on
PowerPC.  I have a terrible hack in the meantime, but this will have
to be revisited at some point.
Last major conversion item left is global variable references.
llvm-svn: 119105 
							
						 
						
							2010-11-15 02:46:57 +00:00  
				
					
						
							
							
								 
						
							
								94f0c14cb0 
								
							 
						 
						
							
							
								
								reimplement ppc asmprinter "toc" handling to use a VariantKind  
							
							... 
							
							
							
							on the operand, required for .o file writing and fixing 
the PowerPC/mult-alt-generic-powerpc64.ll failure with the new
instprinter.
llvm-svn: 119087 
							
						 
						
							2010-11-14 22:22:59 +00:00  
				
					
						
							
							
								 
						
							
								f23b2d9d8d 
								
							 
						 
						
							
							
								
								Update ARMConstantPoolValue to not use a modifier string. Use an explicit  
							
							... 
							
							
							
							VariantKind marker to indicate the additional information necessary. Update
MC to handle the new Kinds. rdar://8647623
llvm-svn: 118671 
							
						 
						
							2010-11-10 03:26:07 +00:00  
				
					
						
							
							
								 
						
							
								2dbec3f762 
								
							 
						 
						
							
							
								
								Implement TLSLD.  
							
							... 
							
							
							
							llvm-svn: 117547 
							
						 
						
							2010-10-28 15:02:40 +00:00  
				
					
						
							
							
								 
						
							
								e8f08be11c 
								
							 
						 
						
							
							
								
								Implement DTPOFF.  
							
							... 
							
							
							
							llvm-svn: 117546 
							
						 
						
							2010-10-28 14:48:59 +00:00  
				
					
						
							
							
								 
						
							
								6f23eb380d 
								
							 
						 
						
							
							
								
								Implement TLSLDM.  
							
							... 
							
							
							
							llvm-svn: 117544 
							
						 
						
							2010-10-28 14:37:09 +00:00  
				
					
						
							
							
								 
						
							
								b3b49bbc39 
								
							 
						 
						
							
							
								
								Implement VK_GOTNTPOFF and switch RelocNeedsGOT to use VariantKind.  
							
							... 
							
							
							
							llvm-svn: 117543 
							
						 
						
							2010-10-28 14:22:44 +00:00  
				
					
						
							
							
								 
						
							
								8ba86f801d 
								
							 
						 
						
							
							
								
								Do not recurse into symbol refs that have a variant kind. This prevents us  
							
							... 
							
							
							
							from losing the variant when producing a relocation on an alias.
llvm-svn: 117037 
							
						 
						
							2010-10-21 18:00:20 +00:00  
				
					
						
							
							
								 
						
							
								4262a22225 
								
							 
						 
						
							
							
								
								Add a MCObjectFormat class so that code common to all targets that use a  
							
							... 
							
							
							
							single object format can be shared.
This also adds support for
mov zed+(bar-foo), %eax
on ELF and COFF targets.
llvm-svn: 116675 
							
						 
						
							2010-10-16 18:23:53 +00:00  
				
					
						
							
							
								 
						
							
								dce906c77f 
								
							 
						 
						
							
							
								
								Changes EvaluateAsAbsolute() to return the "current value" of the expression  
							
							... 
							
							
							
							if we are given a Layout object, even in cases when the value is not fixed.
This will be needed by the final patch for the dwarf .loc support to size a
new MCDwarf fragment needed to build and emit dwarf line number tables.
llvm-svn: 115155 
							
						 
						
							2010-09-30 16:42:21 +00:00  
				
					
						
							
							
								 
						
							
								85dcd3d0f4 
								
							 
						 
						
							
							
								
								Add support for ELF PLT references for ARM MC asm printing. Adding a  
							
							... 
							
							
							
							new VariantKind to the MCSymbolExpr seems like overkill, but I'm not sure
there's a more straightforward way to get the printing difference captured.
(i.e., x86 uses @PLT, ARM uses (PLT)).
llvm-svn: 114613 
							
						 
						
							2010-09-22 23:27:36 +00:00  
				
					
						
							
							
								 
						
							
								41b4a6b36a 
								
							 
						 
						
							
							
								
								Convert some tab stops into spaces.  
							
							... 
							
							
							
							llvm-svn: 108130 
							
						 
						
							2010-07-12 08:16:59 +00:00  
				
					
						
							
							
								 
						
							
								e7b64dcc1e 
								
							 
						 
						
							
							
								
								Start adding mach-o tls reloc support.  
							
							... 
							
							
							
							llvm-svn: 104651 
							
						 
						
							2010-05-26 00:02:12 +00:00  
				
					
						
							
							
								 
						
							
								b69c7b76f1 
								
							 
						 
						
							
							
								
								Add support for movi32 of global values to the new (MC) asm printer.  
							
							... 
							
							
							
							llvm-svn: 103576 
							
						 
						
							2010-05-12 05:16:34 +00:00  
				
					
						
							
							
								 
						
							
								7a989da0af 
								
							 
						 
						
							
							
								
								MC: Rename MCSymbol::{g,s}etValue -> MCSymbol::{g,s}etVariableValue.  
							
							... 
							
							
							
							llvm-svn: 103095 
							
						 
						
							2010-05-05 17:41:00 +00:00  
				
					
						
							
							
								 
						
							
								9897043928 
								
							 
						 
						
							
							
								
								Rip out the 'is temporary' nonsense from the MCContext interface to  
							
							... 
							
							
							
							create symbols.  It is extremely error prone and a source of a lot
of the remaining integrated assembler bugs on x86-64.
This fixes rdar://7807601.
llvm-svn: 99902 
							
						 
						
							2010-03-30 18:10:53 +00:00  
				
					
						
							
							
								 
						
							
								5caf2ff561 
								
							 
						 
						
							
							
								
								MC: Fix refacto in MCExpr evaluation, I mistakenly replaced a fragment address with a symbol address.  
							
							... 
							
							
							
							- This fixes the integrated-as nightly test regressions.
llvm-svn: 99466 
							
						 
						
							2010-03-25 01:03:17 +00:00  
				
					
						
							
							
								 
						
							
								7c969558d9 
								
							 
						 
						
							
							
								
								MC: Direct all {fragment,section,symbol} address access through the MCAsmLayout object.  
							
							... 
							
							
							
							llvm-svn: 99380 
							
						 
						
							2010-03-24 03:43:40 +00:00  
				
					
						
							
							
								 
						
							
								5376c2a431 
								
							 
						 
						
							
							
								
								MC: Sprinkle in some more interesting statistics.  
							
							... 
							
							
							
							llvm-svn: 99350 
							
						 
						
							2010-03-23 23:47:14 +00:00  
				
					
						
							
							
								 
						
							
								5cfb58719d 
								
							 
						 
						
							
							
								
								llvm-mc: Fast path EvaluateAbsolute of constants.  
							
							... 
							
							
							
							llvm-svn: 99348 
							
						 
						
							2010-03-23 23:47:07 +00:00  
				
					
						
							
							
								 
						
							
								9c64ec0a7e 
								
							 
						 
						
							
							
								
								MCValue: Change to holding MCSymbolRefExprs instead of MCSymbols, we will need this for accessing to symbol modifiers.  
							
							... 
							
							
							
							llvm-svn: 98791 
							
						 
						
							2010-03-18 00:59:10 +00:00  
				
					
						
							
							
								 
						
							
								5599256415 
								
							 
						 
						
							
							
								
								MC: Allow modifiers in MCSymbolRefExpr, and eliminate X86MCTargetExpr.  
							
							... 
							
							
							
							- Although it would be nice to allow this decoupling, the assembler needs to be able to reason about MCSymbolRefExprs in too many places to make this viable. We can use a target specific encoding of the variant if this becomes an issue.
 - This patch also extends llvm-mc to support parsing of the modifiers, as opposed to lumping them in with the symbol.
llvm-svn: 98592 
							
						 
						
							2010-03-15 23:51:06 +00:00  
				
					
						
							
							
								 
						
							
								aa8f95eb56 
								
							 
						 
						
							
							
								
								MC: Fix a crash on invalid, attempting to evaluate undefined symbols.  
							
							... 
							
							
							
							llvm-svn: 98464 
							
						 
						
							2010-03-14 03:10:40 +00:00  
				
					
						
							
							
								 
						
							
								968b36a0bd 
								
							 
						 
						
							
							
								
								MC: Constify MCAsmLayout argument to MCExpr::EvaluteAs...  
							
							... 
							
							
							
							llvm-svn: 98380 
							
						 
						
							2010-03-12 21:00:45 +00:00  
				
					
						
							
							
								 
						
							
								5c5228a8f6 
								
							 
						 
						
							
							
								
								MC/Mach-O: Implement "absolutizing" semantics of .set, by evaluating the assembly time value of variables.  
							
							... 
							
							
							
							llvm-svn: 98241 
							
						 
						
							2010-03-11 05:53:37 +00:00  
				
					
						
							
							
								 
						
							
								ac8a95498a 
								
							 
						 
						
							
							
								
								MC: Sketch initial MCAsmLayout class, which encapsulates the current layout of an assembly file. The MCAsmLayout is also available for use by MCExpr::EvaluateAs{Absolute,Relocatable}, to allow target specific hooks and "absolutizing" of symbols.  
							
							... 
							
							
							
							llvm-svn: 98227 
							
						 
						
							2010-03-11 02:28:59 +00:00  
				
					
						
							
							
								 
						
							
								ac2361a9b0 
								
							 
						 
						
							
							
								
								set the temporary bit on MCSymbols correctly.  
							
							... 
							
							
							
							llvm-svn: 98124 
							
						 
						
							2010-03-10 02:25:11 +00:00  
				
					
						
							
							
								 
						
							
								9a9d9ea7bc 
								
							 
						 
						
							
							
								
								Document that MCExpr::Mod is actually remainder.  
							
							... 
							
							
							
							Document that MCExpr::Div, Mod, and the comparison operators are all
signed operators.
Document that the comparison operators' results are target-dependent.
Document that the behavior of shr is target-dependent.
llvm-svn: 95619 
							
						 
						
							2010-02-08 23:58:47 +00:00  
				
					
						
							
							
								 
						
							
								54d88f1759 
								
							 
						 
						
							
							
								
								don't make hte dtor private or we can't construct the class.  
							
							... 
							
							
							
							llvm-svn: 95587 
							
						 
						
							2010-02-08 22:07:36 +00:00  
				
					
						
							
							
								 
						
							
								38d022efe9 
								
							 
						 
						
							
							
								
								add scaffolding for target-specific MCExprs.  
							
							... 
							
							
							
							llvm-svn: 95559 
							
						 
						
							2010-02-08 19:41:07 +00:00  
				
					
						
							
							
								 
						
							
								c8f7717808 
								
							 
						 
						
							
							
								
								remove the MAI argument to MCExpr::print and switch overthing to use << when printing them.  
							
							... 
							
							
							
							llvm-svn: 93699 
							
						 
						
							2010-01-18 00:37:40 +00:00  
				
					
						
							
							
								 
						
							
								8b5d55ed06 
								
							 
						 
						
							
							
								
								now that MCSymbol::print doesn't use it's MAI argument, we can  
							
							... 
							
							
							
							remove it and change all the code that prints MCSymbols to use 
<< instead, which is much simpler and cleaner.
llvm-svn: 93695 
							
						 
						
							2010-01-17 21:43:43 +00:00  
				
					
						
							
							
								 
						
							
								a8cbfb8acc 
								
							 
						 
						
							
							
								
								Change errs() to dbgs().  
							
							... 
							
							
							
							llvm-svn: 92630 
							
						 
						
							2010-01-05 01:28:07 +00:00  
				
					
						
							
							
								 
						
							
								ad36e8aceb 
								
							 
						 
						
							
							
								
								Pass StringRef by value.  
							
							... 
							
							
							
							llvm-svn: 86251 
							
						 
						
							2009-11-06 10:58:06 +00:00  
				
					
						
							
							
								 
						
							
								c3bd60e393 
								
							 
						 
						
							
							
								
								MC: Remove unneeded context argument to MCExpr::Evaluate*.  
							
							... 
							
							
							
							llvm-svn: 84233 
							
						 
						
							2009-10-16 01:57:52 +00:00  
				
					
						
							
							
								 
						
							
								17b9027b5c 
								
							 
						 
						
							
							
								
								MC: Move assembler variable values from MCContext to MCSymbol.  
							
							... 
							
							
							
							llvm-svn: 84229 
							
						 
						
							2009-10-16 01:33:57 +00:00  
				
					
						
							
							
								 
						
							
								584a1b25ef 
								
							 
						 
						
							
							
								
								MC: Switch MCContext value table to storing MCExprs.  
							
							... 
							
							
							
							llvm-svn: 84228 
							
						 
						
							2009-10-16 01:33:11 +00:00  
				
					
						
							
							
								 
						
							
								6a833f6806 
								
							 
						 
						
							
							
								
								add a helper method for creating MCSymbol and MCSymbolRefExpr at  
							
							... 
							
							
							
							the same time.
llvm-svn: 81984 
							
						 
						
							2009-09-16 01:26:31 +00:00  
				
					
						
							
							
								 
						
							
								22833a3cd6 
								
							 
						 
						
							
							
								
								parenthesize symbol names that start with $, fixing X86/dollar-name.ll with  
							
							... 
							
							
							
							the new asmprinter.
llvm-svn: 81269 
							
						 
						
							2009-09-08 23:20:50 +00:00  
				
					
						
							
							
								 
						
							
								7975b8fc32 
								
							 
						 
						
							
							
								
								Print "X-42" instead of "X+-42".  
							
							... 
							
							
							
							llvm-svn: 81203 
							
						 
						
							2009-09-08 06:37:35 +00:00  
				
					
						
							
							
								 
						
							
								3cfc551f6e 
								
							 
						 
						
							
							
								
								make formatting of expressions more closely match the existing asmprinter.  
							
							... 
							
							
							
							llvm-svn: 81202 
							
						 
						
							2009-09-08 06:34:07 +00:00  
				
					
						
							
							
								 
						
							
								a0020be758 
								
							 
						 
						
							
							
								
								tidy whitespace.  
							
							... 
							
							
							
							llvm-svn: 81201 
							
						 
						
							2009-09-08 06:27:48 +00:00  
				
					
						
							
							
								 
						
							
								f4366a3998 
								
							 
						 
						
							
							
								
								Thread an MCAsmInfo pointer through the various MC printing APIs,  
							
							... 
							
							
							
							and fix a few things using << on MCSymbols to use ->print(). No
functionality change other than unbreaking my previous patch.
llvm-svn: 80890 
							
						 
						
							2009-09-03 05:46:51 +00:00  
				
					
						
							
							
								 
						
							
								b34a2b9da1 
								
							 
						 
						
							
							
								
								llvm-mc: Add MCExpr::{dump,print}.  
							
							... 
							
							
							
							llvm-svn: 80570 
							
						 
						
							2009-08-31 08:07:33 +00:00  
				
					
						
							
							
								 
						
							
								f363645da2 
								
							 
						 
						
							
							
								
								llvm-mc: Switch MCExpr construction to using static member functions, and taking the MCContext (which now owns all MCExprs).  
							
							... 
							
							
							
							llvm-svn: 80569 
							
						 
						
							2009-08-31 08:07:22 +00:00  
				
					
						
							
							
								 
						
							
								115e4d6d7b 
								
							 
						 
						
							
							
								
								llvm-mc: Move AsmExpr into MC lib (as MCExpr).  
							
							... 
							
							
							
							llvm-svn: 80567 
							
						 
						
							2009-08-31 08:06:59 +00:00