History log of /frameworks/compile/slang/slang_rs_export_type.cpp
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
2d7f3f95947889e1ea48b0e925c5929af4fbf6b4 10-Mar-2016 David Gross <dgross@google.com> Flesh out reduction support for half data types.

Also extended test cases for more thorough data type coverage
(including non-half data types).

Details:
- Bug fixes.
- Result type can be vector of half or array of vector of half.
- Full reflection support for [array of] [vector of] half input or result.

Bug: 27299169
Change-Id: Id674ae2ea2cce6215f152fd62bb5b124c44cfcd3
/frameworks/compile/slang/slang_rs_export_type.cpp
277fd5e6545c8ba1272027ee6e6bc55a96316dc0 14-Jan-2016 David Gross <dgross@google.com> Add Java reflection for "#pragma rs reduce".

Also:
- test.py now recognizes "Script*.java.expect" files as masters for comparing
reflected code the same way "stderr.txt.expect" and "stdout.txt.expect" are
masters for comparing compiler stderr and stdout.
- gReflectionTypes[] now has a '"common name" in script (C99)' column (e.g., "short" is
the common name by which a type appears in script code, in contrast with "int16_t"
which is the name by which a type is reflected in NDK code).

Bug: 23535724
Change-Id: I7960968bb98a17e33fe23415f7927cac537b72a3
/frameworks/compile/slang/slang_rs_export_type.cpp
2907b2a2768bc32f75867513528c8d7419e44780 22-Dec-2015 David Gross <dgross@google.com> Minor miscellaneous cleanup to type export facility.

(This is needed by general reduction.)

DETAILS:

Make certain functions const-clean.

TypeExportable() needs to recognize that it cannot export function
types, rather than asserting if it sees them.

Add comments to gReflectionTypes[] for readability.

When attempting RSExportType::Create(), allow a variable "containing"
the type (not "of" the type) to be specified. This is important
because certain error message reporting absolutely requires the
variable to be known -- such as when
ConstantArrayTypeExportableHelper() wants to report something like
"multidimensional arrays cannot be exported".

Change-Id: Iff49effdf7cb71184af5846217fde5a493ce61e9
/frameworks/compile/slang/slang_rs_export_type.cpp
048eb8a363270f088ee8e6879bc6620cfe97392d 17-Dec-2015 David Gross <dgross@google.com> Merge "Cleanup: RSExportType::getSize() has inconsistent semantics."
657d20afa621219c1eed72178d1325fd4409f458 17-Dec-2015 David Gross <dgross@google.com> Cleanup: RSExportType::getSize() has inconsistent semantics.

This is a virtual method with different semantics for different
classes in the type hierarchy:
RSExportPrimitiveType: Returns number of bytes occupied by type
RSExportPointerType: Returns 1
RSExportVectorType: Returns number of bytes occupied by one element
(i.e., of the component type)
RSExportMatrixType: Returns 1
RSExportConstantArrayType: Returns the number of array elements
RSExportRecordType: Returns 1

The fix is to replace this method with methods whose names
indicate their actual semantics.

Bug: 26235282
Change-Id: Ic7c5cfd1b73a0b6e7e6fd4ed0495de3877adf0e8
/frameworks/compile/slang/slang_rs_export_type.cpp
13fad85b3c99a37c17d8acfec72f46b8ee64e912 24-Nov-2015 Stephen Hines <srhines@google.com> Void pointers can't be exported.

Bug: http://b/25853842

Change-Id: I5b11fd14b6cd57a06522e921c62ed033488aa08e
/frameworks/compile/slang/slang_rs_export_type.cpp
5f3da4bf52b327dbf5b6a33f340196f43d542159 21-Oct-2015 Nicolas Collin <nicolas.collin@imgtec.com> Extend C++ reflection layer constant arrays and fix matrix types.

Correct the naming of the matrix types to use the correct case and
extend support for constant array types.
Add two related tests P_array_cpp and P_matrix_cpp.

Change-Id: Ibceca26b01201fd4d1c85a3921ed2918fc458d59
/frameworks/compile/slang/slang_rs_export_type.cpp
7682b663581dd8f67b422f6f2f31692ab2f870e3 31-Jul-2015 Matt Wala <wala@google.com> Add Java reflection for reduce-style kernels in slang.

Bug: 22631253

Change-Id: I43de647a45c02d51cb256d206b64e159daf13864
/frameworks/compile/slang/slang_rs_export_type.cpp
33ea573b6df7b7fe48d2b68d4c479f33082e3c0d 17-Jun-2015 Stephen Hines <srhines@google.com> Fix potential nullptr dereference.

Bug: 21597073

We must use dyn_cast_or_null<> instead of dyn_cast<>, because we aren't
guaranteed to always be passed a NamedDecl.

Change-Id: I7b00eacc639a688f8e2fdbeea80b87a01372e232
/frameworks/compile/slang/slang_rs_export_type.cpp
ab94bccca64c9b126cbd1b732aa5e681d8639b99 12-Jun-2015 Stephen Hines <srhines@google.com> Move the error for pointers in structures earlier in the compile.

Bug: 21597073

This fixes an issue where a function argument is not checked for
compatibility until the reflected code generation (at which point the
message is far more cryptic). We do this by checking parameters for
externally-visible functions and externally-visible globals in our
ValidateType() routine.

Change-Id: I5ab9db1a11ed0e395c7623f1c9997632da057269
/frameworks/compile/slang/slang_rs_export_type.cpp
e4dd17d7b2a292a600756da7680beecd78f74033 07-Apr-2015 Pirama Arumuga Nainar <pirama@google.com> Add Half support in slang

Bug: 7342860

- Enable NativeHalfType and HalfArgsAndReturns for Langopts for API >=
23
- Add half and its vector variants to the list of reflected types
- Use addF16 as the FieldPacker method for setting Float16 values.
- Add tests that HalfArgumentsAndReturns is not enabled on API < 23.
This should serve as an indirect test that NativeHalfType is also
disabled.

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

Change-Id: I19e441e193637ddb39b3afb3bc95579755ac0a90
/frameworks/compile/slang/slang_rs_export_type.cpp
fe41c8da501e5a742f1aa6fade2592b4b80bca3b 06-Sep-2014 Stephen Hines <srhines@google.com> am 340b5550: Fix dangling reference to a local std::string.

* commit '340b5550cf63b6beae3b12c2e91377bce7704c34':
Fix dangling reference to a local std::string.
340b5550cf63b6beae3b12c2e91377bce7704c34 05-Sep-2014 Stephen Hines <srhines@google.com> Fix dangling reference to a local std::string.

Bug: 16031597

llvm::StringRefs are just lightweight wrappers around strings, and don't
retain/own any of the storage for the actual underlying string. This causes
lifetime issues if any local std::string objects that are then wrapped by
llvm::StringRef ever escape. When the local object goes out of scope, we are
left with a dangling reference.

Valgrind helped us to catch this happening for constant array exports, which
only ever use a statically named "<ConstantArray>" reference, so we can
simply replace it with static C string (wrapped by llvm::StringRef).

Change-Id: I0a9fae2687bc9f53d091d56cf15f99bb75ca46e4
/frameworks/compile/slang/slang_rs_export_type.cpp
a2324a90a6ea0522988f0753b6372249fa5f43db 22-Aug-2014 Stephen Hines <srhines@google.com> am 03ec6ed2: am 10dc6f31: Merge "Replace the NULL macro with nullptr literal."

* commit '03ec6ed2ecb9adf0cf125b0fa6c96844f093d4d0':
Replace the NULL macro with nullptr literal.
5abbe0e9ca2508260b627ffef2bf01e2554e8357 13-Aug-2014 Chris Wailes <chriswailes@google.com> Replace the NULL macro with nullptr literal.

Change-Id: I33609969cd0d7aa55eaa83fb2c65f5faa6d55fa0
/frameworks/compile/slang/slang_rs_export_type.cpp
e46265d27df092fbd911075403ec04d9c7ef8de1 18-Aug-2014 Tim Murray <timmurray@google.com> Fix unsigned long reflection with slang.

bug 16846318

Change-Id: If6c207b757a716029aae58a6b12601e16c296438
/frameworks/compile/slang/slang_rs_export_type.cpp
a6bce2db689b1ad086860ed3f5845a00489e3a49 05-Aug-2014 Tim Murray <timmurray@google.com> Fix two bugs for 64-bit slang.

The first is to handle structs in invoke parameter lists by assuming struct and
not struct*. The second is to not cache LLVM types for RS object types because
it breaks on 64-bit compilation.

Cherry-pick of d56a92fc2b1d417ce53d9550548fe1661fa37d40

Change-Id: I26d7dd7395ef0146eb84d43cbec5cf8d49d09697
/frameworks/compile/slang/slang_rs_export_type.cpp
d56a92fc2b1d417ce53d9550548fe1661fa37d40 05-Aug-2014 Tim Murray <timmurray@google.com> Fix two bugs for 64-bit slang.

The first is to handle structs in invoke parameter lists by assuming struct and not struct*. The second is to not cache LLVM types for RS object types because it breaks on 64-bit compilation.

Change-Id: I26d7dd7395ef0146eb84d43cbec5cf8d49d09697
/frameworks/compile/slang/slang_rs_export_type.cpp
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_rs_export_type.cpp
b095e05fef8f0230ab42eaed7a06c3b2d698189a 17-May-2014 Jean-Luc Brouillet <jeanluc@google.com> Replace macros with equivalent inline functions.

Change-Id: Ibb9db8ffe20513ca1ec56403c632e10e82a4fe86
/frameworks/compile/slang/slang_rs_export_type.cpp
01321838204e213b314f7d6fa5bfc1f94dbf347e 23-May-2014 Jean-Luc Brouillet <jeanluc@google.com> Remove obsolete comments

Change-Id: I30ca59ef860fbc976b8fe6bc21cbd50146b19a6a
/frameworks/compile/slang/slang_rs_export_type.cpp
eca0534a31b6185d6ab758f5e97acd7a4cb21e8e 15-May-2014 Jean-Luc Brouillet <jeanluc@google.com> Add details to the TODO, simplify dummy names

Change-Id: I37451d8217c3d61ea76db377785045edb2d5c4b0
/frameworks/compile/slang/slang_rs_export_type.cpp
c95381a2c3b6e9117901eef0687e861e4d533bfe 15-May-2014 Jean-Luc Brouillet <jeanluc@google.com> Make virtual getTypeStoreSize and getTypeAllocSize

Change-Id: I898d7b21d7856559e75d80c6147fc4b4229c75dd
/frameworks/compile/slang/slang_rs_export_type.cpp
cec9b65aa890dea58e39951900ae13efb8d11703 15-May-2014 Jean-Luc Brouillet <jeanluc@google.com> Move DataType enum out of RSExportPrimitiveDataType.

It applies to more than just Primitives and should not have been in there.

Change-Id: If2b6a9d2a87a05176a74bcf7212f65cf1cdf67fe
/frameworks/compile/slang/slang_rs_export_type.cpp
2354442e34a47e27dad019df96062c7f620e853a 15-May-2014 Jean-Luc Brouillet <jeanluc@google.com> Remove obsolete unused code

Change-Id: Iead651dc9e0321d36bb653bc178ac1a9af6d34f9
/frameworks/compile/slang/slang_rs_export_type.cpp
474655a402e70cb329e1bcd4ebbe00bdc5be4206 29-Apr-2014 Jean-Luc Brouillet <jeanluc@google.com> Remove rs_spec_gen and associated macros.

Also, enable new data types to be defined, out of order.
More CLs are coming to continue refactoring the code and removing
duplication.

modified: Android.mk
deleted: RSSpec.mk
modified: slang_rs_export_element.cpp
modified: slang_rs_export_type.cpp
modified: slang_rs_export_type.h
modified: slang_rs_metadata_spec_encoder.cpp
modified: slang_rs_object_ref_count.cpp
modified: slang_rs_object_ref_count.h
deleted: slang_rs_spec_table.cpp
modified: slang_rs_type_spec.h

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

Change-Id: Icd59efa1197098076555c505c31939866e504a83
/frameworks/compile/slang/slang_rs_export_type.cpp
d3f7527b105d21f1c69d3473eb88a762f2c3ab5a 17-Jan-2014 Jean-Luc Brouillet <jeanluc@google.com> Add ReportErrror/Warning to RSContext.

Remove a lot of boilerplate code by adding error reporting methods to RSContext. There are still a few additional files that could be cleaned. That will be for another CL someday.

Change-Id: I6a261735720227ac87d94dbdea5ce4a7b8ef6cca
/frameworks/compile/slang/slang_rs_export_type.cpp
48d893dc7794b3cfb74f35955ca763ee4170f9ad 07-Dec-2013 Stephen Hines <srhines@google.com> Support reflection of enums.

Prior versions would just crash when attempting to reflect an enum type.
This patch maps enums to integers for reflection in Java.

Change-Id: I5b278d670564ceb606a6b96804f76a798bedc89c
/frameworks/compile/slang/slang_rs_export_type.cpp
8de1922e037612f2521acac2f4c4289a9f71450d 24-Aug-2013 Stephen Hines <srhines@google.com> Handle implicit array dimensions properly.

Bug: 10461673
Change-Id: I681f918d89983522dd162d7f4606ed5811ab2560
/frameworks/compile/slang/slang_rs_export_type.cpp
44f10063c2c08dab103a44cded0c3a288d65d43b 13-Jun-2013 Stephen Hines <srhines@google.com> Update slang for LLVM merge to r183849.

s/getLinkage/getFormalLinkage
Path.h -> PathV1.h
Fix test output diagnostics related to pragma location

Change-Id: I7ab5372e848494ac40f1284eb6f9accc18092ad7
/frameworks/compile/slang/slang_rs_export_type.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_rs_export_type.cpp
b0fabe574945bfa85e688e77e9dcb5341fe08840 08-Jan-2013 Stephen Hines <srhines@google.com> Fix rs_matrix destructor issue.

Bug: 7949301

This change fixes the destructor issue for rs_matrix types. We need to skip
creating a destructor if there are no reference-counted RS object types in
the struct. We still need to zero-init all RS object types (ref-counted or
not, as is the case for rs_matrix*). I also fix another issue where a missing
struct definition could cause an early parser crash (i.e. before the standard
clang errors kick in and notice that you are using an undefined struct).

Change-Id: If2009d96f35a8cb693431aaeae3cb4b5642695fa
/frameworks/compile/slang/slang_rs_export_type.cpp
fdae63e8142f56521813f59e0c506ed3a1636021 28-Nov-2012 Stephen Hines <srhines@google.com> Fix overly strict check for float3 in structures.

We were accidentally being too strict and generating an error for float3
in structures, even when they were not exported. This change restores the
original functionality.

Change-Id: I8f0b5881d670c37a23ca2efc575440a083befcbe
/frameworks/compile/slang/slang_rs_export_type.cpp
11274a7324b478ec13e1d10a1b81350b34a65ab1 27-Sep-2012 Stephen Hines <srhines@google.com> Validate FS (and RS) ASTs.

This change adds a new RSCheckAST class that is used to handle validation
of the final AST. The checks include existing RS checks (for accepted types)
and new checks for Filterscript (like disallowing pointers, unions and
> 32 bit types completely). The refactoring also fixes a subtle union bug
that existed in prior versions of llvm-rs-cc. We also add an implicit
pragma for "rs_fp_relaxed" by default on Filterscript.

Bug: 7166741

Change-Id: Ia077783b4caba0bbd89df2ab3827e9f4d1009eea
/frameworks/compile/slang/slang_rs_export_type.cpp
b13b85e31ac978254cb1ed7653f149f8a3eef460 01-Sep-2012 Stephen Hines <srhines@google.com> Structs containing vectors of dimension 3 cannot be exported before ICS.

BUG=5609007
BUG=34600 (http://code.google.com/p/android/issues/detail?id=34600)

We forbid the use of things like float3 in exported structures for older
target APIs, because it results in a runtime exception every time. This is
due to not padding the elements appropriately on the driver-side, while the
LLVM representation is padded.

Change-Id: I297af3418e733f0ab3996999be4a8f746f24da40
/frameworks/compile/slang/slang_rs_export_type.cpp
43730fe3c839af391efe6bdf56b0479860121924 03-Aug-2012 Shih-wei Liao <sliao@google.com> Apply changes to migrate to CLANG-160673-20120724.

Change-Id: I666df2ff91532318883dd48ea1249178b2ebda81
/frameworks/compile/slang/slang_rs_export_type.cpp
aa82e74b08fcdc2e4e6c1f6796699566b331b656 11-Apr-2012 Stephen Hines <srhines@google.com> Multiple levels of pointers cannot be exported.

Change-Id: I533d26827fa650a481df65b2e20ac6dbc3559244
/frameworks/compile/slang/slang_rs_export_type.cpp
d5a84f6d49d64738e4bb7c9dea7242e48acad959 05-Apr-2012 Stephen Hines <srhines@google.com> Generate an error when exporting RS objects in structs/arrays.

BUG=6009244

Note that this error triggers when the following conditions are met:
1) We are running with a pre-JB target API.
2) We detect an RS object type inside another composite (struct/array) type.
3) The variable is going to be exported (i.e. non-static).
4) The variable must also be of a non-pointer type, since pointers only
reflect a bind() routine that does not use FieldPacker.

Change-Id: Id7ca47a4affed2a8774d1c9644e11d4ab02ff27f
/frameworks/compile/slang/slang_rs_export_type.cpp
5bfec8dd08b3bde9ba3b331e2115210b0e910eae 04-Apr-2012 Stephen Hines <srhines@google.com> Revert "Generate an error for exporting rs_objects in structs/arrays."

This reverts commit f5abb503e67587ad89bcec99ed925d4a75448dcd
/frameworks/compile/slang/slang_rs_export_type.cpp
f5abb503e67587ad89bcec99ed925d4a75448dcd 04-Apr-2012 Stephen Hines <srhines@google.com> Generate an error for exporting rs_objects in structs/arrays.

BUG=6009244

This is only an error in pre-JB builds that can't support proper ref-counting
within a FieldPacker.

Change-Id: Ib96b5ec2befa48ec44890391e518ad557e9a9117
/frameworks/compile/slang/slang_rs_export_type.cpp
1b6a0883cd6984e11e59b0c847fb334df1f41afc 12-Mar-2012 Jason Sams <jsams@google.com> start cpp reflection

BUG=5972398

Change-Id: Iede58fde457d16293345e741f80109f89e653ad5
/frameworks/compile/slang/slang_rs_export_type.cpp
2b8fb64be3047df940a219872b331eb11de2758d 09-Mar-2012 Stephen Hines <srhines@google.com> Removing DataKind completely from llvm-rs-cc.

BUG=5972398

Change-Id: I76fdb98fa60bd70468d088f9034acf00e443d6c8
/frameworks/compile/slang/slang_rs_export_type.cpp
47aca4e016665d333fdcd01a9cef16c13d7836a8 09-Mar-2012 Stephen Hines <srhines@google.com> More cleanup for reflection code.

BUG=5972398

1) Remove non-USER export kinds.
2) Removing some DataKind references.
3) More name refactoring to use getRSReflectionType().

Change-Id: I008aeb37820df37acea0db9300ff9594a40cb086
/frameworks/compile/slang/slang_rs_export_type.cpp
fdd1ba13a69501a1b91fdc9be31413215d467497 09-Mar-2012 Stephen Hines <srhines@google.com> Add getRSReflectionType to facilitate new C++ code.

BUG=5972398

Change-Id: I5d1efdbde6eb0b7bb139bdf672a056a4aa5f26e1
/frameworks/compile/slang/slang_rs_export_type.cpp
e67239de8d94975e7e2216ee6860ae2e6cb8b15a 25-Feb-2012 Stephen Hines <srhines@google.com> Style violation cleanup.

Change-Id: Idb127f2fd6e637039454f47299360aec5a4edfe8
/frameworks/compile/slang/slang_rs_export_type.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_rs_export_type.cpp
b69aa6557572c9ca91c46add3016962af0c993e7 22-Jul-2011 Stephen Hines <srhines@google.com> Fix double delete (from RSExportable during teardown).

I should not have attempted to delete the storage in this case. At this point
in compilation, we have already appended it to a list of objects to be cleaned
up. This results in a mistaken double deletion of the same object, which in
turn causes the compiler to seg fault (instead of terminating nicely).

Change-Id: I479153e146ef3ed3a5c728494c35d7d2b75fc292
/frameworks/compile/slang/slang_rs_export_type.cpp
a67e4451d0d03b4ab7866b64807d95a8399c73a0 20-Jul-2011 Stephen Hines <srhines@google.com> Remove ArrayRefs!

Change-Id: Ie49fde338437a600384f10c5c7a730691bd0b9a4
/frameworks/compile/slang/slang_rs_export_type.cpp
7c67e578c760408dba0c2f64da6e074dd8b56fd9 19-Jul-2011 Shih-wei Liao <sliao@google.com> Apply changes to migrate to upstream API.

Change-Id: Ibe6060a0d1c42b9725524de7f4cb95551b711717
/frameworks/compile/slang/slang_rs_export_type.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_rs_export_type.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_rs_export_type.cpp
5baf6324a97430016026419deaef246ad75430fc 26-Apr-2011 Stephen Hines <srhines@google.com> Check RS functions (esp. init/root) for validity.

Change-Id: Ice65c8b691550e2d11caf621e0f88c822316601b
/frameworks/compile/slang/slang_rs_export_type.cpp
78e69cb06b9b0683b2ac9dcafde87b867690ef2f 23-Apr-2011 Stephen Hines <srhines@google.com> Forbid RS objects from being contained in unions.

This change also refactors variable validation in general for RS.
BUG=4283858

Change-Id: I4527986a07c9cf2babdc5b855cdb1f00e3535d5b
/frameworks/compile/slang/slang_rs_export_type.cpp
7207645766b118ef18081363bb58e39d3e715c2f 20-Apr-2011 Shih-wei Liao <sliao@google.com> Apply changes to migrate to upstream as of April 8th, 2011 from logan.

- Use llvm::StructType::get(LLVMContext &, ArrayRef<const Type *>,
bool) to create struct type instead of the ellipsis version.
Otherwise, an error about ambigious overload function will occur.

Change-Id: I8012d8d9fa10a89f28e858533d427807df7214d5
/frameworks/compile/slang/slang_rs_export_type.cpp
68318a14fe6d2debc1b9dce3fe71c42f5916eef5 11-Mar-2011 Shih-wei Liao <sliao@google.com> Fix struct size bug.

clang/AST/RecordLayout.h now uses CharUnits, which will return
the size of a struct using number of bytes as the unit. So we
no longer need the division which converts number of bits to
number of bytes.
RL->getSize().getQuantity() is equivalent to something like
sizeof operator.

Change-Id: Ib3a4ec67349a275dfb8a73c4eac860395b101a05
/frameworks/compile/slang/slang_rs_export_type.cpp
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_rs_export_type.cpp
f2174cfd6a556b51aadf2b8765e50df080e8f18e 10-Feb-2011 Stephen Hines <srhines@google.com> Handle struct reference counting.

Bug: 3092382

Change-Id: I215bd8245324ec2b7752a7c40817e3e5cd1c0e00
/frameworks/compile/slang/slang_rs_export_type.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_rs_export_type.cpp
feaca06fcb0772e9e972a0d61b17259fc5124d50 04-Feb-2011 Stephen Hines <srhines@google.com> Zero-initialize structs containing RS objects.

Bug: 3092382
Change-Id: I2fd80777db7ed52d8c0a1a598567399e08ce06a2
/frameworks/compile/slang/slang_rs_export_type.cpp
2ef9bc0cfbca2152d972c0975005f8c897c2a42c 14-Dec-2010 Stephen Hines <srhines@google.com> Convert fprintf -> diagnostic messages.

Proper support/test for multi-level pointer types.
Proper diagnostics for bit fields, which are currently
not supported.

Bug: 2954471
Change-Id: I347f14f02fcf7fbef9f6e5dde5b4e948391a0691
/frameworks/compile/slang/slang_rs_export_type.cpp
24e79f69125cf87fcaa78c04510a831037203eeb 13-Dec-2010 Stephen Hines <srhines@google.com> Refactor diagnostics for constant array exports.

Bug: 3171195
Change-Id: I9062b583b6d5fe7bf6590000b8c745de4e70e7a1
/frameworks/compile/slang/slang_rs_export_type.cpp
dd6206bb61bf8df2ed6b643abe8a29c48a315685 10-Dec-2010 Stephen Hines <srhines@google.com> Arrays of width 3 vector types cannot be exported.

Bug: 3171195
Change-Id: I7deab4ab9c7f8650bce7c597fae2a0dc013f6f71
/frameworks/compile/slang/slang_rs_export_type.cpp
a7b7518aa3725d5cff1c1a6319ec7a6b8b244e0e 08-Dec-2010 Stephen Hines <srhines@google.com> Check exported array elements for proper equality.

Bug: 3263454
Change-Id: I84f070bb9bf75fe16aae7195c39c921589bd7350
/frameworks/compile/slang/slang_rs_export_type.cpp
cd440ee9b3bdb7985a20b2cd4b0f8229de34f0a9 06-Dec-2010 Stephen Hines <srhines@google.com> Forbid unions from being exported by llvm-rs-cc.

This also adds a directed F_union test.

Bug: 2954471
Change-Id: I094e2a64df1deabb014ce09a42e5f1ef91b563d0
/frameworks/compile/slang/slang_rs_export_type.cpp
e5e64432476a44b59c61ded233b1149109c7a7c3 03-Dec-2010 Stephen Hines <srhines@google.com> Improved error messages for structs.

This change also adds two new tests for anonymous structures (both with and
without an associated typedef). I have also updated test.py to support a more
verbose output for dumping the actual test commands that are executed.

Change-Id: Ic1edc8d4e98c2017611430eb581c335146ccc927
/frameworks/compile/slang/slang_rs_export_type.cpp
c808a99831115928b4648f4c8b86dc682594217a 30-Nov-2010 Stephen Hines <srhines@google.com> Add prelim error check for pointers in structs.

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

Change-Id: I26e043849bce2a4b41ae132fbe0c882f4a6f112f
/frameworks/compile/slang/slang_rs_export_type.cpp
9e5b503349719144f63ccb7c62ee9c291a7d83b8 03-Nov-2010 Stephen Hines <srhines@google.com> Use Clang object references instead of pointers.

Change-Id: Ief0e78859572761d880eaad9ae854f14e65da2c4
/frameworks/compile/slang/slang_rs_export_type.cpp
b1771ef128b10c4d4575634828006bfba20b1d9c 22-Oct-2010 Zonr Chang <zonr@google.com> Exclude rs_matrixNxN from being RS object type.

rs_matrix{2x2, 3x3, 4x4} (RS matrix type) is very different than RS
object type like rs_allocation. This commit teaches llvm-rs-cc to learn
it.

NOTE: Currenrly RS matrix type + RS object type = RS specific type.
/frameworks/compile/slang/slang_rs_export_type.cpp
a7a828d1ff95c5a8f2327f56a137a2bcb3a9a8fa 21-Oct-2010 Zonr Chang <zonr@google.com> Add convertToSpecType() for every RSExportType derivative.

convertToSpecType() can convert a RSExportType (used by llvm-rs-cc
internally for reflection engine) into union RSType (used by external
source such as libbcc) defined in the slang_rs_type_spec.h.
/frameworks/compile/slang/slang_rs_export_type.cpp
3cd3dd327445fcfa49f0e96cb2de2055bce541e9 21-Oct-2010 Zonr Chang <zonr@google.com> Bug fix: support self-referential struct type.
/frameworks/compile/slang/slang_rs_export_type.cpp
7363d8430db732c42d392fcab47cf0e3f8eb4515 21-Oct-2010 Zonr Chang <zonr@google.com> Revert "Bug fix: support self-referential struct type."

This reverts commit af5cef07b48a678a416d554b037e0d6dbe958eb4.
/frameworks/compile/slang/slang_rs_export_type.cpp
d6f9fedf1b32c27c0bcaddd13d7b741ab5ad74b8 21-Oct-2010 Zonr Chang <zonr@google.com> Bug fix: support self-referential struct type.
/frameworks/compile/slang/slang_rs_export_type.cpp
a65ec168e41e3ee9c6e8ac04cde694bbbfc2590a 16-Oct-2010 Zonr Chang <zonr@google.com> Unify type spec by creating rs-spec-gen.

rs-spec-gen (slang_rs_spec_table.cpp) will help llvm-rs-cc to share
the RS spec it used across the other projects. This will makes code
cleaner and therefore easier to add new spec/synchronize the spec
between other project (e.g., libbcc and libRS).

This CL is the first part. It eliminated the needs of
slang_rs_export_element_support.inc and
slang_rs_export_type_support.inc.
/frameworks/compile/slang/slang_rs_export_type.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_rs_export_type.cpp
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_rs_export_type.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_rs_export_type.cpp
a5d2c232d56b04292cb51c8fb343aef990f7970f 12-Oct-2010 Stephen Hines <srhines@google.com> Support for unsigned long and unsigned long long.

Change-Id: I8e3b6a90fa9119f3d98c5f276df2590b7690d22b
/frameworks/compile/slang/slang_rs_export_type.cpp
a41ce1d98094da84643995d40d71c529905123fc 05-Oct-2010 Zonr Chang <zonr@google.com> Fix memory leak of RSExport* object create in processExport(). Now, they will
properly be freed after their associated RSContext was destroyed.
/frameworks/compile/slang/slang_rs_export_type.cpp
6b6320ad5faee29e0f75fe937e40156746ef9e80 05-Oct-2010 Zonr Chang <zonr@google.com> De-virtualize the RSExportType::getClass().
/frameworks/compile/slang/slang_rs_export_type.cpp
2e1dba6c779a0ae55c76d36a3c03553e16725ab7 05-Oct-2010 Zonr Chang <zonr@google.com> Rewrite the RSExportConstantArrayType to better support reflecting
constant-sized array variable.
/frameworks/compile/slang/slang_rs_export_type.cpp
0da0a7dc51c25943fe31d0bfccbdfee326a3199c 05-Oct-2010 Zonr Chang <zonr@google.com> 1. Rewrite reflection of parameter packet in RSExportFunc. In order to
generate the correct call (i.e., all parameters in the call instruction
must match the target function signature) regardless of ABI, we construct type
of parameter packet directly from target function prototype (which may not be
the same as the one declared in the source since Clang may modified it to
the type which is better supported by the target ABI.)
2. Rewrite reflection of RSExportRecordType to use clang::ASTRecordLayout. This
corrects the reflection of struct type when tail padding and field alignment
involve. This improves stability of RSExportRecordType reflection.
/frameworks/compile/slang/slang_rs_export_type.cpp
92b344a51c6c4934e96882bd401e4b13d6d03db8 05-Oct-2010 Zonr Chang <zonr@google.com> Create RSExportMatrixType which is a subclass of RSExportType
to support rs_matrix{2x2,3x3,4x4} explicitly.
/frameworks/compile/slang/slang_rs_export_type.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_rs_export_type.cpp
91a3783ce1f4eb9ad6e9c1ecdbd27f3d6dc58634 04-Oct-2010 Shih-wei Liao <sliao@google.com> 1. Reorder DataTypeBoolean, DataTypeRSMatrix2x2, DataTypeRSMatrix3x3, and DataTypeRSMatrix4x4 in RSExportPrimitiveType::DataType.
2. Refine the RSExportPrimitiveType::DataKind.

Change-Id: Ida0849e68b00571e0f055089ccc5a46d26760390
/frameworks/compile/slang/slang_rs_export_type.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_rs_export_type.cpp
8d75dc46a30e8617bd29dfe00492c5aab02dacf5 02-Oct-2010 Stephen Hines <srhines@google.com> Support for signed 64-bit integer type.

b/3050131 exported renderscript structures don't appear to support int64_t

Change-Id: I834f11394fa8060a56201b9709fa058d5ccecb5b
/frameworks/compile/slang/slang_rs_export_type.cpp
70842c7439bd523611f3ed232ecc6de844932145 21-Sep-2010 Stephen Hines <srhines@google.com> Add support for Float64 (double) to slang.

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

Change-Id: I80934814ae64d11f0edebfa3b131164207f1aca0
/frameworks/compile/slang/slang_rs_export_type.cpp
1ebc0ca6ffa7effb875883d18205ed4943ab8fc2 14-Sep-2010 Shih-wei Liao <sliao@google.com> Implement the ARM-specific struct layout ABI in exportable functions parameters for rs. Add the ABI-compliant #args when needed.
My old code inadvertently assumed x86 ABIs for structs, but ARM ABI/calling convention is tricky here, compared to x86's. Also, fixed the type promotion problem.
Note that the most portable fix is to add a shim layer in Clang which is a BIG undertaking like PNaCl. Let's put in the potential fix for b/2988615 now.

Change-Id: I1d9fe4d803485b55bb72112ea8e17c1f4a19dd32
/frameworks/compile/slang/slang_rs_export_type.cpp
f8149d9e5a3795e9952717ee6346789a134c55c7 22-Aug-2010 Shih-wei Liao <sliao@google.com> Handle ConstantArray Type.

Change-Id: Id3677e818693d6f95445d67116db3d6766d1fbd6
/frameworks/compile/slang/slang_rs_export_type.cpp
4d7dc59dd4d82aeeb7d77d1cfc048944e6e2bdba 20-Aug-2010 Shih-wei Liao <sliao@google.com> Memory error: Fix "Invalid read of size 1" and "Jump based on uninitialize values" errors.

Change-Id: Ida47f791c6432c45786e20c525dad6dc4535142b
/frameworks/compile/slang/slang_rs_export_type.cpp
116d3d2fcbde4970b07263deeeabc341ff8d76e9 20-Aug-2010 Shih-wei Liao <sliao@google.com> Fix the size of Matrix

Change-Id: Ie947a3242f18140f252e710360c0b7f1f7cb7d41
/frameworks/compile/slang/slang_rs_export_type.cpp
ca3be0350773a63b7792eedc216a7808e42e77ea 18-Aug-2010 Shih-wei Liao <sliao@google.com> Implement rs_matrix2x2, rs_matrix3x3, rs_matrix4x4

Change-Id: I6a7e829eb41c84e13f91fd3fa7929d6929a8cff9
/frameworks/compile/slang/slang_rs_export_type.cpp
0a3f20ec28ed6f5ae1ed5d61f6b6e3e577f7f5d1 10-Aug-2010 Shih-wei Liao <sliao@google.com> Handle RecordLayout and get the Alloc size.

Fix bug b/2901942 "hang in renderscript."

Change-Id: Ia33c64f47656a93f6de1eb95e3e983266289c8ba
/frameworks/compile/slang/slang_rs_export_type.cpp
1f0d88fbff28e4e2dd563d93c8fe0047381c09cc 25-Jun-2010 Shih-wei Liao <sliao@google.com> Use addBoolean successfully and bool->boolean reflection.

Change-Id: I2c31ef41766f8ace472ed289012de336e43e9aa9
/frameworks/compile/slang/slang_rs_export_type.cpp
cbbdd92b981296f347b02c0fa45621912ea8195c 24-Jun-2010 Shih-wei Liao <sliao@google.com> Add rs_font.

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

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