History log of /frameworks/compile/slang/slang_backend.cpp
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
8ee018bdb53fc5abdc430878e2bec0c0c0aa560f 02-Jun-2016 David Gross <dgross@google.com> Delete simple reduction implementation.

Bug: 27298560
Change-Id: I775dd782d658c7c720f57aa31a584deee98cdd17
/frameworks/compile/slang/slang_backend.cpp
40bac5d72af8fe32ab3d0bb38aafb5c65d8d9dfa 09-May-2016 Yang Ni <yangni@google.com> Disallow launching old-style kernels via rsForEach

Bug: 28666819

The "kernel" attribute should be the sole criterion for a kernel
function launchable via rsForEach() in single-source RS.
(The utility function isRSForEachFunc() considers a super set of such
functions as kernels, including old-style kernels or any function
that returns void and has a pointer type first parameter, which
don't have the "kernel" attribute.)

Launching an old-style kernel is forbidden via an rsForEach() or
rsForEachWithOptions() call. Old-style kernels can still co-exist in
the same script with such a call, and can be launched via Java or C++
reflected code.

To make this coexisting possible, old-style kernels are moved to
the end of the list for exported kernels in the metadata. This way,
the single-source RS frontend pass can agree with the metadata
on the slot assignment for "new-style" kernels.

Change-Id: I3d61c1c91b29043f3597ae622ef7c2ef972eb789
/frameworks/compile/slang/slang_backend.cpp
8f093e05e28046b6fc74175b66a06152f72e0c66 04-Mar-2016 Pirama Arumuga Nainar <pirama@google.com> Update slang for LLVM rebase to r256229

Bug: http://b/26987366

(cherry picked from commit 98cfae456bb1831336bce2b21979a04e2e31fed4)

Change-Id: Ic7f67da3fee0da075f11e3125132af7ea9c96457
/frameworks/compile/slang/slang_backend.cpp
9319dfc974a82794d46e9f474f316590f480b976 26-Feb-2016 Yang Ni <yangni@google.com> slang error on kernel launch from another kernel

Bug: 27459075

Extended the AST visitor that lowers rsForEach() and
rsForEachWithOptions() calls to be aware if the function being walked
is a kernel itself. If so, on seeing a call to one of the two kernel
launch functions, reports a compiler error.

Note that such checking is oblivious to the control flow.

Also removed all checks inside the LowerRSForEachCall() function,
since we do all the same checks before entering that function.

Change-Id: Ib7f276e8e8d707f39b310548c084ed550a7a3480
(cherry picked from commit edfcc6949e2ae5374ba548d7543d6f815cf27b65)
/frameworks/compile/slang/slang_backend.cpp
283a6cf32b808c703b219862ac491df3c9fc8b4b 16-Jan-2016 Yang Ni <yangni@google.com> Handle return values of rsObject type

Bug: 25570907
Bug: 25777125

This made further improvements over a previous fix on return
values of rsObject type.

1) The temp variable created for a return expression is now set using
rsSetObject() rather than directly put in the initializer of the temp.
This way, the returned rsObject would have a sys ref count of at least
1 and won't become invalid on the return for the caller.

2) On the caller side, introduced another temp variable .rs.tmpXXX for
the result of any function call that returns an rsObject. This temp
is set in the initializer upon declaration, without using rsSetObject().
A destructor is inserted at the end of the enclosing scope for the temp.

3) Both temp variables above are now named with a unique suffix (that is
a unique integer, which starts from 0 and increases monotonically within
the function currently being analyzed and transformed.)

4) Fixed an issue in the previous fix, when there are multiple rsObjects
defined in a block, we will only introduce one temp variable for a
return statement. The previous CL would introduce one temp for each
rsObject, mistakenly.

Change-Id: Id3604f93b166089e3aca896d1c6c509b3ea19bcf
(cherry picked from commit b478c3dd0a47dc4c0c884d911819c9cf53c46649)
/frameworks/compile/slang/slang_backend.cpp
5e306b944425a952fe744f59d828538137a59375 09-Feb-2016 David Gross <dgross@google.com> Change mechanism used to ensure #pragma rs reduce functions are not deleted.

Requires corresponding change in frameworks/compile/libbcc.

The functions referenced by "#pragma rs reduce" are static functions.
If the only references to such a function are from these pragmas, then
the function looks unreferenced, and hence without additional work
will be deleted by clang.

The old solution to this problem is to add all such functions to
the LLVM intrinsic variable @llvm.used. Unfortunately, this
doesn't just prevent clang from deleting these functions -- it
also prevents llvm from deleting these functions. This is
undesirable in the case of the combiner function (which is not
currently needed by the CPU reference driver) or the accumulator
function (because the CPU reference driver needs an "expanded"
form of the accumulator function, not the original accumulator
function).

The new solution is that for each such function "f" we generate a
dummy variable initialized with a pointer to that function:

void *.rs.reduce_fn.f = (void*)&f;

This prevents clang from deleting "f", but does not automatically
prevent llvm from deleting "f" (e.g., the backend could use some
other mechanism to retain "f" if necessary, while
deleting ".rs.reduce_fn.f").

Bug: 23535724
(cherry picked from commit 633f2980e148775887f0d416f8dd663a6d3b48df)

Change-Id: I272445d2bf706cde8d81ed65aa32df59c3ba0e47
/frameworks/compile/slang/slang_backend.cpp
da48d8e5321e960a2e7c9d63714557e8b40491d8 04-Feb-2016 David Gross <dgross@google.com> Merge "Rename #rs_export_reduce_new to #rs_export_reduce." am: c8629c47f8
am: a7099455f8

* commit 'a7099455f810d79c33728eff7270cdf446c7522a':
Rename #rs_export_reduce_new to #rs_export_reduce.
dbf5b61ea24012f883e238fd17bdca0758f181d6 03-Feb-2016 David Gross <dgross@google.com> Rename #rs_export_reduce_new to #rs_export_reduce.

This brings general reduction metadata into conformance with the
specification and removes simple reduction metadata, thereby
disabling simple reduction. More work will be done later to
fully remove the simple reduction implementation.

Requires a corresponding change in frameworks/compile/libbcc.

Bug: 23535724
Change-Id: I98dc885f9a977c54db88b0c7058b71f14f724724
/frameworks/compile/slang/slang_backend.cpp
13dba25ad988da71201c1331b34f56e2d01bcf96 22-Jan-2016 Yang Ni <yangni@google.com> Bump up API level in Slang to 24

This is in preparation of releasing new Slang changes for NYC,
assuming NYC will have API level 24.

It also updated guards for single-source RS features from checking
against SLANG_DEVELOPMENT_TARGET_API to SLANG_N_TARGET_API.

Change-Id: I8e21c25d93d1228d899ab7efc7d78bf2e5c6a27d
/frameworks/compile/slang/slang_backend.cpp
65f23ed862e1a1e16477ba740f295ff4a83ac822 08-Jan-2016 David Gross <dgross@google.com> Add semantic analysis of "#pragma rs reduce" script functions.

Also:
- Make initializer() optional.
- Swap initializer and accumulator in metadata.
- Expose new slang::HasRSObjectType() interface from reference counting engine.

Bug: 23535724
Change-Id: If042e227a1af87c231c867ef20ed4c2082bb1871
/frameworks/compile/slang/slang_backend.cpp
2615f383dfc1542a05f19aee23b03a09bd018f4e 03-Dec-2015 Yang Ni <yangni@google.com> Tidy up AST nodes for rsForEach

Bug: 23535985

Slang asserts in debug build, for the following reasons:
1) A mistake using void type instead of the function type for
rsForEachInternal();
2) rsForEachInternal() was declared with the second parameter being
void*, but should be rs_script_call_t*; and
3) Integer 0 for launch option is used for rsForEach without an
launch option, where a rs_script_call_t* is expected.

This CL fixes those.

Change-Id: If6245ceca774ee38830aeddda156be55cde9a137
/frameworks/compile/slang/slang_backend.cpp
9ab3abd01219b458eb8be20dad6dcffd8dfc0f27 20-Nov-2015 Yang Ni <yangni@google.com> Merge "Changed generated calls to rsForEachInternal"
88f21e16250d2e52a75607b7f0c396e1c2a34201 19-Nov-2015 Yang Ni <yangni@google.com> Changed generated calls to rsForEachInternal

Bug: 23535985

Avoided using varargs in rsForEachInternal, since LLVM handles varargs
differently on x86 than on ARM.

Changed generated calls to rsForEachInternal to match the new
signature, in which the last argument is an allocation array.

Change-Id: I1b53861083b87c51c5bdaeaec2be469dc7af7a0a
/frameworks/compile/slang/slang_backend.cpp
15e44e66adc350adb4fe0533a442092c64333ab5 10-Nov-2015 David Gross <dgross@google.com> Parse "#pragma rs reduce" and generate metadata.

Does no analysis of the reduction's constituent functions and does no reflection.

For now this coexists with __attribute__((kernel("reduce"))) reduction kernels.

Bug: 23535724
Change-Id: Ib4112a166bf07b2cd70960180e3581dd0b93a8c7
/frameworks/compile/slang/slang_backend.cpp
1946749cebf4a64341d8210890688fef7d958c22 27-Oct-2015 Yang Ni <yangni@google.com> Launch options & multi inputs for single-source RS

Bug: 23535985

Also renamed rsParallelFor to rsForEach.
Added checks for number of allocations to rsForEach matching kernel function
expectation.

Added slang tests.

Removed code from RSContext for remembering the rs_allocation AST subtree.

Change-Id: Ibc22bd5e9585a4471b15920ef60fe1fe2312de49
/frameworks/compile/slang/slang_backend.cpp
fb40ee2a90f37967bf4a40a18dec7f60e5c580d8 13-Oct-2015 Yang Ni <yangni@google.com> Revert "Revert "Handle kernel launch calls""

Bug: 23535985

This reverts commit 5d9263d3a3a7457b9e5fe6e518c0d822dcdfcda6.

This also fixes issues in change list 172074, which caused some
slang tests to fail due to changed hehavior in error handling.

The fix was based on changes originally posted by srhines@.

To keep single-source functionality working, I separated kernel
name logging from the final export processing code. We would
build a map from kernel funciton names to slot numbers as we parse
the script. The map is used when translating a rsParallelFor call
to a call to the internal rsForEachInternal API, so that we can find
the proper slot numbers.

Here is Steve's original commit message.

Only call processExports() after a successful C99 compilation.

This refactoring fixes a bug in the previous single-source patch, where
exported functions/variables/kernels were being processed during the
regular compilation steps. This wastes compile time, since we don't need
to actually prepare for outputting reflected Java/C++ code if the
compile is going to fail for regular C99 reasons.

Change-Id: I81d88731188f4258f12f4c90ae8dd8abc8c2d641
/frameworks/compile/slang/slang_backend.cpp
5d9263d3a3a7457b9e5fe6e518c0d822dcdfcda6 13-Oct-2015 Stephen Hines <srhines@google.com> Revert "Handle kernel launch calls"

This reverts commit 45aa8c52c9400cef86efe4343f04e605a66f42af.

Change-Id: If33ad432e4381d1dc64ef884b51eb50f707807ff
/frameworks/compile/slang/slang_backend.cpp
45aa8c52c9400cef86efe4343f04e605a66f42af 14-Sep-2015 Yang Ni <yangni@google.com> Handle kernel launch calls

Bug: 23535985

Find rsParallelFor(void*, ...) calls in the .rs source code and
translate them into rsForEachInternal(int, rs_allocation, rs_allocation)
calls.

Semantic checks are pretty limited at this point. Will enhance them in followup CLs.

Change-Id: I6e2cf3db868f426aa8e0b9a77732b66c1e6b9f03
/frameworks/compile/slang/slang_backend.cpp
24d69e521538d70863dc0a3745733b8c27fcccd7 11-Sep-2015 Stephen Hines <srhines@google.com> Merge "Added in fix to allow generation of valid debug info"
b130e157d3a5c2256e7aa0005d7134f3ac060c56 23-Jul-2015 Stephen McGroarty <stephen@codeplay.com> Added in fix to allow generation of valid debug info

Changed the bitcode writer of the llvm-rs-cc compiler
to use the current version of llvm when generating debug
metadata. If the debug info is generated with the current
fixed version writers the resulting bitcode is invalid and
will fail verification in the bcc compiler. However, this
means that, currently, only revisions which have compatible
versions of llvm will work. The incompatibility is in the
debug info generation in slang and the verification/backend
in bcc. If bcc is expecting the debug info to be in a different
format that slang outputs the verification stage will fail. As
things stand only the newest revision will work, as the debug
info in AOSP LLVM was updated a few weeks ago. If the debug
bitcode is ahead of the reader on the device it will fail the
bitcode verification stage in bcc.

Change-Id: Iddb7adfe6639900f9917cb05941378019ecc37ba
Signed-off-by: Stephen McGroarty <stephen@codeplay.com>
/frameworks/compile/slang/slang_backend.cpp
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_backend.cpp
c0c5dd85f2d2df2bcf0cb284001f544d6c42eff9 24-Jul-2015 Matt Wala <wala@google.com> Add initial support for validating and exporting reduce kernels.

Bug: 22631253

This change adds support to slang to validate the reduce-style
kernels for errors, and also to create reduce metadata.

Change-Id: Ic9144402dff93a2a28687864637e67fca6808e2e
/frameworks/compile/slang/slang_backend.cpp
dabd246c169fe8bc7d80a31779311bfc583b2ea0 16-Jul-2015 Matt Wala <wala@google.com> llvm-rs-as: Wrap bitcode with the RS bitcode wrapper.

Change llvm-rs-as and llvm-rs-cc to use the same code path when it comes
to writing bitcode. As a result llvm-rs-as can take a *.ll file and
output a *.bc file containing the RenderScript bitcode wrapper, so that
code produced by llvm-rs-as can be read by bcinfo.

Change-Id: I3f9aed3764cbafddb219a21abd89490ca8019bc1
/frameworks/compile/slang/slang_backend.cpp
167bd79e95d496474346fcb9b2905d42ab55d750 01-Jul-2015 Pirama Arumuga Nainar <pirama@google.com> Soft-float cleanup

- UseSoftFloat target option is removed from upstream. Remove its use
and update the comment on how to skip FPU and use software
floating-point.
- Remove a stale FIXME about auto-detecting the presence of hardware
FPU. It is unlikely that any processor doesn't have an FPU these
days.
- When generating code use soft-float ABI. This matches what is done
for ARM in the rest of Android.

Change-Id: I1255ca9d30dd0e08d4de0a01cdc8bd9317a16332
/frameworks/compile/slang/slang_backend.cpp
4ce8705e2bd1e48c1772fea166499e315a2f096e 01-Jul-2015 Pirama Arumuga Nainar <pirama@google.com> Remove use of llvm::TargetOptions::NoFramePointerElim

Bug: 22210139

This flag is removed from upstream. Removing its use will enable frame
pointer elimination by default. After the rebase, we need to add back
the ability to disable frame pointer elimination (b/22210139).

Change-Id: I594b3e6964c3069ddbb77748d22fe879289725d0
/frameworks/compile/slang/slang_backend.cpp
21cc01860b95cad7ae60c686e511e8f4ae034e39 06-May-2015 Pirama Arumuga Nainar <pirama@google.com> Update slang for rebase to LLVM r235153

- Include a tiny fix to an upstream bug
(https://llvm.org/bugs/show_bug.cgi?id=23436)
- Use BufferOutputStream instead of FormattedOutputStream in
slang_backend

Change-Id: I9c53b6bbbcccc95513b45d8f0374ced35f7baccd
/frameworks/compile/slang/slang_backend.cpp
8024ed54c23c08534434da14d3be99c3efcc5754 05-May-2015 Jean-Luc Brouillet <jeanluc@google.com> Merge Slang with SlangRS, Backend with RSBackend.

Change-Id: I4721f92c10ec14a886923778595289f96d3a8de5
/frameworks/compile/slang/slang_backend.cpp
0b7545898dcfe2979f2c13afd12d276fc736412d 07-Apr-2015 Stephen Hines <srhines@google.com> Update slang for LLVM rebase to r233350.

Change-Id: I1883757eb9987e45892ae6efde80f825fc9b5367
/frameworks/compile/slang/slang_backend.cpp
c706907a8041faaa882f9bd87f1d1c1669023a62 18-Mar-2015 Stephen Hines <srhines@google.com> Update slang for LLVM rebase to r230699.

Change-Id: I6fa2c59b1445735e2eb95deb4ac503cb9ed369ee
/frameworks/compile/slang/slang_backend.cpp
3eb819ad8beec566a73b288204f9b75c2bb1d4e6 25-Nov-2014 Stephen Hines <srhines@google.com> Update slang for LLVM rebase to r222494.

Change-Id: I19e441e193637ddb39b3afb3bc95579755ac0a90
/frameworks/compile/slang/slang_backend.cpp
5abbe0e9ca2508260b627ffef2bf01e2554e8357 13-Aug-2014 Chris Wailes <chriswailes@google.com> Replace the NULL macro with nullptr literal.

Change-Id: I33609969cd0d7aa55eaa83fb2c65f5faa6d55fa0
/frameworks/compile/slang/slang_backend.cpp
c9454afec1649846512993d0ef65a9f868976bb4 14-Jun-2014 Chris Wailes <chriswailes@google.com> Adds support for multi-input kernels to Slang.

This patch modifies slang in the folowing ways:
* Updates some of the development target API logic.
* Adds logic for validating kernels with multiple inputs.
* Added support for multi-input kernels to the Java reflection code.
* Adds tests for these new features.
* Updated existing tests with the new error messages.

Change-Id: I46d2834c37075b2a2407fd8b010546818a4540d1
/frameworks/compile/slang/slang_backend.cpp
9e3aa07a4456aad52920e0a7464954fe67cdbe01 17-Jun-2014 Chris Wailes <chriswailes@google.com> Added a new development target api.

Change-Id: I71a16597f2605b9323424f8d493f103519d10178
/frameworks/compile/slang/slang_backend.cpp
796e7b1400d3f3f7c07496d88bb48129ea925bb9 27-May-2014 Jean-Luc Brouillet <jeanluc@google.com> Remove useless "return;" statements.

More cleanups to follow...

Change-Id: Ib8348255273771c1e9ff07e79bd7fbc8f2795a5b
/frameworks/compile/slang/slang_backend.cpp
ee4016d1247d3fbe50822de279d3da273d8aef4c 11-Apr-2014 Tim Murray <timmurray@google.com> Update Slang for Clang/LLVM 3.5a.

Change-Id: Icd59efa1197098076555c505c31939866e504a83
/frameworks/compile/slang/slang_backend.cpp
552d872e5cdc883d9f8e76d8c67d3a82e3ece488 18-Dec-2013 Stephen Hines <srhines@google.com> Strip unknown/unsupported attributes (like readnone/readonly for parameters).

Bug: 12135682

Jellybean's LLVM version didn't support readnone/readonly as anything
other than function attributes, so it will fail verification otherwise.
Since we never ran the verifier in Jellybean, it ends up with potential
crashes deeper in CodeGen.

Change-Id: I0a93a548b427f610fa9ca0a1ae0b432e6fa39e11
/frameworks/compile/slang/slang_backend.cpp
a1f95ee8df425089100148a42954cf61dc285015 09-Aug-2013 Stephen Hines <srhines@google.com> Update slang for LLVM merge up to r187914.

Move OptParser.td dependency to use LLVM's version.
Switch to llvm::sys::fs::F_* enums.
Switch to LLVM Option handling library (not in Clang any more).
Add new ALIASARGS field to OPTION macro.
Switch to clang::getLastArgIntValue() helper function.
Use llvm::sys::fs::OpenFlags as enum and not unsigned int.
Remove unused DisableSimplifyLibCalls().
Switch to llvm::sys::fs::create_directories().

Change-Id: I9b12e18b759536c762ea0dd43356907ee53dbddb
/frameworks/compile/slang/slang_backend.cpp
0da7f6c8201b27938d3b9f048d71fd784cd1df9a 06-Mar-2013 Stephen Hines <srhines@google.com> Updates for LLVM merge to r176139.

Change-Id: I0d0d32893b4638eef298c99ac8c862c9a9bca1a6
/frameworks/compile/slang/slang_backend.cpp
23c4358f12bd9d0ba7166eceebd683db95a41b3f 10-Jan-2013 Stephen Hines <srhines@google.com> Updates for LLVM merge to r171906 on 20130108.

Change-Id: I4cf3718041d8876d4a23a412b6b4fa4226ec3b50
/frameworks/compile/slang/slang_backend.cpp
d711dec946b6408791ca59eb98e363ef04bbd4aa 09-Jan-2013 Stephen Hines <srhines@google.com> Add BitWriter_3_2 for JB+ target API.

This change switches llvm-rs-cc to use a single format for JB+ target API
LLVM bitcode. This simplifies upstream rebases, considering the divergent
compressed bitcode format that will be present in LLVM 3.3. We may move
back to using the upstream BitWriter again at some point in the future, but
for now, it seems like the best choice is to stick with the 3.2 format.

Change-Id: I8cfc54d7da7c7168f8f0d5f8fc24c2598b81aff8
/frameworks/compile/slang/slang_backend.cpp
8ccbddda3ac7408ba0ae1edab1d066f0d8ad97bc 21-Mar-2012 Stephen Hines <srhines@google.com> resolved conflicts for merge of 9e7e17b0 to master

Change-Id: I7d910038eaf3e7b43330253a7275a8496c26c9ad
5e3b677a3041c86a7f860238dd1f5ff9d111b507 21-Mar-2012 Stephen Hines <srhines@google.com> Use bcinfo::writeAndroidBitcodeWrapper().

Change-Id: Ic5361ef718733dd22fd732351a711c04edb12e3a
/frameworks/compile/slang/slang_backend.cpp
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_backend.cpp
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_backend.cpp
cf7e4296bb5862681f5acc4c489798329a46bd61 23-Nov-2011 Stephen Hines <srhines@google.com> Add support for generating a bitcode wrapper to llvm-rs-cc.

BUG=5425905

Change-Id: I42c49666c434d33f000b57db159677179ab75ca0
/frameworks/compile/slang/slang_backend.cpp
de7ac1928633b51b8a147fcdda044793629ba8fb 29-Nov-2011 Stephen Hines <srhines@google.com> Fix bool return for HandleTopLevelDecl().

This is a minor update to propagate error information related to the
merge work done in fa6ef56a6ca3dc3061218a75a7e68e5357fcb82c.

Change-Id: I74f7831e4ccfb0f8a3a2d0c75da953cbeaa5c5ac
/frameworks/compile/slang/slang_backend.cpp
42f6e0cd9eed6f967e2e0d76050082128bdc4ae4 29-Nov-2011 Stephen Hines <srhines@google.com> Merge "Add support for BitWriter_2_9_func bitcode writing."
fa6ef56a6ca3dc3061218a75a7e68e5357fcb82c 25-Nov-2011 Logan Chien <loganchien@google.com> Apply changes to migrate to upstream (Nov 25th 2011).

- HandleTopLevelDecl now returns bool.
- Additional APValue::MemberPointer case for switching.

Change-Id: Ieb7a693f96b07b7659712a3ab0abd200ce7df505
/frameworks/compile/slang/slang_backend.cpp
9b044ec938fd56355012851890c63974c8042c9f 24-Nov-2011 Stephen Hines <srhines@google.com> Add support for BitWriter_2_9_func bitcode writing.

This allows us to generate Bitcode for pre-3.0 LLVM using the old opcode for
TYPE_CODE_FUNCTION (renamed to TYPE_CODE_FUNCTION_OLD).

Change-Id: I5b88bff6224658f3e50940bb6f46aa13ca40c080
/frameworks/compile/slang/slang_backend.cpp
5e6d0d5a911fff0b7b4bce216a213a4cf8a811f5 23-Nov-2011 Stephen Hines <srhines@google.com> Add support for generating a bitcode wrapper to llvm-rs-cc.

BUG=5425905

Change-Id: I42c49666c434d33f000b57db159677179ab75ca0
/frameworks/compile/slang/slang_backend.cpp
2c6bad5038d8509466b9e0f9aa6a8ae533c0e029 15-Nov-2011 Logan Chien <loganchien@google.com> Apply changes to migrate to llvm upstream r144606.

- Replace linear scan register allocator with greedy register
allocator since the upstream has removed linear scan register
allocator and start using greedy register allocator instead.

Change-Id: I8f15c1761c525144b93597303a21b19cc8e46d31
/frameworks/compile/slang/slang_backend.cpp
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_backend.cpp
4cc499d6e5ec602309501873449c938af61170b2 25-Aug-2011 Stephen Hines <srhines@google.com> Start basic support for LLVM 2.9 bitcode writer.

Change-Id: I6a54158a32e485f506f0b991f89125b8a0e60267
/frameworks/compile/slang/slang_backend.cpp
ab992e59a36a18df49bf4878968ef0598299afd3 20-Jul-2011 Logan Chien <loganchien@google.com> Apply changes to migrate to llvm upstream r135568.

- Remove the const qualifier of llvm::Type and
llvm::PointerType due to the API change.

- Update the relocation model setup code, since
llvm::TargetMachine changes the API.

- Qualify dyn_cast with llvm namespace.

Change-Id: I4820fb86effc3a62569e19a6a8753ba9e960f6b2
/frameworks/compile/slang/slang_backend.cpp
18c8829f2bd3cbe0d02471588c6643c0a8c6ca3c 15-Jul-2011 Stephen Hines <srhines@google.com> Remove all explicit ArrayRef constructors.

Related BUG=5028838

Change-Id: I5867f8e5d7097ef349a6d1eda1681b0014ac66c9
/frameworks/compile/slang/slang_backend.cpp
77703262b9c2fecc22287ca236daa72b2cea7d27 02-Jul-2011 Shih-wei Liao <sliao@google.com> Fix API changes of llvm::SubtargetFeatures.

Change-Id: If9503dfb2bb368f95020bc2ba0652a3ca4ab6d28
/frameworks/compile/slang/slang_backend.cpp
fcc654a1f4034978f7534479f9c5c33a92ca8546 22-Jun-2011 Shih-wei Liao <sliao@google.com> Fix llvm API changes to migrate to upstream r131807.

Now, llvm doesn't provide create*Passes() interface and removes StandardPasses.h.
Instead, we use PassManagerBuilder to replace StandardPasses.

Change-Id: I0979afd0ecb9bf2df6634aaff0a8c9a32d405f71
/frameworks/compile/slang/slang_backend.cpp
83f0c6261efc8f397fc2509e3862bc6d0eb1e1c4 21-Jun-2011 Shih-wei Liao <sliao@google.com> Apply API changes to migrate to CLANG upstream.

Change-Id: I376a8a24c238c4e27d37c4f846b93e2f6e38d79c
/frameworks/compile/slang/slang_backend.cpp
6e6578a360497f78a181e63d7783422a9c9bfb15 08-Feb-2011 Stephen Hines <srhines@google.com> Add support for assertions in llvm-rs-cc.

Bug: 3430674
Change-Id: I3400238652449cde84275cc2a770f405332d9544
/frameworks/compile/slang/slang_backend.cpp
3fd0a94a5cf1656569b1aea07043cc63939dcb46 18-Jan-2011 Stephen Hines <srhines@google.com> Refactor pragma handling (pass everything to LLVM)

Change-Id: Id09d4934af06f0880cd867456218602ce9a9e2de
/frameworks/compile/slang/slang_backend.cpp
e639eb5caa2c386b4a60659a4929e8a6141a2cbe 09-Nov-2010 Stephen Hines <srhines@google.com> Improve code style.

Change-Id: I26e043849bce2a4b41ae132fbe0c882f4a6f112f
/frameworks/compile/slang/slang_backend.cpp
68fc02ca4a7235e2981be5eee4ad968a9d3928c0 13-Oct-2010 Zonr Chang <zonr@google.com> Add two new APIs in HandleTranslationUnitPre and HandleTranslationUnitPost.

Refer to the comments in slang_backend.h for detail.
/frameworks/compile/slang/slang_backend.cpp
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_backend.cpp
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_backend.cpp
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_backend.cpp
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_backend.cpp
9ef2f785e0cc490af678dfd685995dec787321ff 01-Oct-2010 Shih-wei Liao <sliao@google.com> The Mother-of-All code review:
1. Fix AllowRSPrefix bug
2. Remove member mRS*Pragma in class RSContext
3. No longer only support 2x2, 3x3, 4x4 arrays
4. Fix Export All code for victorhsieh
5. Improve readability and maintainability
6. size_t -> int in calculating padding

Change-Id: I772aebd1440af66a89e2d2e688b193e500f38d69
/frameworks/compile/slang/slang_backend.cpp
cecd11d2af5d45d8ba322bed61fb48a99c305528 21-Sep-2010 Shih-wei Liao <sliao@google.com> Fix warnings. Bug fix.

Change-Id: I80934814ae64d11f0edebfa3b131164207f1aca0
/frameworks/compile/slang/slang_backend.cpp
f52a620440fa62257dfdcf2583f0f9df5b855c76 11-Sep-2010 Shih-wei Liao <sliao@google.com> Apply changes on slang such that it can work with LLVM/Clang upstream r112364/r112367.

Change-Id: If38da28502a6111b855105c2fceb23fdb0caefa4
/frameworks/compile/slang/slang_backend.cpp
1fd8579fe65b13a26cfaad12d056d2fc9b46475a 07-Jul-2010 Kirk Stewart <kstewart@google.com> Add a command-line option to allow function names with the "rs" prefix (--allow-rs-prefix). When not specified, user-defined functions with that prefix will be treated as an error.

Change-Id: Ieefc8bb55d61980241d5392ffb32770a303ce6a7
/frameworks/compile/slang/slang_backend.cpp
2e534f22278bc2f98507436ca9ee4f8b2af54eab 15-Jun-2010 Shih-wei Liao <sliao@google.com> Change Diagnostic::Error to Diagnostic::Warning for now. The long-term solution should provide a slang option to toggle between Error and Warning.

Change-Id: I16b7f91ef03310112f86b147937a5a0eb0054005
/frameworks/compile/slang/slang_backend.cpp
336d93a7f079c86d9b43e1e1cfb539a11c5e130b 11-Jun-2010 Kirk Stewart <kstewart@google.com> Use llvm::StringRef::startswith rather than std::string::compare,
as per Nick's suggestion.

Change-Id: If5855dfb33831989adb0cd6e512550e12a9dd983
/frameworks/compile/slang/slang_backend.cpp
6b22674f4ef0a6c689c589830f1c44f443520785 11-Jun-2010 Kirk Stewart <kstewart@google.com> Add a check to prevent users from defining function names starting
witih "rs".

Change-Id: I2801d50b11439b37dd875957683bbf180c8df34a
/frameworks/compile/slang/slang_backend.cpp
6322c93178711b935af4ffbfe5066d10280d26ba 11-Jun-2010 Kirk Stewart <kstewart@google.com> Use pre-existing clang code to produce errors for un-prototyped functions.

Change-Id: I872fc58adecfa99a02aea003664beed618978221
/frameworks/compile/slang/slang_backend.cpp
462aefd62cc646d2ff753c1d003ef3cd7bbea262 05-Jun-2010 Shih-wei Liao <sliao@google.com> Initialize slang and Android.mk.

Change-Id: If74da8e54d45511c8c9bb236bcfeec508f4f2439
/frameworks/compile/slang/slang_backend.cpp