- Feb 13, 2016
-
-
Sean Callanan authored
Since IRExecutionUnit is now capable of looking up symbols, and the JIT is up to the task of generating the appropriate relocations, we don't need to do all the work that IRForTarget used to do to fixup symbols at the IR level. We also don't need to allocate data manually (with its attendant bugs) because the JIT is capable of doing so without crashing. We also don't need the awkward lldb.call.realName metadata to determine what calls are objc_msgSend, because they now just reference objc_msgSend. To make this work, we ensure that we recognize which symbols are extern "C" and report them to the compiler as such. We also report the full Decl of functions rather than just making up top-level functions with the appropriate types. This should not break any testcases, but let me know if you run into any issues. <rdar://problem/22864926> llvm-svn: 260768
-
Sean Callanan authored
Previously we would try both versions of a symbol -- the one with _ in it and the one without -- in all cases, because we didn't know what the current platform's policy was. However, stripping _ is only necessary on platforms where _ is the prefix for global symbols. There's an API that does this, though, on llvm::DataLayout, so this patch fixes IRExecutionUnit to use that API to determine whether or not to strip _ from the symbol or not. llvm-svn: 260767
-
Alexey Samsonov authored
llvm-svn: 260766
-
Tom Stellard authored
Reviewers: arsenm Subscribers: mareko, MatzeB, qcolombet, arsenm, llvm-commits Differential Revision: http://reviews.llvm.org/D16603 llvm-svn: 260765
-
Yunzhong Gao authored
Differential Revision: http://reviews.llvm.org/D16837 llvm-svn: 260764
-
Justin Bogner authored
- Remove a comment that was clearly copy pasted from Android.cmake and isn't relevant. - Remove the toolchain's sensitivity to the environment. It's less error prone to just allow users to set CMAKE_OSX_SYSROOT if they want to use a custom SDK. - Stop explicitly setting -mios-version-min to the default value. It just adds needless complexity. This makes building the native tablegen work for me even when SDKROOT is set in the environment (or passed in as -DCMAKE_OSX_SYSROOT). llvm-svn: 260763
-
Argyrios Kyrtzidis authored
llvm-svn: 260762
-
Enrico Granata authored
llvm-svn: 260761
-
Argyrios Kyrtzidis authored
[libclang] Separate the underlying indexing functionality of libclang and introduce it into the clangIndex library. It is a general goodness for libclang itself to mostly be a wrapper of functionality provided by the libraries. llvm-svn: 260760
-
Derek Schuff authored
ops. Computed gotos and RETURNADDR may never be supported; we can do FRAMEADDR in the future. llvm-svn: 260759
-
Krzysztof Parzyszek authored
Replace spills to memory with spills to registers, if possible. This applies mostly to predicate registers (both scalar and vector), since they are very limited in number. A spill of a predicate register may happen even if there is a general-purpose register available. In cases like this the stack spill/reload may be eliminated completely. This optimization will consider all stack objects, regardless of where they came from and try to match the live range of the stack slot with a dead range of a register from an appropriate register class. llvm-svn: 260758
-
Eugene Zelenko authored
Differential revision: http://reviews.llvm.org/D17218 llvm-svn: 260757
-
Tim Northover authored
Recent refactoring meant it only got passed down when explicitly specified, which breaks header search on Darwin. llvm-svn: 260755
-
David Majnemer authored
We can decode a little bit of the first stream now. llvm-svn: 260754
-
Krzysztof Parzyszek authored
llvm-svn: 260753
-
Enrico Granata authored
On libc++ std::atomic is a fairly simple data type (layout wise, at least), wrapping actual contents in a member variable named "__a_" All the formatters are doing is "peel away" this intermediate layer and exposing user data as direct children or values of the std::atomic root variable Fixes rdar://24329405 llvm-svn: 260752
-
Sanjay Patel authored
llvm-svn: 260751
-
Derek Schuff authored
llvm-svn: 260750
-
Evgeniy Stepanov authored
llvm-svn: 260749
-
Krzysztof Parzyszek authored
llvm-svn: 260748
-
Sean Callanan authored
Currently CountDeclLevels uses the ASTs which have no distinction between separate translation units. If one .o file has a "using" declaration at translation unit level, that "using" declaration will be in the same translation unit as functions from other .o files in the same module. This leads to erroneous name conflicts as the CountDeclLevels-based function filtering logic accepts too many fucntions. In the future we will identify the translation units for top-level Decls more reliably and restore that functionality. There's a TODO to that effect in the code. llvm-svn: 260747
-
Reid Kleckner authored
llvm-svn: 260746
-
Rui Ueyama authored
Each rule in SECTIONS commands is something like ".foo *(.baz.*)", which instructs the linker to collect all sections whose name matches ".baz.*" from all files and put them into .foo section. Previously, we didn't recognize the wildcard character. This patch adds that feature. Performance impact is a bit concerning because a linker script can contain hundreds of SECTIONS rules, and doing pattern matching against each rule would be too expensive. We could merge all patterns into single DFA so that it takes O(n) to the input size. However, it is probably too much at this moment -- we don't know whether the performance of pattern matching matters or not. So I chose to implement the simplest algorithm in this patch. I hope this simple pattern matcher is sufficient. llvm-svn: 260745
-
Chris Bieneman authored
llvm-svn: 260744
-
Rafael Espindola authored
llvm-svn: 260743
-
Chris Bieneman authored
Summary: This commit re-lands r259862. The underlying cause of the build breakage was an incorrectly written capabilities test. In tools/Driver/CMakeLists.txt I was attempting to check if a linker flag worked, the test was passing it to the compiler, not the linker. CMake doesn't have a linker test, so we have a hand-rolled one. Original Patch Review: http://reviews.llvm.org/D16896 Original Summary: With this change generating clang order files using dtrace uses the following workflow: cmake <whatever options you want> ninja generate-order-file ninja clang This patch works by setting a default path to the order file (which can be overridden by the user). If the order file doesn't exist during configuration CMake will create an empty one. CMake then ties up the dependencies between the clang link job and the order file, and generate-order-file overwrites CLANG_ORDER_FILE with the new order file. Reviewers: bogner Subscribers: cfe-commits Differential Revision: http://reviews.llvm.org/D16999 llvm-svn: 260742
-
Rong Xu authored
Add another interface to function annotateValueSite() which directly uses the VauleData array. Differential Revision: http://reviews.llvm.org/D17108 llvm-svn: 260741
-
Dan Gohman authored
llvm-svn: 260740
-
Chad Rosier authored
This should have landed in r260686. llvm-svn: 260739
-
Dan Gohman authored
llvm-svn: 260737
-
Rafael Espindola authored
llvm-svn: 260736
-
Sean Callanan authored
If an instruction has a constant that IRInterpreter doesn't know how to deal with (say, an array constant, because we can't materialize it to APInt) then we used to ignore that and only fail during expression execution. This is annoying because if IRInterpreter had just returned false from CanInterpret(), the JIT would have been used. Now the IRInterpreter checks constants as part of CanInterpret(), so this should hopefully no longer be an issue. llvm-svn: 260735
-
Sean Callanan authored
I'm preparing to remove symbol lookup from IRForTarget, where it constitutes a dreadful hack working around no-longer-existing JIT bugs. Thanks to our contributors, IRForTarget has a lot of smarts that IRExecutionUnit doesn't have, so I've cleaned them up a bit and moved them over to IRExecutionUnit. Also for historical reasons, IRExecutionUnit used the "Small" code model on non- ELF platforms (namely, OS X). That's no longer necessary, and we can use the same code model as everyone else on OS X. I've fixed that. llvm-svn: 260734
-
Andrew Kaylor authored
Differential Revision: http://reviews.llvm.org/D17208 llvm-svn: 260733
-
Chad Rosier authored
Last part of PR25166. llvm-svn: 260732
-
Justin Lebar authored
llvm-svn: 260731
-
Justin Lebar authored
Summary: Performing this optimization duplicates the call to the convergent function and adds new control-flow dependencies, which is a no-no. Reviewers: jingyue Subscribers: broune, hfinkel, tra, resistor, joker.eph, arsenm, llvm-commits, mzolotukhin Differential Revision: http://reviews.llvm.org/D17128 llvm-svn: 260730
-
Justin Lebar authored
Summary: Calls to convergent functions can be duplicated, but only if the duplicates are not control-flow dependent on any additional values. Loop rotation doesn't meet the bar. Reviewers: jingyue Subscribers: mzolotukhin, llvm-commits, arsenm, joker.eph, resistor, tra, hfinkel, broune Differential Revision: http://reviews.llvm.org/D17127 llvm-svn: 260729
-
Justin Lebar authored
Summary: No functional changes. Reviewers: jingyue, arsenm Subscribers: arsenm, llvm-commits Differential Revision: http://reviews.llvm.org/D17126 llvm-svn: 260728
-
Justin Lebar authored
Summary: No functional changes. Reviewers: jingyue Subscribers: llvm-commits Differential Revision: http://reviews.llvm.org/D17125 llvm-svn: 260727
-