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

- 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
277fd5e6545c8ba1272027ee6e6bc55a96316dc0 14-Jan-2016 David Gross <dgross@google.com> Add Java reflection for "#pragma rs reduce".

- 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
2907b2a2768bc32f75867513528c8d7419e44780 22-Dec-2015 David Gross <dgross@google.com> Minor miscellaneous cleanup to type export facility.

(This is needed by general reduction.)


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
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
13fad85b3c99a37c17d8acfec72f46b8ee64e912 24-Nov-2015 Stephen Hines <srhines@google.com> Void pointers can't be exported.

Bug: http://b/25853842

Change-Id: I5b11fd14b6cd57a06522e921c62ed033488aa08e
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
7682b663581dd8f67b422f6f2f31692ab2f870e3 31-Jul-2015 Matt Wala <wala@google.com> Add Java reflection for reduce-style kernels in slang.

Bug: 22631253

Change-Id: I43de647a45c02d51cb256d206b64e159daf13864
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
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
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 >=
- 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

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

Change-Id: I19e441e193637ddb39b3afb3bc95579755ac0a90
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
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
e46265d27df092fbd911075403ec04d9c7ef8de1 18-Aug-2014 Tim Murray <timmurray@google.com> Fix unsigned long reflection with slang.

bug 16846318

Change-Id: If6c207b757a716029aae58a6b12601e16c296438
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
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
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
b095e05fef8f0230ab42eaed7a06c3b2d698189a 17-May-2014 Jean-Luc Brouillet <jeanluc@google.com> Replace macros with equivalent inline functions.

Change-Id: Ibb9db8ffe20513ca1ec56403c632e10e82a4fe86
01321838204e213b314f7d6fa5bfc1f94dbf347e 23-May-2014 Jean-Luc Brouillet <jeanluc@google.com> Remove obsolete comments

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

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

Change-Id: I898d7b21d7856559e75d80c6147fc4b4229c75dd
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
2354442e34a47e27dad019df96062c7f620e853a 15-May-2014 Jean-Luc Brouillet <jeanluc@google.com> Remove obsolete unused code

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

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
ee4016d1247d3fbe50822de279d3da273d8aef4c 11-Apr-2014 Tim Murray <timmurray@google.com> Update Slang for Clang/LLVM 3.5a.

Change-Id: Icd59efa1197098076555c505c31939866e504a83
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
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
8de1922e037612f2521acac2f4c4289a9f71450d 24-Aug-2013 Stephen Hines <srhines@google.com> Handle implicit array dimensions properly.

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

Path.h -> PathV1.h
Fix test output diagnostics related to pragma location

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

Change-Id: I4cf3718041d8876d4a23a412b6b4fa4226ec3b50
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
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
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
b13b85e31ac978254cb1ed7653f149f8a3eef460 01-Sep-2012 Stephen Hines <srhines@google.com> Structs containing vectors of dimension 3 cannot be exported before ICS.

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
43730fe3c839af391efe6bdf56b0479860121924 03-Aug-2012 Shih-wei Liao <sliao@google.com> Apply changes to migrate to CLANG-160673-20120724.

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

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


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
5bfec8dd08b3bde9ba3b331e2115210b0e910eae 04-Apr-2012 Stephen Hines <srhines@google.com> Revert "Generate an error for exporting rs_objects in structs/arrays."

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


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

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


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


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


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

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


Change-Id: I5d1efdbde6eb0b7bb139bdf672a056a4aa5f26e1
e67239de8d94975e7e2216ee6860ae2e6cb8b15a 25-Feb-2012 Stephen Hines <srhines@google.com> Style violation cleanup.

Change-Id: Idb127f2fd6e637039454f47299360aec5a4edfe8
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
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
a67e4451d0d03b4ab7866b64807d95a8399c73a0 20-Jul-2011 Stephen Hines <srhines@google.com> Remove ArrayRefs!

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

Change-Id: Ibe6060a0d1c42b9725524de7f4cb95551b711717
18c8829f2bd3cbe0d02471588c6643c0a8c6ca3c 15-Jul-2011 Stephen Hines <srhines@google.com> Remove all explicit ArrayRef constructors.

Related BUG=5028838

Change-Id: I5867f8e5d7097ef349a6d1eda1681b0014ac66c9
83f0c6261efc8f397fc2509e3862bc6d0eb1e1c4 21-Jun-2011 Shih-wei Liao <sliao@google.com> Apply API changes to migrate to CLANG upstream.

Change-Id: I376a8a24c238c4e27d37c4f846b93e2f6e38d79c
5baf6324a97430016026419deaef246ad75430fc 26-Apr-2011 Stephen Hines <srhines@google.com> Check RS functions (esp. init/root) for validity.

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

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

- 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

- Add const qualifier for several unsafe type cast.
f2174cfd6a556b51aadf2b8765e50df080e8f18e 10-Feb-2011 Stephen Hines <srhines@google.com> Handle struct reference counting.

Bug: 3092382

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

Bug: 3430674
Change-Id: I3400238652449cde84275cc2a770f405332d9544
feaca06fcb0772e9e972a0d61b17259fc5124d50 04-Feb-2011 Stephen Hines <srhines@google.com> Zero-initialize structs containing RS objects.

Bug: 3092382
Change-Id: I2fd80777db7ed52d8c0a1a598567399e08ce06a2
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
24e79f69125cf87fcaa78c04510a831037203eeb 13-Dec-2010 Stephen Hines <srhines@google.com> Refactor diagnostics for constant array exports.

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

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

Bug: 3263454
Change-Id: I84f070bb9bf75fe16aae7195c39c921589bd7350
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
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
c808a99831115928b4648f4c8b86dc682594217a 30-Nov-2010 Stephen Hines <srhines@google.com> Add prelim error check for pointers in structs.

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

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

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

NOTE: Currenrly RS matrix type + RS object type = RS specific type.
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.
3cd3dd327445fcfa49f0e96cb2de2055bce541e9 21-Oct-2010 Zonr Chang <zonr@google.com> Bug fix: support self-referential struct type.
7363d8430db732c42d392fcab47cf0e3f8eb4515 21-Oct-2010 Zonr Chang <zonr@google.com> Revert "Bug fix: support self-referential struct type."

This reverts commit af5cef07b48a678a416d554b037e0d6dbe958eb4.
d6f9fedf1b32c27c0bcaddd13d7b741ab5ad74b8 21-Oct-2010 Zonr Chang <zonr@google.com> Bug fix: support self-referential struct type.
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
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.
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

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.
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.
a5d2c232d56b04292cb51c8fb343aef990f7970f 12-Oct-2010 Stephen Hines <srhines@google.com> Support for unsigned long and unsigned long long.

Change-Id: I8e3b6a90fa9119f3d98c5f276df2590b7690d22b
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.
6b6320ad5faee29e0f75fe937e40156746ef9e80 05-Oct-2010 Zonr Chang <zonr@google.com> De-virtualize the RSExportType::getClass().
2e1dba6c779a0ae55c76d36a3c03553e16725ab7 05-Oct-2010 Zonr Chang <zonr@google.com> Rewrite the RSExportConstantArrayType to better support reflecting
constant-sized array variable.
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.
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.
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.
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
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
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
70842c7439bd523611f3ed232ecc6de844932145 21-Sep-2010 Stephen Hines <srhines@google.com> Add support for Float64 (double) to slang.

Change-Id: Ia1be4eda28f3bcf2bd75a556c4329324f7aa76a5
cecd11d2af5d45d8ba322bed61fb48a99c305528 21-Sep-2010 Shih-wei Liao <sliao@google.com> Fix warnings. Bug fix.

Change-Id: I80934814ae64d11f0edebfa3b131164207f1aca0
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
f8149d9e5a3795e9952717ee6346789a134c55c7 22-Aug-2010 Shih-wei Liao <sliao@google.com> Handle ConstantArray Type.

Change-Id: Id3677e818693d6f95445d67116db3d6766d1fbd6
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
116d3d2fcbde4970b07263deeeabc341ff8d76e9 20-Aug-2010 Shih-wei Liao <sliao@google.com> Fix the size of Matrix

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

Change-Id: I6a7e829eb41c84e13f91fd3fa7929d6929a8cff9
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
1f0d88fbff28e4e2dd563d93c8fe0047381c09cc 25-Jun-2010 Shih-wei Liao <sliao@google.com> Use addBoolean successfully and bool->boolean reflection.

Change-Id: I2c31ef41766f8ace472ed289012de336e43e9aa9
cbbdd92b981296f347b02c0fa45621912ea8195c 24-Jun-2010 Shih-wei Liao <sliao@google.com> Add rs_font.

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

Change-Id: If74da8e54d45511c8c9bb236bcfeec508f4f2439