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
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
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
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)
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)
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

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
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
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

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

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

Bug: 23535724
Change-Id: If042e227a1af87c231c867ef20ed4c2082bb1871
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
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
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
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
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

Added slang tests.

Removed code from RSContext for remembering the rs_allocation AST subtree.

Change-Id: Ibc22bd5e9585a4471b15920ef60fe1fe2312de49
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
5d9263d3a3a7457b9e5fe6e518c0d822dcdfcda6 13-Oct-2015 Stephen Hines <srhines@google.com> Revert "Handle kernel launch calls"

This reverts commit 45aa8c52c9400cef86efe4343f04e605a66f42af.

Change-Id: If33ad432e4381d1dc64ef884b51eb50f707807ff
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)

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

Change-Id: I6e2cf3db868f426aa8e0b9a77732b66c1e6b9f03
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>
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
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
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
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
- Remove a stale FIXME about auto-detecting the presence of hardware
FPU. It is unlikely that any processor doesn't have an FPU these
- When generating code use soft-float ABI. This matches what is done
for ARM in the rest of Android.

Change-Id: I1255ca9d30dd0e08d4de0a01cdc8bd9317a16332
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
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
- Use BufferOutputStream instead of FormattedOutputStream in

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

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

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

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

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

Change-Id: I33609969cd0d7aa55eaa83fb2c65f5faa6d55fa0
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
9e3aa07a4456aad52920e0a7464954fe67cdbe01 17-Jun-2014 Chris Wailes <chriswailes@google.com> Added a new development target api.

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

More cleanups to follow...

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

Change-Id: Icd59efa1197098076555c505c31939866e504a83
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
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
0da7f6c8201b27938d3b9f048d71fd784cd1df9a 06-Mar-2013 Stephen Hines <srhines@google.com> Updates for LLVM merge to r176139.

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

Change-Id: I4cf3718041d8876d4a23a412b6b4fa4226ec3b50
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
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
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
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.


- 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
cf7e4296bb5862681f5acc4c489798329a46bd61 23-Nov-2011 Stephen Hines <srhines@google.com> Add support for generating a bitcode wrapper to llvm-rs-cc.


Change-Id: I42c49666c434d33f000b57db159677179ab75ca0
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
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
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

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


Change-Id: I42c49666c434d33f000b57db159677179ab75ca0
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
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

- 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::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
4cc499d6e5ec602309501873449c938af61170b2 25-Aug-2011 Stephen Hines <srhines@google.com> Start basic support for LLVM 2.9 bitcode writer.

Change-Id: I6a54158a32e485f506f0b991f89125b8a0e60267
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
18c8829f2bd3cbe0d02471588c6643c0a8c6ca3c 15-Jul-2011 Stephen Hines <srhines@google.com> Remove all explicit ArrayRef constructors.

Related BUG=5028838

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

Change-Id: If9503dfb2bb368f95020bc2ba0652a3ca4ab6d28
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
83f0c6261efc8f397fc2509e3862bc6d0eb1e1c4 21-Jun-2011 Shih-wei Liao <sliao@google.com> Apply API changes to migrate to CLANG upstream.

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

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

Change-Id: Id09d4934af06f0880cd867456218602ce9a9e2de
e639eb5caa2c386b4a60659a4929e8a6141a2cbe 09-Nov-2010 Stephen Hines <srhines@google.com> Improve code style.

Change-Id: I26e043849bce2a4b41ae132fbe0c882f4a6f112f
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.
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.
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.
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.
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.
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
cecd11d2af5d45d8ba322bed61fb48a99c305528 21-Sep-2010 Shih-wei Liao <sliao@google.com> Fix warnings. Bug fix.

Change-Id: I80934814ae64d11f0edebfa3b131164207f1aca0
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
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
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
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
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
6322c93178711b935af4ffbfe5066d10280d26ba 11-Jun-2010 Kirk Stewart <kstewart@google.com> Use pre-existing clang code to produce errors for un-prototyped functions.

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

Change-Id: If74da8e54d45511c8c9bb236bcfeec508f4f2439