This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "Linaro gcc mirror + linaro-local branches".
The branch, hjl/iamcu/improve has been updated discards edaf7b408321130511f0e241dbe43c8542a2cc34 (commit) discards 83631397ef593d142238ba84fc0d6769f91a13db (commit) discards c8d3b2392243cce3401c09314864c59817fb2cff (commit) via cba17c3b638ba350a608894a7011d6183b6a2c0e (commit) via 8c2a7a13178c5d6c82ecda260afd7ec5f1ebe717 (commit) via 1f1e466bebb682ec905c97352484f6a6132419b4 (commit) via c7101b2b8d1beeb985ef5938f043f96819498ccb (commit) via 7e3650b7e88225e70c615869c909f7d29d9d0019 (commit) via 0124237ff14017980cc53da1f167e308021d4fe9 (commit)
This update added new revisions after undoing existing revisions. That is to say, the old revision is not a strict subset of the new revision. This situation occurs when you --force push a change and generate a repository containing something like this:
* -- * -- B -- O -- O -- O (edaf7b408321130511f0e241dbe43c8542a2cc34) \ N -- N -- N (cba17c3b638ba350a608894a7011d6183b6a2c0e)
When this happens we assume that you've already had alert emails for all of the O revisions, and so we here report only the revisions in the N branch from the common base, B.
Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below.
- Log ----------------------------------------------------------------- commit cba17c3b638ba350a608894a7011d6183b6a2c0e Author: H.J. Lu hjl.tools@gmail.com Date: Wed Jul 8 04:55:05 2015 -0700
Add check_effective_target_iamcu
Skip tests which are incompatible with IA MCU.
diff --git a/gcc/testsuite/gcc.target/i386/i386.exp b/gcc/testsuite/gcc.target/i386/i386.exp index 8ca6c51..cf6778d 100644 --- a/gcc/testsuite/gcc.target/i386/i386.exp +++ b/gcc/testsuite/gcc.target/i386/i386.exp @@ -380,6 +380,16 @@ proc check_effective_target_avx512vbmi { } { } "-mavx512vbmi" ] }
+# Return 1 if the target is IA MCU. + +proc check_effective_target_iamcu {} { + return [check_no_compiler_messages iamcu assembly { + #ifndef __iamcu__ + #error NO + #endif + }] +} + # If a testcase doesn't have special options, use these. global DEFAULT_CFLAGS if ![info exists DEFAULT_CFLAGS] then { @@ -394,7 +404,12 @@ global runtests # Special case compilation of vect-args.c so we don't have to # replicate it 16 times. if [runtest_file_p $runtests $srcdir/$subdir/vect-args.c] { - foreach type { "" -mmmx -m3dnow -msse -msse2 -mavx -mavx2 -mavx512f } { + if [ check_effective_target_iamcu ] { + set types { "" } + } else { + set types { "" -mmmx -m3dnow -msse -msse2 -mavx -mavx2 -mavx512f } + } + foreach type $types { foreach level { "" -O } { set flags "$type $level" verbose -log "Testing vect-args, $flags" 1 @@ -404,8 +419,92 @@ if [runtest_file_p $runtests $srcdir/$subdir/vect-args.c] { }
# Everything else. -set tests [lsort [glob -nocomplain $srcdir/$subdir/*.[cS]]] -set tests [prune $tests $srcdir/$subdir/vect-args.c] +set pruned_tests $srcdir/$subdir/vect-args.c +set all_tests [lsort [glob -nocomplain $srcdir/$subdir/*.[cS]]] +if [ check_effective_target_iamcu ] { + # Skip tests which are incompatible with Intel MCU. + set tests {} + foreach t $all_tests { + if { [string match "$srcdir/$subdir/20001127-1.c" $t] \ + || [string match "$srcdir/$subdir/20080723-1.c" $t] \ + || [string match "$srcdir/$subdir/980226-1.c" $t] \ + || [string match "$srcdir/$subdir/980414-1.c" $t] \ + || [string match "$srcdir/$subdir/addr-sel-1.c" $t] \ + || [string match "$srcdir/$subdir/pause-2.c" $t] \ + || [string match "$srcdir/$subdir/pow-1.c" $t] \ + || [string match "$srcdir/$subdir/pr30848.c" $t] \ + || [string match "$srcdir/$subdir/pr45296.c" $t] \ + || [string match "$srcdir/$subdir/pr57736.c" $t] \ + || [string match "$srcdir/$subdir/pr57848.c" $t] \ + || [string match "$srcdir/$subdir/pr58048.c" $t] \ + || [string match "$srcdir/$subdir/pr66047.c" $t] \ + || [string match "$srcdir/$subdir/readeflags-1.c" $t] \ + || [string match "$srcdir/$subdir/sibcall-6.c" $t] \ + || [string match "$srcdir/$subdir/sse-5.c" $t] \ + || [string match "$srcdir/$subdir/aggregate-ret*.c" $t] \ + || [string match "$srcdir/$subdir/avx*.c" $t] \ + || [string match "$srcdir/$subdir/funcspec-*.c" $t] \ + || [string match "$srcdir/$subdir/long-double-*.c" $t] \ + || [string match "$srcdir/$subdir/pr57756*.c" $t] \ + || [string match "$srcdir/$subdir/pr59390*.c" $t] \ + || [string match "$srcdir/$subdir/pr59794-*.c" $t] \ + || [string match "$srcdir/$subdir/pr60205-*.c" $t] \ + || [string match "$srcdir/$subdir/pr61925-*.c" $t] \ + } { + continue + } + set options [dg-get-options $t] + if { ! [string match "*-mmmx*" $options] \ + && ! [string match "*-m3dnow*" $options] \ + && ! [string match "*-msse*" $options] \ + && ! [string match "*-mssse*" $options] \ + && ! [string match "*-mavx*" $options] \ + && ! [string match "*-madx*" $options] \ + && ! [string match "*-maes*" $options] \ + && ! [string match "*-mbmi*" $options] \ + && ! [string match "*-mclflushopt*" $options] \ + && ! [string match "*-mclwb*" $options] \ + && ! [string match "*-mf16c*" $options] \ + && ! [string match "*-mfma*" $options] \ + && ! [string match "*-mfxsr*" $options] \ + && ! [string match "*-mhle*" $options] \ + && ! [string match "*-mlzcnt*" $options] \ + && ! [string match "*-mmwaitx*" $options] \ + && ! [string match "*-mpclmul*" $options] \ + && ! [string match "*-mpcommit*" $options] \ + && ! [string match "*-mprefetchwt1*" $options] \ + && ! [string match "*-mprfchw*" $options] \ + && ! [string match "*-mrdrnd*" $options] \ + && ! [string match "*-mrdseed*" $options] \ + && ! [string match "*-mrtm*" $options] \ + && ! [string match "*-msha*" $options] \ + && ! [string match "*-mtbm*" $options] \ + && ! [string match "*-mxop*" $options] \ + && ! [string match "*-mxsave*" $options] \ + && ! [string match "*-mvzeroupper*" $options] \ + && ! [string match "*-march=i686*" $options] \ + && ! [string match "*-march=atom*" $options] \ + && ! [string match "*-march=core*" $options] \ + && ! [string match "*-march=nocona*" $options] \ + && ! [string match "*-march=pentium*" $options] \ + && ! [string match "*-march=amdfam10*" $options] \ + && ! [string match "*-march=athlon*" $options] \ + && ! [string match "*-march=barcelona*" $options] \ + && ! [string match "*-march=bdver*" $options] \ + && ! [string match "*-march=k6*" $options] \ + && ! [string match "*-march=k8*" $options] \ + && ! [string match "*-march=opteron*" $options] \ + && ! [string match "*-march=x86-64*" $options] \ + && ! [string match "*-march=native*" $options] \ + && ! [string match "*-mfpmath=*" $options] \ + && ! [string match "*-mregparm=*" $options] \ + } { + lappend tests $t + } + } +} else { + set tests $all_tests +}
# Main loop. dg-runtest $tests "" $DEFAULT_CFLAGS
commit 8c2a7a13178c5d6c82ecda260afd7ec5f1ebe717 Author: H.J. Lu hjl.tools@gmail.com Date: Wed Jul 8 08:28:03 2015 -0700
Limit alignment on error_mark_node variable
There is no need to try different alignment on variable of error_mark_node.
gcc/
PR target/66810 * varasm.c (align_variable): Don't try different alignment on variable of error_mark_node.
gcc/testsuite/
PR target/66810 * gcc.target/i386/pr66810.c: New test.
diff --git a/gcc/testsuite/gcc.target/i386/pr66810.c b/gcc/testsuite/gcc.target/i386/pr66810.c new file mode 100644 index 0000000..4778b37 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr66810.c @@ -0,0 +1,10 @@ +/* { dg-do compile { target ia32 } } */ +/* { dg-options "-mno-sse -mno-mmx -miamcu" } */ + +int vv; + +void +i (void) +{ + static int a[vv]; /* { dg-error "storage size" } */ +} diff --git a/gcc/varasm.c b/gcc/varasm.c index b69b3a3..be33cb4 100644 --- a/gcc/varasm.c +++ b/gcc/varasm.c @@ -1016,7 +1016,8 @@ align_variable (tree decl, bool dont_output_data) align = MAX_OFILE_ALIGNMENT; }
- if (! DECL_USER_ALIGN (decl)) + /* Don't try different alignment for error_mark_node. */ + if (! DECL_USER_ALIGN (decl) && TREE_TYPE (decl) != error_mark_node) { #ifdef DATA_ABI_ALIGNMENT unsigned int data_abi_align
commit 1f1e466bebb682ec905c97352484f6a6132419b4 Author: H.J. Lu hjl.tools@gmail.com Date: Wed Jul 8 15:32:58 2015 -0700
Define ATTRIBUTE_ALIGNED_VALUE to 32 for IA MCU
attribute ((aligned)) should align to the minimum of BIGGEST_ALIGNMENT, which is 4 bytes for -miamcu.
gcc/
PR target/66818 * config/i386/i386.h (ATTRIBUTE_ALIGNED_VALUE): Defined to 32 for IA MCU.
gcc/testsuite/
PR target/66818 * gcc.target/i386/pr66818.c: New test.
diff --git a/gcc/config/i386/i386.h b/gcc/config/i386/i386.h index f357e79..74334ff 100644 --- a/gcc/config/i386/i386.h +++ b/gcc/config/i386/i386.h @@ -811,7 +811,7 @@ extern const char *host_detect_local_cpu (int argc, const char **argv);
/* Alignment value for attribute ((aligned)). It is a constant since it is the part of the ABI. We shouldn't change it with -mavx. */ -#define ATTRIBUTE_ALIGNED_VALUE 128 +#define ATTRIBUTE_ALIGNED_VALUE (TARGET_IAMCU ? 32 : 128)
/* Decide whether a variable of mode MODE should be 128 bit aligned. */ #define ALIGN_MODE_128(MODE) \ diff --git a/gcc/testsuite/gcc.target/i386/pr66818.c b/gcc/testsuite/gcc.target/i386/pr66818.c new file mode 100644 index 0000000..d90394c --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr66818.c @@ -0,0 +1,5 @@ +/* { dg-do compile { target ia32 } } */ +/* { dg-options "-O2 -mno-sse -mno-mmx -miamcu" } */ + +struct dummy { int x __attribute__((aligned)); }; +int array[__alignof__(struct dummy) == 4 ? 1 : -1];
commit c7101b2b8d1beeb985ef5938f043f96819498ccb Author: H.J. Lu hjl.tools@gmail.com Date: Wed Jul 8 14:07:08 2015 -0700
Check int_size_in_bytes in ix86_return_in_memory
ix86_return_in_memory should check negative return from int_size_in_bytes, similar to other ports.
gcc/
PR target/66817 * config/i386/i386.c (ix86_return_in_memory): Return true if int_size_in_bytes returns negative for IA MCU.
gcc/testsuite/
PR target/66817 * gcc.target/i386/pr66817.c: New test.
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index 55a32ac..54ee6f3 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -8682,7 +8682,7 @@ ix86_return_in_memory (const_tree type, const_tree fntype ATTRIBUTE_UNUSED) /* Intel MCU psABI returns scalars and aggregates no larger than 8 bytes in registers. */ if (TARGET_IAMCU) - return VECTOR_MODE_P (mode) || size > 8; + return VECTOR_MODE_P (mode) || size < 0 || size > 8;
if (mode == BLKmode) return true; diff --git a/gcc/testsuite/gcc.target/i386/pr66817.c b/gcc/testsuite/gcc.target/i386/pr66817.c new file mode 100644 index 0000000..7ec18b7 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr66817.c @@ -0,0 +1,27 @@ +/* { dg-do compile { target ia32 } } */ +/* { dg-options "-O2 -mno-sse -mno-mmx -miamcu" } */ + +extern void abort (void); +int +main (int argc, char **argv) +{ + int size = 10; + typedef struct + { + char val[size]; + } + block; + block a, b; + block __attribute__((noinline)) + retframe_block () + { + return *(block *) &b; + } + b.val[0] = 1; + b.val[9] = 2; + a=retframe_block (); + if (a.val[0] != 1 + || a.val[9] != 2) + abort (); + return 0; +}
-----------------------------------------------------------------------
Summary of changes: gcc/c-family/ChangeLog | 5 +++++ gcc/c-family/c-ada-spec.c | 6 ++++++ gcc/c-family/c-ada-spec.h | 1 + gcc/config/i386/i386.h | 2 +- gcc/cp/ChangeLog | 4 ++++ gcc/cp/decl2.c | 2 ++ gcc/testsuite/ChangeLog | 10 ++++++++++ .../g++.dg/other/{dump-ada-spec-3.C => dump-ada-spec-9.C} | 9 ++------- gcc/testsuite/gcc.target/hppa/shadd-1.c | 2 +- gcc/testsuite/gcc.target/i386/pr66818.c | 5 +++++ 10 files changed, 37 insertions(+), 9 deletions(-) copy gcc/testsuite/g++.dg/other/{dump-ada-spec-3.C => dump-ada-spec-9.C} (74%) create mode 100644 gcc/testsuite/gcc.target/i386/pr66818.c
hooks/post-receive