| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The IR
@foo = private constant i32 42
is valid, but before this patch we would produce an invalid MachO from it. It
was invalid because it would use an L label in a section where the liker needs
the labels in order to atomize it.
One way of fixing it would be to just reject this IR in the backend, but that
would not be very front end friendly.
What this patch does is use an 'l' prefix in sections that we know the linker
requires symbols for atomizing them. This allows frontends to just use
private and not worry about which sections they go to or how the linker handles
them.
One small issue with this strategy is that now a symbol name depends on the
section, which is not available before codegen. This is not a problem in
practice. The reason is that it only happens with private linkage, which will
be ignored by the non codegen users (llvm-nm and llvm-ar).
llvm-svn: 201608
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
hasRawTextSupport() call
Summary:
AsmPrinter::EmitInlineAsm() will no longer use the EmitRawText() call for
targets with mature MC support. Such targets will always parse the inline
assembly (even when emitting assembly). Targets without mature MC support
continue to use EmitRawText() for assembly output.
The hasRawTextSupport() check in AsmPrinter::EmitInlineAsm() has been replaced
with MCAsmInfo::UseIntegratedAs which when true, causes the integrated assembler
to parse inline assembly (even when emitting assembly output). UseIntegratedAs
is set to true for targets that consider any failure to parse valid assembly
to be a bug. Target specific subclasses generally enable the integrated
assembler in their constructor. The default value can be overridden with
-no-integrated-as.
All tests that rely on inline assembly supporting invalid assembly (for example,
those that use mnemonics such as 'foo' or 'hello world') have been updated to
disable the integrated assembler.
Changes since review (and last commit attempt):
- Fixed test failures that were missed due to configuration of local build.
(fixes crash.ll and a couple others).
- Fixed tests that happened to pass because the local build was on X86
(should fix 2007-12-17-InvokeAsm.ll)
- mature-mc-support.ll's should no longer require all targets to be compiled.
(should fix ARM and PPC buildbots)
- Object output (-filetype=obj and similar) now forces the integrated assembler
to be enabled regardless of default setting or -no-integrated-as.
(should fix SystemZ buildbots)
Reviewers: rafael
Reviewed By: rafael
CC: llvm-commits
Differential Revision: http://llvm-reviews.chandlerc.com/D2686
llvm-svn: 201333
|
| |
|
|
|
|
|
|
| |
AsmPrinter::EmitInlineAsm() and remove hasRawTextSupport() call
It introduced multiple test failures in the buildbots.
llvm-svn: 201241
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
hasRawTextSupport() call
Summary:
AsmPrinter::EmitInlineAsm() will no longer use the EmitRawText() call for targets with mature MC support. Such targets will always parse the inline assembly (even when emitting assembly). Targets without mature MC support continue to use EmitRawText() for assembly output.
The hasRawTextSupport() check in AsmPrinter::EmitInlineAsm() has been replaced with MCAsmInfo::UseIntegratedAs which when true, causes the integrated assembler to parse inline assembly (even when emitting assembly output). UseIntegratedAs is set to true for targets that consider any failure to parse valid assembly to be a bug. Target specific subclasses generally enable the integrated assembler in their constructor. The default value can be overridden with -no-integrated-as.
All tests that rely on inline assembly supporting invalid assembly (for example, those that use mnemonics such as 'foo' or 'hello world') have been updated to disable the integrated assembler.
Reviewers: rafael
Reviewed By: rafael
CC: llvm-commits
Differential Revision: http://llvm-reviews.chandlerc.com/D2686
llvm-svn: 201237
|
| |
|
|
|
|
|
|
|
| |
These methods normally call each other and it is really annoying if the
arguments are in different order. The more common rule was that the arguments
specific to call are first (GV, Encoding, Suffix) and the auxiliary objects
(Mang, TM) come after. This patch changes the exceptions.
llvm-svn: 201044
|
| |
|
|
|
|
|
| |
It is never null and it is not used in casts, so there is no reason to use a
pointer. This matches how we pass TM.
llvm-svn: 201025
|
| |
|
|
| |
llvm-svn: 201022
|
| |
|
|
| |
llvm-svn: 200965
|
| |
|
|
|
|
| |
parsing CAS instructions to test the CAS encoding.
llvm-svn: 200963
|
| |
|
|
|
|
| |
assembler is used.
llvm-svn: 200962
|
| |
|
|
| |
llvm-svn: 200961
|
| |
|
|
| |
llvm-svn: 200960
|
| |
|
|
| |
llvm-svn: 200890
|
| |
|
|
|
|
| |
Clang itself was not using this. The only way to access it was via llc.
llvm-svn: 200862
|
| |
|
|
|
|
| |
MCRegisterInfo. Also, add CFI instructions to initialize the frame correctly.
llvm-svn: 200617
|
| |
|
|
| |
llvm-svn: 200509
|
| |
|
|
|
|
|
|
| |
The SWAP instruction only exists in a 32-bit variant, but the 64-bit
atomic swap can be implemented in terms of CASX, like the other atomic
rmw primitives.
llvm-svn: 200453
|
| |
|
|
|
|
| |
This makes MCAsmInfo::getExprForFDESymbol() a virtual function and overrides it in SparcMCAsmInfo.
llvm-svn: 200376
|
| |
|
|
|
|
|
|
| |
Otherwise, assembler (gas) fails to assemble them with error message "operation
combines symbols in different segments". This is because MC computes
pc_rel entries with subtract expression between labels from different sections.
llvm-svn: 200373
|
| |
|
|
|
|
| |
_GLOBAL_OFFSET_TABLE_ in sparcv9.
llvm-svn: 200368
|
| |
|
|
|
|
| |
Oops. Don't do build tests on patches like that with --enable-targets=x86_64
llvm-svn: 200355
|
| |
|
|
| |
llvm-svn: 200349
|
| |
|
|
| |
llvm-svn: 200348
|
| |
|
|
| |
llvm-svn: 200345
|
| |
|
|
|
|
|
| |
Also emit the stubs that were generated for references to typeinfo
symbols.
llvm-svn: 200282
|
| |
|
|
| |
llvm-svn: 200141
|
| |
|
|
|
|
|
| |
With this the target streamers will be able to know the target features that
are in use.
llvm-svn: 200135
|
| |
|
|
|
|
|
| |
The popc instruction is defined in the SPARCv9 instruction set
architecture, but it was emulated on CPUs older than Niagara 2.
llvm-svn: 200131
|
| |
|
|
|
|
| |
Found by SingleSource/UnitTests/AtomicOps.c
llvm-svn: 200130
|
| |
|
|
|
|
|
|
|
|
| |
This has a few advantages:
* Only targets that use a MCTargetStreamer have to worry about it.
* There is never a MCTargetStreamer without a MCStreamer, so we can use a
reference.
* A MCTargetStreamer can talk to the MCStreamer in its constructor.
llvm-svn: 200129
|
| |
|
|
|
|
|
| |
Sweep the codebase for common typos. Includes some changes to visible function
names that were misspelt.
llvm-svn: 200018
|
| |
|
|
|
|
| |
With this change, all supported tests in test/ExecutionEngine pass in sparcv9.
llvm-svn: 199977
|
| |
|
|
|
|
| |
These all use the compare-and-swap CASA/CASXA instructions.
llvm-svn: 199975
|
| |
|
|
|
|
| |
Add test cases to check parsing of v9 double registers and their aliased quad registers.
llvm-svn: 199974
|
| |
|
|
|
|
|
| |
code this looks correct, but could use review. The previous
was definitely not correct.
llvm-svn: 199940
|
| |
|
|
|
|
| |
by their aliases.
llvm-svn: 199786
|
| |
|
|
| |
llvm-svn: 199781
|
| |
|
|
|
|
|
|
| |
absolute code.
Fixes PR#18521
llvm-svn: 199775
|
| |
|
|
|
|
|
|
|
|
| |
promotion code, Tablegen will now select FPExt for floating point promotions
(previously it had returned AExt, which is not valid for floating point types).
Any out-of-tree targets that were relying on AExt being returned for FP
promotions will need to update their code check for FPExt instead.
llvm-svn: 199252
|
| |
|
|
|
|
|
|
|
| |
This will allow it to be called from target independent parts of the main
streamer that don't know if there is a registered target streamer or not. This
in turn will allow targets to perform extra actions at specified points in the
interface: add extra flags for some labels, extra work during finalization, etc.
llvm-svn: 199174
|
| |
|
|
|
|
|
|
|
|
| |
Targets like SPARC and MIPS have delay slots and normally bundle the
delay slot instruction with the corresponding terminator.
Teach isBlockOnlyReachableByFallthrough to find any MBB operands on
bundled terminators so SPARC doesn't need to specialize this function.
llvm-svn: 199061
|
| |
|
|
| |
llvm-svn: 199033
|
| |
|
|
| |
llvm-svn: 199031
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This is different from the argument passing convention which puts the
first float argument in %f1.
With this patch, all returned floats are treated as if the 'inreg' flag
were set. This means multiple float return values get packed in %f0,
%f1, %f2, ...
Note that when returning a struct in registers, clang will set the
'inreg' flag on the return value, so that behavior is unchanged. This
also happens when returning a float _Complex.
llvm-svn: 199028
|
| |
|
|
| |
llvm-svn: 199024
|
| |
|
|
|
|
| |
-verify-machineinstrs with SPARC backend.
llvm-svn: 199014
|
| |
|
|
|
|
| |
readability of the assembly generated.
llvm-svn: 198910
|
| |
|
|
|
|
| |
jmp instructions as aliases to jmpl.
llvm-svn: 198909
|
| |
|
|
| |
llvm-svn: 198893
|
| |
|
|
|
|
| |
encode them correctly.
llvm-svn: 198740
|