- Aug 07, 2013
-
-
Tom Stellard authored
llvm-svn: 187834
-
Akira Hatanaka authored
llvm-svn: 187832
-
Tom Stellard authored
Since the VSrc_* register classes contain both VGPRs and SGPRs, copies that used be emitted by isel like this: SGPR = COPY VGPR Will now be emitted like this: VSrC = COPY VGPR This patch also adds a pass that tries to identify and fix situations where a VGPR to SGPR copy may occur. Hopefully, these changes will make it impossible for the compiler to generate illegal VGPR to SGPR copies. llvm-svn: 187831
-
Tom Stellard authored
Also factor out the register class lookup to its own function. llvm-svn: 187830
-
Justin Holewinski authored
[NVPTX] We dont have any target specific flags yet for generating symbol references, so get rid of the default-only switch statement. Fixes an MSVC warning. llvm-svn: 187829
-
Akira Hatanaka authored
instructions defined in MipsInstrInfo.td as codegen-only instructions. llvm-svn: 187828
-
Bill Wendling authored
The globals being generated here were given the 'private' linkage type. However, this caused them to end up in different sections with the wrong prefix. E.g., they would be in the __TEXT,__const section with an 'L' prefix instead of an 'l' (lowercase ell) prefix. The problem is that the linker will eat a literal label with 'L'. If a weak symbol is then placed into the __TEXT,__const section near that literal, then it cannot distinguish between the literal and the weak symbol. Part of the problems here was introduced because the address sanitizer converted some C strings into constant initializers with trailing nuls. (Thus putting them in the __const section with the wrong prefix.) The others were variables that the address sanitizer created but simply had the wrong linkage type. llvm-svn: 187827
-
Reid Kleckner authored
LLVM's coding standards recommend raw_ostream and MemoryBuffer for reading and writing text. This has the side effect of allowing clang to compile more of Support and TableGen in the Microsoft C++ ABI. llvm-svn: 187826
-
Arnold Schwaighofer authored
Patch by Marc Jessome! llvm-svn: 187825
-
Akira Hatanaka authored
EmitAlias flag and have MipsInstPrinter::printAlias print the aliases. llvm-svn: 187824
-
Akira Hatanaka authored
unnecessary jalr InstAliases in Mips64InstrInfo.td and add the code to print jalr InstAliases in MipsInstPrinter::printAlias. llvm-svn: 187821
-
- Aug 06, 2013
-
-
Shuxin Yang authored
llvm-svn: 187819
-
Reid Kleckner authored
Clang does not provide BitScan* intrinsic implementations yet. llvm-svn: 187813
-
Manman Ren authored
Also remove checking of llvm.dbg.sp since it is not used in generating dwarf. Current state of Finder: DebugInfoFinder tries to list all debug info MDNodes used in a module. To list debug info MDNodes used by an instruction, DebugInfoFinder provides processDeclare, processValue and processLocation to handle DbgDeclareInst, DbgValueInst and DbgLoc attached to instructions. processModule will go through all DICompileUnits in llvm.dbg.cu and list debug info MDNodes used by the CUs. TODO: 1> Finder has a list of CUs, SPs, Types, Scopes and global variables. We need to add a list of variables that are used by DbgDeclareInst and DbgValueInst. 2> MDString fields should be null or isa<MDString> and MDNode fields should be null or isa<MDNode>. We currently use empty string or int 0 to represent null. 3> Go though Verify functions and make sure that they check field types. 4> Clean up existing testing cases to remove llvm.dbg.sp and make sure each testing case has a llvm.dbg.cu. Re-apply r187609 with fix to pass ocaml binding. vmcore.ml generates a debug location with scope being metadata !{}, in verifier we treat this as a null scope. llvm-svn: 187812
-
Sean Silva authored
No content change. Patch by Andrea Di Biagio! llvm-svn: 187811
-
Jakub Staszak authored
llvm-svn: 187808
-
Hal Finkel authored
The PPC backend had been missing a pattern to generate mulli for 64-bit multiples. We had been generating it only for 32-bit multiplies. Unfortunately, generating li + mulld unnecessarily increases register pressure. llvm-svn: 187807
-
Jakub Staszak authored
llvm-svn: 187806
-
Mihai Popa authored
as pldw does not have a literal variant (i.e. pc relative version) llvm-svn: 187804
-
Mihai Popa authored
llvm-svn: 187803
-
Justin Holewinski authored
llvm-svn: 187800
-
Justin Holewinski authored
We do use a very small set of physical registers, so account for them in the virtual register encoding between MachineInstr and MC llvm-svn: 187799
-
Justin Holewinski authored
This change converts the NVPTX target to use the MC infrastructure instead of directly emitting MachineInstr instances. This brings the target more up-to-date with LLVM TOT, and should fix PR15175 and PR15958 (libNVPTXInstPrinter is empty) as a side-effect. llvm-svn: 187798
-
Tim Northover authored
Now that it's in place, it seems silly not to let ARM make use of the extra tail call opportunities. llvm-svn: 187795
-
Rafael Espindola authored
Thanks to Bill Wendling for the reminder. llvm-svn: 187794
-
Tim Northover authored
Patch by Edward-san. llvm-svn: 187793
-
Alexey Samsonov authored
Store compile unit corresponding to each chain of inlined debug info entries. No functionality change. llvm-svn: 187792
-
Elena Demikhovsky authored
fix for: Bug 16694 - ExecutionEngine/test-interp-vec-loadstore.ll failing on powerpc-darwin8 (http://llvm.org/bugs/show_bug.cgi?id=16694) The ExecutionEngine/test-interp-vec-loadstore.ll test has been failing on powerpc-darwin8 (on other platforms it passed) the reason of fail was wrong output by printf. this output is checked by FileCheck, but on little-endian powerpc the output numeric data were printed inside out and FileCheck reported fail. the printfs have been replaced by checking data inside test and numeric output has been replaced by the text output like : "int test passed, float test passed". The text output is checked by FileCheck. the dependency on data layout has been removed. done by Yuri Veselov (Intel) llvm-svn: 187791
-
Alexey Samsonov authored
llvm-svn: 187790
-
Tim Northover authored
This change came about primarily because of two issues in the existing code. Niether of: define i64 @test1(i64 %val) { %in = trunc i64 %val to i32 tail call i32 @ret32(i32 returned %in) ret i64 %val } define i64 @test2(i64 %val) { tail call i32 @ret32(i32 returned undef) ret i32 42 } should be tail calls, and the function sameNoopInput is responsible. The main problem is that it is completely symmetric in the "tail call" and "ret" value, but in reality different things are allowed on each side. For these cases: 1. Any truncation should lead to a larger value being generated by "tail call" than needed by "ret". 2. Undef should only be allowed as a source for ret, not as a result of the call. Along the way I noticed that a mismatch between what this function treats as a valid truncation and what the backends see can lead to invalid calls as well (see x86-32 test case). This patch refactors the code so that instead of being based primarily on values which it recurses into when necessary, it starts by inspecting the type and considers each fundamental slot that the backend will see in turn. For example, given a pathological function that returned {{}, {{}, i32, {}}, i32} we would consider each "real" i32 in turn, and ask if it passes through unchanged. This is much closer to what the backend sees as a result of ComputeValueVTs. Aside from the bug fixes, this eliminates the recursion that's going on and, I believe, makes the bulk of the code significantly easier to understand. The trade-off is the nasty iterators needed to find the real types inside a returned value. llvm-svn: 187787
-
Serge Pavlov authored
llvm-svn: 187786
-
Craig Topper authored
llvm-svn: 187783
-
Craig Topper authored
llvm-svn: 187781
-
NAKAMURA Takumi authored
Target/*/CMakeLists.txt: Add the dependency to CommonTableGen explicitly for each corresponding CodeGen. Without explicit dependencies, both per-file action and in-CommonTableGen action could run in parallel. It races to emit *.inc files simultaneously. llvm-svn: 187780
-
Craig Topper authored
llvm-svn: 187779
-
NAKAMURA Takumi authored
llvm-svn: 187778
-
NAKAMURA Takumi authored
llvm-svn: 187777
-
Craig Topper authored
Put an llvm_unreachable at the end of getSplatIndex as its loop should never find all undef elements. llvm-svn: 187775
-
Craig Topper authored
Check against >= 0 instead of != -1 in getSplatIndex because it generally compiles to better code and is equivalent for shuffle indices. llvm-svn: 187774
-
Craig Topper authored
llvm-svn: 187773
-