d80e58b259c2febc4907aed4aca9d88d43bdd1a1 |
|
24-Jul-2017 |
David Gross <dgross@google.com> |
Improve Java reflection for 32-bit versus 64-bit differences. Bug: 32780232 Bug: 20260865 Bug: 21597073 By default, when targeting API L or above, we support both 32-bit and 64-bit targets. We do so by running two compilation passes -- a 32-bit compilation pass followed by a 64-bit compilation pass. We generate reflected Java code as part of the 64-bit compilation pass. This can cause problems if there are "significant" differences between the user's script (.rs file) as seen during 32-bit compilation compared to 64-bit compilation -- for example, rs object handles (such as rs_allocation and rs_element) are different sizes, the type size_t is a different size, and a user can create arbitrary differences by using the __LP64__ macro. If any of those differences affect reflected code (for example, by changing exported types), then we may get incorrect runtime behavior on 32-bit targets. At present we do have some special processing for rs object handles. However, we don't properly address all cases -- for example, when an rs object handle is a field of a struct or an argument to an invokable function, reflected code does not get the layout of the struct or argument list correct on 32-bit targets. We also make no attempt to address any other differences (such as size_t or __LP64__). This CL is intended to fully address 32-bit versus 64-bit reflection issues: 1) Fully handle rs object handle size differences when laying out data (such as structs and invokable function argument lists). 2) Emit errors for any other differences between 32-bit and 64-bit compilation that would require changes to reflected code (for example, no exported global may be of type size_t). We solve these problems as follows: a) As part of the 32-bit compilation pass, execute (most of) the same code paths we would use to generate reflected code, but instead of actually generating reflected code, collect information for later. b) When we generate reflected code as part of the 64-bit compilation pass, we consult the information collected during the 32-bit compilation pass in order to do target sensitive data layout and to emit errors for intolerable 32-bit versus 64-bit differences. This CL requires changes to the compatibility library (in frameworks/rs). Test: many - slang/lit-tests - slang/test - RsTest aosp_x86_64-eng (aosp, emulator) 32-bit and 64-bit - cts aosp_x86_64-eng (aosp, emulator) RenderScript and CtsRsCppTestCases - RSTestBackward - aosp_arm-eng - n9 LMP MR1 Release (LM) - angler MNC DR Release (MD) - aosp_arm64-eng - n9 LMP MR1 Release (LM) - angler MNC DR Release (MD) - RSTest_Backward19 - aosp_arm-eng - n5 KLP MR2 Release (KT) - n9 LMP MR1 Release (LM) - angler MNC DR Release (MD) - RSTest_CompatLib - aosp_arm-eng - n9 LMP MR1 Release (LM) - angler MNC DR Release (MD) - aosp_arm64-eng - n9 LMP MR1 Release (LM) - angler MNC DR Release (MD) - aosp_x86-eng - emulator aosp - aosp_x86_64-eng - emulator aosp - RSTest_Compat19 - aosp_arm-eng - n5 KLP MR2 Release (KT) - n9 LMP MR1 Release (LM) - angler MNC DR Release (MD) - aosp_x86 - emulator aosp Change-Id: I5d1fc51e35693588dff05afa48e1a4902859036e
/frameworks/compile/slang/slang.h
|
b6a143562bda2117824a0515c208504e9a2830f1 |
|
26-Jul-2016 |
Pirama Arumuga Nainar <pirama@google.com> |
Fix slang to compile with LLVM r275480 Bug: http://b/31320715 In addition to fixing compilation with the new LLVM sources, this change also switches to using LLVM's RenderScript triples. Clang also uses this triple to set the size and alignment of 'long' data type to 64-bits. We no longer need/have the '+long64' CPU feature. Test: Run RenderScript tests (host tests for slang and libbcc, RsTest, CTS) Change-Id: I3d2795bc0253a10d6fb36bfb0c28eb0c2e9a2922
/frameworks/compile/slang/slang.h
|
98cfae456bb1831336bce2b21979a04e2e31fed4 |
|
04-Mar-2016 |
Pirama Arumuga Nainar <pirama@google.com> |
Update slang for LLVM rebase to r256229 Bug: http://b/26987366 Change-Id: I816e6ad4a1d43d681f3d022d119e3082702251a1
/frameworks/compile/slang/slang.h
|
34e6205f1d5ceb90a73192cee8b215fa0b7ab306 |
|
05-Nov-2015 |
David Gross <dgross@google.com> |
Remove PragmaRecorder. The PragmaRecorder class was acting as a catch-all for pragmas not recognized by our collection of RS*PragmaHandler classes. It was doing nothing other than rudimentary syntax checking and permitting all pragmas to flow through the compilation process without clang flagging them as unrecognized under -Wall. Change-Id: I4a4c84c6e1114ac1e5454b3a06cf96e05c34a783
/frameworks/compile/slang/slang.h
|
460cb4bae3cd621fc8ce615a60d6b194d5532bc3 |
|
15-Aug-2015 |
Stephen Hines <srhines@google.com> |
Merge "Update Slang for LLVM rebase to r239765"
|
3fe4027f9acbc5047f8e7ca8f1575e3a6af76cf8 |
|
06-Aug-2015 |
David Gross <dgross@google.com> |
Merge "Enhance diagnostic options."
|
2770d0e31ef3b14cd51ca07273240ad0995dc5cd |
|
03-Aug-2015 |
David Gross <dgross@google.com> |
Enhance diagnostic options. - Support -m32/-m64 for non-cpp, if eng build. - Add -ast-print option. - Add options -debug, -print-before-all, -print-after-all (passthrough to LLVM). Change-Id: I609750bd49a624d74f91666ef3f8c77ef711ff32
/frameworks/compile/slang/slang.h
|
21c94c9b4cc3c139c0d2c08f81e773aa3e269cff |
|
23-Jul-2015 |
Ying Wang <wangying@google.com> |
Add "-MP" support to llvm-rs-cc. Bug: 22666539 Change-Id: I2888b58abc4644040fe9525b1ee24ae46cde480d
/frameworks/compile/slang/slang.h
|
1906a00dce8e32fe3bb8a957e333ebbbee0888e3 |
|
29-Jun-2015 |
Pirama Arumuga Nainar <pirama@google.com> |
Update Slang for LLVM rebase to r239765 Change-Id: I397b780af624f4a78382e9ec74e58e038aa9d2dc
/frameworks/compile/slang/slang.h
|
383f0b86d773723fb86f00a5f12622fa5a4d7d42 |
|
11-Jun-2015 |
Stephen Hines <srhines@google.com> |
Fix actual errors and remove warnings suppressions. Bug: 21764905 This got missed during 64-bit bringup last year. These functions are safe to sidestep, since RenderScript does not use C++ modules. We still have to declare/define them because of Clang's interface here. The other -Wno* warning suppressions were unused, so I am removing those as well. Change-Id: I9dba84f124fad3eade5f0a3f3025a9fb2bba1f7c
/frameworks/compile/slang/slang.h
|
5309b0cbeda2c75eedf6627e06f4471c77f98f83 |
|
02-May-2015 |
Jean-Luc Brouillet <jeanluc@google.com> |
Enable warnings in llvm_rs_cc - Fixed a bug that prevented llvm_rs_cc from emitting many warnings. - Add support so that we can do Wno-error (needed to avoid deprecation warnings from breaking the build). - Add test to verify deprecated warning works. - Simplified slang top level to clean up handling of 32/64 bit compilation handling. Change-Id: Ibacfa7d3d9708cb39a33b71da9621aee2718f758
/frameworks/compile/slang/slang.h
|
8024ed54c23c08534434da14d3be99c3efcc5754 |
|
05-May-2015 |
Jean-Luc Brouillet <jeanluc@google.com> |
Merge Slang with SlangRS, Backend with RSBackend. Change-Id: I4721f92c10ec14a886923778595289f96d3a8de5
/frameworks/compile/slang/slang.h
|
2d504fd03c66be56ac3b4bb62c78cc72c75dd8b6 |
|
15-Aug-2014 |
Stephen Hines <srhines@google.com> |
Suppress warnings on our second compilation (for 64-bit). Bug: 16031597 Bug: 17052573 Without this patch the 64-bit compilation path will print duplicate warning diagnostics, since we call the frontend twice (for 32-bit, and then 64-bit). The simplest fix is to not print warnings for the second compilation. A bug (17052573) has been filed to track fixing this a better way (actually printing out all warning diagnostics, but removing duplicates explicitly). Change-Id: I78ac0ebd2b132713ec0c86c2cf234da2b620eecf
/frameworks/compile/slang/slang.h
|
7ac9d0de26d325071ad3f26f8d34514efca2d3d6 |
|
16-Jul-2014 |
Stephen Hines <srhines@google.com> |
Update slang for LLVM rebase to r212749. Change-Id: I5819f9df3212ffcfa8f34c11d3cea29f1fd04878
/frameworks/compile/slang/slang.h
|
9ae18b2bbee0b08afd400542e863dd665ff76059 |
|
11-Jun-2014 |
Stephen Hines <srhines@google.com> |
Add an option to emit 32-bit and 64-bit bitcode. Bug: 16031597 Change-Id: Ifb3c4eca5e7ae16106260c2b5f5da6854c021a3a
/frameworks/compile/slang/slang.h
|
4b3f3bada7155de983e7d92fa8b20091629b3bb3 |
|
07-May-2013 |
Stephen Hines <srhines@google.com> |
Adapt llvm-rs-cc for LLVM/Clang update. Change-Id: Ic38ebc1d824f6d3ae26c6b354336a01b52d46136
/frameworks/compile/slang/slang.h
|
23c4358f12bd9d0ba7166eceebd683db95a41b3f |
|
10-Jan-2013 |
Stephen Hines <srhines@google.com> |
Updates for LLVM merge to r171906 on 20130108. Change-Id: I4cf3718041d8876d4a23a412b6b4fa4226ec3b50
/frameworks/compile/slang/slang.h
|
e3cb21bc8654181da174ac441acec7726b5a78ec |
|
02-Mar-2012 |
Jean-Baptiste Queru <jbq@google.com> |
am fa5209a2: am 9c459f0c: Merge "Enable emission of debugger-friendly bitcode" * commit 'fa5209a2bd1e10f675a889c60d8d5a589e860d18': Enable emission of debugger-friendly bitcode
|
c460b37ffb50819a32c2a8967754b6f784b28263 |
|
09-Jan-2012 |
mkopec1 <mkopec1@intel.com> |
Enable emission of debugger-friendly bitcode - Add "-g" flag to llvm-rs-cc in order to emit debug metadata - Add optimization level parameter -O and tests - Add lit based tests (use llvm-lit from libbcc/tests/debuginfo) -- Add README file for lit-tests directory Change-Id: I5e2f6f9b6f536fa7a10de008b54ac0878cf352a9
/frameworks/compile/slang/slang.h
|
e67239de8d94975e7e2216ee6860ae2e6cb8b15a |
|
25-Feb-2012 |
Stephen Hines <srhines@google.com> |
Style violation cleanup. Change-Id: Idb127f2fd6e637039454f47299360aec5a4edfe8
/frameworks/compile/slang/slang.h
|
ac4e18584b8768b3f68535fa5f16232e03974323 |
|
16-Dec-2011 |
Logan Chien <loganchien@google.com> |
Apply changes to migrate to upstream (Dec 16th 2011) - clang::ModuleLoader has changed the interface of loadModule. - Following constants has been removed from llvm::bitc by the upstream, so we have to define our version. - TYPE_BLOCK_ID_OLD 10 - TYPE_SYMTAB_BLOCK_ID_OLD 13 - TYPE_CODE_STRUCT_OLD 10 - llvm::TargetMachine::createTargetMachine now takes a new parameter for options, such as float ABI, soft float, and no frame elimination, and etc. Change-Id: I75e51da9d2265207060a449735342b426cedf243
/frameworks/compile/slang/slang.h
|
8f4d972ef6c6796ffdde603e456979a7004d1e20 |
|
05-Dec-2011 |
Stephen Hines <srhines@google.com> |
Add support for warning flag processing. BUG=5714569 Change-Id: I96567325df605c5eb0f0bf2f2371a1cea9718a5b
/frameworks/compile/slang/slang.h
|
9207a2e495c8363606861e4f034504ec5c153dab |
|
21-Oct-2011 |
Logan Chien <loganchien@google.com> |
Apply changes to migrate to LLVM upstream Oct 20th 2011. - StructType::isAnonymous is renamed to StructType::isLiteral. - PassManagerBuilder has been moved from llvm/Support/PassManagerBuilder.h to llvm/Transforms/IPO/PassManagerBuilder.h - Include llvm/Transforms/IPO.h for llvm::createInternalizePass. - clang::DiagClient has be renamed to clang::DiagnosticConsumer. Besides, we have to implement one additional pure virtual method 'clone' for create a clone of slang::DiagnosticBuffer. - llvm::Linker::LinkModules comes with one additional parameter. Passing llvm::Linker::DestroySource should be equivalent to the old code we were using. - slang::Slang is now derived from clang::ModuleLoader and implemented loadModule pure virtual method (though we will always return NULL.) - clang::Preprocessor is taking one additional parameter for clang::ModuleLoader. - clang::Diagnostic has been changed. A lot of the method has been moved to clang::DiagnosticsEngine, and we can no longer 'Report' a diagnostic from clang::Diagnostic. We have to use clang::DiagnosticEngine instead. - llvm::setCodeModel has been removed. Change-Id: I1f2a4cbeaf61a8ed1d0d635a5a0e1baa90d99d07
/frameworks/compile/slang/slang.h
|
be27482cdeaf08576bc39b72a15d35d13014a636 |
|
16-Feb-2011 |
Logan <tzuhsiang.chien@gmail.com> |
Apply changes to migrate to LLVM Mar 6th 2011. - API for name mangling. (Changing from non-public APIs to the public one) - API changes for clang::Diagnostic::getNumErrors -> clang::Diagnostic::hasErrorOccurred - API changes for clang::CharUnits and Quantity type. - API changes libLLVMSystem -> libLLVMSupport. - Change clang::Token::eom -> clang::Token::eod. - Remove SourceRange parameter for DeclRefExpr::Create and MemberExpr::Create. - Add const qualifier for several unsafe type cast.
/frameworks/compile/slang/slang.h
|
df5bcce1582d839eead432a5e24435236c90fb05 |
|
01-Mar-2011 |
Shih-wei Liao <sliao@google.com> |
NOTICE file and logn: Apply changes to migrate to LLVM 2010 Nov 10th: Change-Id: Ib8d3675b4701957f299f249ac72e8a43c2a6bc4c
/frameworks/compile/slang/slang.h
|
4cc67fce91f43215d61b2695746eab102a3db516 |
|
01-Feb-2011 |
Stephen Hines <srhines@google.com> |
Support for generating .java dependencies for RS. This updates the -MD option to also emit .java targets to the dependency information placed in our foo.d file. Change-Id: I189cf6302bc1cbd6201487743a37dced87b5c5eb
/frameworks/compile/slang/slang.h
|
e639eb5caa2c386b4a60659a4929e8a6141a2cbe |
|
09-Nov-2010 |
Stephen Hines <srhines@google.com> |
Improve code style. Change-Id: I26e043849bce2a4b41ae132fbe0c882f4a6f112f
/frameworks/compile/slang/slang.h
|
41ebf534161bb67f6207a070c1f6a895dc853408 |
|
13-Oct-2010 |
Zonr Chang <zonr@google.com> |
Remove Slang::TargetDescription. Clang and LLVM never read outside target description to configure the target-dependent information needed during compilation and codegen. They always use their own data layout string for specific, known target.
/frameworks/compile/slang/slang.h
|
641558f02fe6ce0ee3ae5076eb366c25e2ad5903 |
|
12-Oct-2010 |
Zonr Chang <zonr@google.com> |
Implement one-definition-rule (ODR) feature. When compiling multiple RS files, we say two RS files A and B break ODR iff: 1. They have at least one common struct named [S] and [S] will be reflected to ScriptField_[S].java, and 2. [S] defined in A is not *exactly the same* (number of fields, field type and field name) as the one defined in B. This CL detects such error.
/frameworks/compile/slang/slang.h
|
c383a500aa59423264811be3874461bf8adbfea0 |
|
11-Oct-2010 |
Zonr Chang <zonr@google.com> |
Prepend legal announcement in all files. Release libslang/llvm-rs-cc/llvm-rs-link under Apache 2.0 license.
/frameworks/compile/slang/slang.h
|
e8c263a1c5df81594cf302ecadd813909c894487 |
|
11-Oct-2010 |
Zonr Chang <zonr@google.com> |
Refactor a bit & -M bug fixed. 1. Use llvm::tool_output_file instead of llvm::raw_stream. The former can automatically deleted itself from filesystem once the compilation failed. 2. Fix -M bug which causes segfault previously.
/frameworks/compile/slang/slang.h
|
b81c6a4cbd9c08e0b20ea4fbc615b416ac1bc9ec |
|
10-Oct-2010 |
Shih-wei Liao <sliao@google.com> |
Revert "Revert "New implementation of llvm-rs-cc (replacement of slang_driver)."" This reverts commit a6d60672695f1438a63acdbf85eae7f97ce2b50d.
/frameworks/compile/slang/slang.h
|
a6d60672695f1438a63acdbf85eae7f97ce2b50d |
|
10-Oct-2010 |
Shih-wei Liao <sliao@google.com> |
Revert "New implementation of llvm-rs-cc (replacement of slang_driver)." This reverts commit 6791df284557f4173a9715b3634f4f4901a6bb8a.
/frameworks/compile/slang/slang.h
|
6791df284557f4173a9715b3634f4f4901a6bb8a |
|
09-Oct-2010 |
Shih-wei Liao <sliao@google.com> |
New implementation of llvm-rs-cc (replacement of slang_driver). Change-Id: I1b8b6cf3dad8ef8fe2f4d24d4df604099f45ff37
/frameworks/compile/slang/slang.h
|
5457231d5201be02c3232ffc1c6d8bc408f276ab |
|
08-Oct-2010 |
Ying Wang <wangying@google.com> |
Pass additional dep target to slang By "slang -a out/foo/bar/RenderScript.stamp ...", additional dep target will be added to the .d file, something like: out/target/common/obj/APPS/Fountain_intermediates/src/RenderScript.stamp ./fountain.bc: \ frameworks/base/libs/rs/java/Fountain/src/com/android/fountain/fountain.rs \ ... Currently the .bc file is not used in the build system dependency graph, but the stamp file. Change-Id: I1251dba0a4b003e4b6bc689f1064bddd4ffbccc1
/frameworks/compile/slang/slang.h
|
0b7ef1a176b9ddd1e0d437efdce20743373fd7db |
|
08-Oct-2010 |
Stephen Hines <srhines@google.com> |
Add support to Slang for "-MD" option. Change-Id: Ie01ccb3f07191f6de954b8094eec5ab47e703817
/frameworks/compile/slang/slang.h
|
cc0efad052e944f64bb71cfdaa8a825e30192e78 |
|
05-Oct-2010 |
Stephen Hines <srhines@google.com> |
Add "-M" dependency generation to Slang. Change-Id: I26d1daf1005de7b3ad297fba5ad0d85a1aab1e45
/frameworks/compile/slang/slang.h
|
3a9ca1f0d6bd8f12c2bb2adea51f95c255996180 |
|
06-Oct-2010 |
Zonr Chang <zonr@google.com> |
Provide better abstraction of class Slang. 1. Remove the Slang C APIs support (not used by any other programs.) 2. All RS relatives are now in slang_rs_*.cpp.
/frameworks/compile/slang/slang.h
|
6315f76e3cc6ff2d012d1183a0b030d4ff0dc808 |
|
05-Oct-2010 |
zonr <zonr@google.com> |
More coding style fixing to improve the readability. No actual semantics changed. This also makes cpplint happy.
/frameworks/compile/slang/slang.h
|