This is an automated email from the git hooks/post-receive script.
tcwg-buildslave pushed a change to branch linaro-local/ci/tcwg_kernel/gnu-master-arm-mainline-allmodconfig in repository toolchain/ci/gcc.
from fd87572ba58 [Aarch64][SVE] Add copysign and xorsign support adds 970b326036a [AArch64, 1/6] Enable ARMv8.5-A in gcc adds 3a861b7b9e2 [AArch64, 2/6] Add new arch command line feaures from ARMv8.5-A adds 249c2fa7cfa [AArch64, 3/6] Restrict indirect tail calls to x16 and x17 adds db43f74e727 [AArch64, 4/6] Enable BTI: Add new <type> to -mbranch-protection. adds 15b179097a8 [AArch64, 5/6] Enable BTI : Add new pass for BTI. adds 559dff77106 [AArch64, 6/6] Enable BTI: Add configure option. adds 188ff54431d PR target/84010 * config/sparc/sparc.c (sparc_legitimize_ [...] adds 4e1b3f859fc * config/sparc/sparc.md (*tablejump_sp32): Merge into... [...] adds 456185c99cf Merge dmd upstream 6d5b853d3 adds 36950f7ec3c * config/i386/i386-protos.h (ix86_expand_xorsign): New pro [...] adds 9f0968030aa 2019-01-09 Thomas Koenig tkoenig@gcc.gnu.org adds f4d3c071e54 2019-01-09 Sandra Loosemore sandra@codesourcery.com adds 130bd651781 2019-01-09 Sandra Loosemore sandra@codesourcery.com adds 5fba18a15f0 2019-01-09 Sandra Loosemore sandra@codesourcery.com adds 07c11f2be5c 2019-01-09 Sandra Loosemore sandra@codesourcery.com adds 42c13a10c1b 2019-01-09 Sandra Loosemore sandra@codesourcery.com new 4f1634c53b2 libphobos: Merge phobos upstream b022e552a new c8059ac97b4 PR go/86343 * go-gcc.cc (Gcc_backend::set_placeholder_str [...] new 7fcc301fc78 Daily bump. new e66b219eb51 2019-01-09 Steven G. Kargl kargl@gcc.gnu.org
The 4 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "adds" were already present in the repository and have only been added to this reference.
Summary of changes: contrib/mklog | 2 +- gcc/ChangeLog | 370 + gcc/DATESTAMP | 2 +- gcc/Makefile.in | 2 +- gcc/ada/ChangeLog | 17 + gcc/ada/exp_ch11.adb | 7 +- gcc/ada/exp_ch9.adb | 2 +- gcc/ada/libgnat/s-regpat.ads | 2 +- gcc/ada/par-ch4.adb | 2 +- gcc/ada/sem_ch4.adb | 4 +- gcc/ada/set_targ.adb | 2 +- gcc/ada/types.ads | 2 +- gcc/alias.c | 12 +- gcc/builtins.c | 2 +- gcc/calls.c | 4 +- gcc/cgraph.c | 4 +- gcc/cgraph.h | 16 +- gcc/cgraphclones.c | 2 +- gcc/cgraphunit.c | 2 +- gcc/combine-stack-adj.c | 2 +- gcc/combine.c | 2 +- gcc/common/config/i386/i386-common.c | 2 +- gcc/config.gcc | 2 +- gcc/config/aarch64/aarch64-arches.def | 1 + gcc/config/aarch64/aarch64-bti-insert.c | 235 + gcc/config/aarch64/aarch64-option-extensions.def | 15 + gcc/config/aarch64/aarch64-passes.def | 1 + gcc/config/aarch64/aarch64-protos.h | 2 + gcc/config/aarch64/aarch64.c | 111 +- gcc/config/aarch64/aarch64.h | 23 +- gcc/config/aarch64/aarch64.md | 36 + gcc/config/aarch64/aarch64.opt | 3 + gcc/config/aarch64/t-aarch64 | 9 + gcc/config/alpha/sync.md | 2 +- gcc/config/arc/arc.c | 2 +- gcc/config/arc/predicates.md | 2 +- gcc/config/arm/arm-c.c | 2 +- gcc/config/arm/arm.c | 10 +- gcc/config/arm/arm.h | 6 +- gcc/config/arm/arm.md | 4 +- gcc/config/arm/cortex-r4f.md | 2 +- gcc/config/csky/csky.c | 2 +- gcc/config/csky/csky.h | 2 +- gcc/config/darwin-f.c | 2 +- gcc/config/epiphany/epiphany.md | 2 +- gcc/config/i386/i386-protos.h | 2 + gcc/config/i386/i386.c | 63 +- gcc/config/i386/i386.md | 21 + gcc/config/i386/sol2.h | 2 +- gcc/config/i386/sse.md | 14 + gcc/config/m68k/m68k.c | 2 +- gcc/config/mcore/mcore.h | 2 +- gcc/config/microblaze/microblaze.md | 12 +- gcc/config/mips/20kc.md | 2 +- gcc/config/mips/sb1.md | 6 +- gcc/config/nds32/nds32.c | 4 +- gcc/config/nds32/predicates.md | 4 +- gcc/config/pa/pa.c | 10 +- gcc/config/rs6000/e300c2c3.md | 4 +- gcc/config/rs6000/rs6000.c | 4 +- gcc/config/s390/s390.h | 2 +- gcc/config/sh/sh.c | 2 +- gcc/config/sh/sh.md | 2 +- gcc/config/sparc/sparc.c | 93 +- gcc/config/sparc/sparc.md | 687 +- gcc/config/spu/vmx2spu.h | 4 +- gcc/configure | 28 + gcc/configure.ac | 23 + gcc/cp/ChangeLog | 8 + gcc/cp/cp-tree.h | 2 +- gcc/cp/parser.c | 2 +- gcc/cp/pt.c | 4 +- gcc/cprop.c | 2 +- gcc/d/dmd/MERGE | 2 +- gcc/d/dmd/access.c | 2 +- gcc/d/dmd/aggregate.h | 2 +- gcc/d/dmd/aliasthis.c | 2 +- gcc/d/dmd/aliasthis.h | 2 +- gcc/d/dmd/apply.c | 2 +- gcc/d/dmd/argtypes.c | 2 +- gcc/d/dmd/arrayop.c | 2 +- gcc/d/dmd/arraytypes.h | 2 +- gcc/d/dmd/attrib.c | 2 +- gcc/d/dmd/attrib.h | 2 +- gcc/d/dmd/blockexit.c | 2 +- gcc/d/dmd/canthrow.c | 2 +- gcc/d/dmd/clone.c | 2 +- gcc/d/dmd/compiler.h | 2 +- gcc/d/dmd/complex_t.h | 2 +- gcc/d/dmd/cond.c | 2 +- gcc/d/dmd/cond.h | 2 +- gcc/d/dmd/constfold.c | 2 +- gcc/d/dmd/cppmangle.c | 2 +- gcc/d/dmd/ctfe.h | 2 +- gcc/d/dmd/ctfeexpr.c | 2 +- gcc/d/dmd/dcast.c | 2 +- gcc/d/dmd/dclass.c | 2 +- gcc/d/dmd/declaration.c | 2 +- gcc/d/dmd/declaration.h | 2 +- gcc/d/dmd/delegatize.c | 2 +- gcc/d/dmd/denum.c | 2 +- gcc/d/dmd/dimport.c | 2 +- gcc/d/dmd/dinterpret.c | 2 +- gcc/d/dmd/dmacro.c | 2 +- gcc/d/dmd/dmangle.c | 2 +- gcc/d/dmd/dmodule.c | 2 +- gcc/d/dmd/doc.c | 2 +- gcc/d/dmd/doc.h | 2 +- gcc/d/dmd/dscope.c | 2 +- gcc/d/dmd/dstruct.c | 2 +- gcc/d/dmd/dsymbol.c | 2 +- gcc/d/dmd/dsymbol.h | 2 +- gcc/d/dmd/dtemplate.c | 2 +- gcc/d/dmd/dversion.c | 2 +- gcc/d/dmd/entity.c | 2 +- gcc/d/dmd/enum.h | 2 +- gcc/d/dmd/errors.h | 2 +- gcc/d/dmd/escape.c | 2 +- gcc/d/dmd/expression.c | 2 +- gcc/d/dmd/expression.h | 2 +- gcc/d/dmd/expressionsem.c | 2 +- gcc/d/dmd/func.c | 2 +- gcc/d/dmd/globals.h | 2 +- gcc/d/dmd/hdrgen.c | 2 +- gcc/d/dmd/hdrgen.h | 2 +- gcc/d/dmd/iasm.c | 2 +- gcc/d/dmd/iasmgcc.c | 2 +- gcc/d/dmd/identifier.c | 2 +- gcc/d/dmd/identifier.h | 2 +- gcc/d/dmd/idgen.c | 2 +- gcc/d/dmd/impcnvgen.c | 2 +- gcc/d/dmd/imphint.c | 2 +- gcc/d/dmd/import.h | 2 +- gcc/d/dmd/init.c | 2 +- gcc/d/dmd/init.h | 2 +- gcc/d/dmd/initsem.c | 2 +- gcc/d/dmd/intrange.c | 2 +- gcc/d/dmd/intrange.h | 2 +- gcc/d/dmd/json.c | 2 +- gcc/d/dmd/json.h | 2 +- gcc/d/dmd/lexer.c | 2 +- gcc/d/dmd/lexer.h | 2 +- gcc/d/dmd/macro.h | 2 +- gcc/d/dmd/mangle.h | 2 +- gcc/d/dmd/mars.h | 2 +- gcc/d/dmd/module.h | 2 +- gcc/d/dmd/mtype.c | 2 +- gcc/d/dmd/mtype.h | 2 +- gcc/d/dmd/nogc.c | 2 +- gcc/d/dmd/nspace.c | 2 +- gcc/d/dmd/nspace.h | 2 +- gcc/d/dmd/objc.c | 2 +- gcc/d/dmd/objc.h | 2 +- gcc/d/dmd/opover.c | 2 +- gcc/d/dmd/optimize.c | 2 +- gcc/d/dmd/parse.c | 2 +- gcc/d/dmd/parse.h | 2 +- gcc/d/dmd/root/aav.c | 2 +- gcc/d/dmd/root/aav.h | 2 +- gcc/d/dmd/root/array.h | 2 +- gcc/d/dmd/root/checkedint.c | 2 +- gcc/d/dmd/root/checkedint.h | 2 +- gcc/d/dmd/root/ctfloat.h | 2 +- gcc/d/dmd/root/dcompat.h | 2 +- gcc/d/dmd/root/file.c | 2 +- gcc/d/dmd/root/file.h | 2 +- gcc/d/dmd/root/filename.c | 2 +- gcc/d/dmd/root/filename.h | 2 +- gcc/d/dmd/root/hash.h | 2 +- gcc/d/dmd/root/object.h | 2 +- gcc/d/dmd/root/outbuffer.c | 2 +- gcc/d/dmd/root/outbuffer.h | 2 +- gcc/d/dmd/root/port.h | 2 +- gcc/d/dmd/root/rmem.c | 2 +- gcc/d/dmd/root/rmem.h | 2 +- gcc/d/dmd/root/root.h | 2 +- gcc/d/dmd/root/rootobject.c | 2 +- gcc/d/dmd/root/speller.c | 2 +- gcc/d/dmd/root/speller.h | 2 +- gcc/d/dmd/root/stringtable.c | 2 +- gcc/d/dmd/root/stringtable.h | 2 +- gcc/d/dmd/safe.c | 2 +- gcc/d/dmd/sapply.c | 2 +- gcc/d/dmd/scope.h | 2 +- gcc/d/dmd/sideeffect.c | 2 +- gcc/d/dmd/statement.c | 2 +- gcc/d/dmd/statement.h | 2 +- gcc/d/dmd/statementsem.c | 2 +- gcc/d/dmd/staticassert.c | 2 +- gcc/d/dmd/staticassert.h | 2 +- gcc/d/dmd/staticcond.c | 2 +- gcc/d/dmd/target.h | 2 +- gcc/d/dmd/template.h | 2 +- gcc/d/dmd/tokens.c | 2 +- gcc/d/dmd/tokens.h | 2 +- gcc/d/dmd/traits.c | 2 +- gcc/d/dmd/typesem.c | 2 +- gcc/d/dmd/utf.c | 2 +- gcc/d/dmd/utf.h | 2 +- gcc/d/dmd/utils.c | 2 +- gcc/d/dmd/version.h | 2 +- gcc/d/dmd/visitor.h | 2 +- gcc/dbxout.c | 2 +- gcc/df-scan.c | 2 +- gcc/doc/cfg.texi | 2 +- gcc/doc/extend.texi | 2 +- gcc/doc/fragments.texi | 2 +- gcc/doc/gty.texi | 2 +- gcc/doc/install.texi | 10 + gcc/doc/invoke.texi | 35 +- gcc/doc/lto.texi | 2 +- gcc/doc/md.texi | 16 +- gcc/doc/objc.texi | 2 +- gcc/doc/rtl.texi | 4 +- gcc/doc/tm.texi | 2 +- gcc/dse.c | 2 +- gcc/emit-rtl.c | 2 +- gcc/emit-rtl.h | 2 +- gcc/except.c | 2 +- gcc/expmed.c | 2 +- gcc/expr.c | 10 +- gcc/fold-const.c | 4 +- gcc/fortran/ChangeLog | 36 + gcc/fortran/class.c | 2 +- gcc/fortran/decl.c | 6 +- gcc/fortran/expr.c | 22 +- gcc/fortran/gfc-internals.texi | 2 +- gcc/fortran/intrinsic.texi | 4 +- gcc/fortran/invoke.texi | 2 +- gcc/fortran/io.c | 2 +- gcc/fortran/match.c | 2 +- gcc/fortran/parse.c | 4 +- gcc/fortran/primary.c | 4 +- gcc/fortran/resolve.c | 10 +- gcc/fortran/simplify.c | 3 +- gcc/fortran/symbol.c | 2 +- gcc/fortran/trans-array.c | 2 +- gcc/fortran/trans-decl.c | 2 +- gcc/fortran/trans-intrinsic.c | 2 +- gcc/fortran/trans-stmt.c | 4 +- gcc/genautomata.c | 8 +- gcc/gimple-fold.c | 8 +- gcc/gimple-ssa-evrp-analyze.c | 4 +- gcc/go/ChangeLog | 14 + gcc/go/go-backend.c | 2 +- gcc/go/go-gcc.cc | 10 +- gcc/hard-reg-set.h | 2 +- gcc/ifcvt.c | 8 +- gcc/ipa-comdats.c | 6 +- gcc/ipa-cp.c | 2 +- gcc/ipa-devirt.c | 16 +- gcc/ipa-fnsummary.c | 8 +- gcc/ipa-icf.c | 34 +- gcc/ipa-inline-transform.c | 2 +- gcc/ipa-inline.c | 4 +- gcc/ipa-polymorphic-call.c | 20 +- gcc/ipa-profile.c | 2 +- gcc/ipa-prop.c | 10 +- gcc/ipa-pure-const.c | 10 +- gcc/ipa-reference.c | 4 +- gcc/ipa-split.c | 12 +- gcc/ipa-visibility.c | 18 +- gcc/ipa.c | 2 +- gcc/ira-build.c | 12 +- gcc/ira-color.c | 4 +- gcc/ira-conflicts.c | 4 +- gcc/ira-costs.c | 4 +- gcc/ira-int.h | 8 +- gcc/ira-lives.c | 2 +- gcc/ira.c | 10 +- gcc/ira.h | 2 +- gcc/loop-invariant.c | 4 +- gcc/loop-unroll.c | 2 +- gcc/lower-subreg.c | 6 +- gcc/lra-assigns.c | 8 +- gcc/lra-constraints.c | 30 +- gcc/lra-eliminations.c | 4 +- gcc/lra-lives.c | 2 +- gcc/lra-remat.c | 14 +- gcc/lra-spills.c | 2 +- gcc/lra.c | 4 +- gcc/lto-cgraph.c | 2 +- gcc/lto-streamer-out.c | 2 +- gcc/lto/ChangeLog | 8 + gcc/lto/lto-partition.c | 6 +- gcc/lto/lto-symtab.c | 2 +- gcc/lto/lto.c | 2 +- gcc/objc/ChangeLog | 6 + gcc/objc/objc-act.c | 20 +- gcc/po/ChangeLog | 6 + gcc/po/gcc.pot | 38108 ++++++++++--------- gcc/postreload-gcse.c | 2 +- gcc/predict.c | 6 +- gcc/profile-count.h | 8 +- gcc/profile.c | 2 +- gcc/recog.c | 2 +- gcc/ree.c | 2 +- gcc/reload.c | 4 +- gcc/reload1.c | 10 +- gcc/reorg.c | 6 +- gcc/resource.c | 4 +- gcc/rtl.def | 14 +- gcc/rtl.h | 2 +- gcc/rtlanal.c | 2 +- gcc/sched-deps.c | 4 +- gcc/sched-ebb.c | 2 +- gcc/sched-rgn.c | 2 +- gcc/sel-sched-ir.c | 2 +- gcc/sel-sched.c | 4 +- gcc/shrink-wrap.c | 4 +- gcc/simplify-rtx.c | 2 +- gcc/symtab.c | 18 +- gcc/target.def | 2 +- gcc/testsuite/ChangeLog | 74 + gcc/testsuite/g++.dg/lto/odr-1_1.C | 2 +- gcc/testsuite/gcc.target/aarch64/bti-1.c | 62 + gcc/testsuite/gcc.target/aarch64/bti-2.c | 36 + gcc/testsuite/gcc.target/aarch64/bti-3.c | 52 + gcc/testsuite/gcc.target/aarch64/test_frame_17.c | 15 +- gcc/testsuite/gcc.target/i386/xorsign.c | 57 + gcc/testsuite/gcc.target/sparc/tls-ld-int16.c | 34 + gcc/testsuite/gcc.target/sparc/tls-ld-int32.c | 36 + gcc/testsuite/gcc.target/sparc/tls-ld-int64.c | 24 + gcc/testsuite/gcc.target/sparc/tls-ld-int8.c | 39 + gcc/testsuite/gcc.target/sparc/tls-ld-uint16.c | 33 + gcc/testsuite/gcc.target/sparc/tls-ld-uint32.c | 36 + gcc/testsuite/gcc.target/sparc/tls-ld-uint8.c | 38 + gcc/testsuite/gfortran.dg/common_15.f90 | 2 +- gcc/testsuite/gfortran.dg/derived_result_2.f90 | 4 +- gcc/testsuite/gfortran.dg/do_check_6.f90 | 4 +- gcc/testsuite/gfortran.dg/namelist_args.f90 | 6 +- gcc/testsuite/gfortran.dg/negative_unit_check.f90 | 4 +- gcc/testsuite/gfortran.dg/pr88376.f90 | 8 + gcc/testsuite/gfortran.dg/pure_formal_3.f90 | 2 +- gcc/testsuite/gfortran.dg/spread_simplify_1.f90 | 16 + gcc/testsuite/lib/target-supports.exp | 24 +- .../obj-c++.dg/attributes/method-attribute-2.mm | 2 +- gcc/testsuite/obj-c++.dg/exceptions-3.mm | 6 +- gcc/testsuite/obj-c++.dg/exceptions-4.mm | 2 +- gcc/testsuite/obj-c++.dg/exceptions-5.mm | 6 +- .../obj-c++.dg/property/at-property-23.mm | 4 +- gcc/testsuite/obj-c++.dg/property/dotsyntax-17.mm | 10 +- .../obj-c++.dg/property/property-neg-7.mm | 8 +- .../objc.dg/attributes/method-attribute-2.m | 2 +- gcc/testsuite/objc.dg/exceptions-3.m | 6 +- gcc/testsuite/objc.dg/exceptions-4.m | 2 +- gcc/testsuite/objc.dg/exceptions-5.m | 6 +- gcc/testsuite/objc.dg/param-1.m | 4 +- gcc/testsuite/objc.dg/property/at-property-23.m | 6 +- gcc/testsuite/objc.dg/property/dotsyntax-17.m | 10 +- gcc/testsuite/objc.dg/property/property-neg-7.m | 8 +- gcc/toplev.c | 4 +- gcc/tree-call-cdce.c | 2 +- gcc/tree-cfg.c | 4 +- gcc/tree-complex.c | 2 +- gcc/tree-core.h | 2 +- gcc/tree-eh.c | 2 +- gcc/tree-inline.c | 8 +- gcc/tree-loop-distribution.c | 4 +- gcc/tree-nrv.c | 2 +- gcc/tree-profile.c | 2 +- gcc/tree-sra.c | 2 +- gcc/tree-ssa-alias.c | 2 +- gcc/tree-ssa-dce.c | 2 +- gcc/tree-ssa-dom.c | 6 +- gcc/tree-ssa-forwprop.c | 2 +- gcc/tree-ssa-loop-im.c | 2 +- gcc/tree-ssa-loop-ivcanon.c | 6 +- gcc/tree-ssa-loop-ivopts.c | 2 +- gcc/tree-ssa-loop-niter.c | 2 +- gcc/tree-ssa-phionlycprop.c | 2 +- gcc/tree-ssa-phiopt.c | 4 +- gcc/tree-ssa-propagate.c | 2 +- gcc/tree-ssa-threadedge.c | 8 +- gcc/tree-ssa-threadupdate.c | 2 +- gcc/tree-ssa-uninit.c | 12 +- gcc/tree-ssanames.c | 2 +- gcc/tree-streamer-out.c | 2 +- gcc/tree.c | 6 +- gcc/tree.h | 2 +- gcc/vr-values.c | 2 +- include/ChangeLog | 7 + include/libiberty.h | 4 +- include/plugin-api.h | 2 +- libbacktrace/ChangeLog | 6 + libbacktrace/backtrace.h | 2 +- libgcc/ChangeLog | 12 + libgcc/config/c6x/libunwind.S | 2 +- libgcc/config/tilepro/atomic.h | 2 +- libgcc/config/vxlib-tls.c | 2 +- libgcc/generic-morestack-thread.c | 2 +- libgcc/generic-morestack.c | 2 +- libgcc/mkmap-symver.awk | 2 +- libgfortran/ChangeLog | 7 + libgfortran/caf/single.c | 16 +- libgfortran/io/unit.c | 2 +- libiberty/ChangeLog | 8 + libiberty/cp-demangle.c | 4 +- libiberty/floatformat.c | 2 +- libiberty/strerror.c | 2 +- libobjc/ChangeLog | 14 + libobjc/class.c | 2 +- libobjc/objc/runtime.h | 12 +- libobjc/sendmsg.c | 2 +- liboffloadmic/ChangeLog | 8 + .../include/coi/common/COIResult_common.h | 2 +- .../include/coi/source/COIBuffer_source.h | 2 +- libphobos/src/MERGE | 4 + libphobos/src/std/array.d | 6 +- libphobos/src/std/conv.d | 32 +- libphobos/src/std/datetime/date.d | 223 +- libphobos/src/std/datetime/stopwatch.d | 5 +- libphobos/src/std/datetime/systime.d | 259 - libphobos/src/std/datetime/timezone.d | 856 - libphobos/src/std/internal/windows/advapi32.d | 3 +- libphobos/src/std/json.d | 8 - libphobos/src/std/process.d | 3 +- libphobos/src/std/range/primitives.d | 67 +- libphobos/src/std/socket.d | 8 +- libphobos/src/std/string.d | 96 +- libphobos/src/std/utf.d | 16 - libstdc++-v3/ChangeLog | 7 + libstdc++-v3/include/ext/bitmap_allocator.h | 4 +- 423 files changed, 22625 insertions(+), 20911 deletions(-) create mode 100644 gcc/config/aarch64/aarch64-bti-insert.c create mode 100644 gcc/testsuite/gcc.target/aarch64/bti-1.c create mode 100644 gcc/testsuite/gcc.target/aarch64/bti-2.c create mode 100644 gcc/testsuite/gcc.target/aarch64/bti-3.c create mode 100644 gcc/testsuite/gcc.target/i386/xorsign.c create mode 100644 gcc/testsuite/gcc.target/sparc/tls-ld-int16.c create mode 100644 gcc/testsuite/gcc.target/sparc/tls-ld-int32.c create mode 100644 gcc/testsuite/gcc.target/sparc/tls-ld-int64.c create mode 100644 gcc/testsuite/gcc.target/sparc/tls-ld-int8.c create mode 100644 gcc/testsuite/gcc.target/sparc/tls-ld-uint16.c create mode 100644 gcc/testsuite/gcc.target/sparc/tls-ld-uint32.c create mode 100644 gcc/testsuite/gcc.target/sparc/tls-ld-uint8.c create mode 100644 gcc/testsuite/gfortran.dg/pr88376.f90 create mode 100644 gcc/testsuite/gfortran.dg/spread_simplify_1.f90 create mode 100644 libphobos/src/MERGE